summaryrefslogtreecommitdiffstats
path: root/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'index.html')
-rw-r--r--index.html1092
1 files changed, 497 insertions, 595 deletions
diff --git a/index.html b/index.html
index c099dc6..b0aa589 100644
--- a/index.html
+++ b/index.html
@@ -1,595 +1,497 @@
1<?xml version="1.0" encoding="utf-8" ?> 1
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 3<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
4 <head> 4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
6 <meta name="verify-v1" content="pZNmf5XyUUfAPdlSPbFSavMUsLgVsmBYOXzOhbIy2gw=" /> 6 <meta name="verify-v1" content="pZNmf5XyUUfAPdlSPbFSavMUsLgVsmBYOXzOhbIy2gw=" />
7 <link rel="stylesheet" type="text/css" href="inc/format.css"/> 7 <link rel="stylesheet" type="text/css" href="inc/format.css"/>
8 <title>LITMUS RT: Linux Testbed for Multiprocessor Scheduling in Real-Time Systems</title> 8 <title>LITMUS RT: Linux Testbed for Multiprocessor Scheduling in Real-Time Systems</title>
9 </head> 9 </head>
10 <body> 10 <body>
11 <div class="logobox"> 11 <div class="logobox">
12 <img src="inc/litmusrt.png" alt="LITMUS^RT: Linux Testbed for Multiprocessor Scheduling in Real-Time Systems" /> 12 <img src="inc/litmusrt.png" alt="LITMUS^RT: Linux Testbed for Multiprocessor Scheduling in Real-Time Systems" />
13 <p class="authors"> 13 <p class="authors">
14 <a href="http://www.cs.unc.edu/~anderson/">Dr. James H. Anderson &amp; 14 <a href="http://www.cs.unc.edu/~anderson/">Dr. James H. Anderson &amp;
15 Students</a>, 15 Students</a>,
16 <a href="http://www.unc.edu">The University of North Carolina at Chapel Hill</a> 16 <a href="http://www.unc.edu">The University of North Carolina at Chapel Hill</a>
17 </p> 17 </p>
18 18
19 </div> 19 </div>
20 20
21 <div class="nav"> 21 <div class="nav">
22 <p> 22 <p>
23 <a href="#about">about</a> - 23 <a href="#about">about</a> -
24 <a href="#support">support</a> - 24 <a href="#support">support</a> -
25 <a href="#collaborators">collaborators</a> - 25 <a href="#collaborators">collaborators</a> -
26 <a href="#publications">publications</a> - 26 <a href="#publications">publications</a> -
27 <a href="#download">download</a> - 27 <a href="#download">download</a> -
28 <a href="#install">installation</a> - 28 <a href="#install">installation</a> -
29 <a href="#doc">documentation</a> 29 <a href="#doc">documentation</a>
30 </p> 30 </p>
31 </div> 31 </div>
32 32
33 <h2 id="about">About</h2> 33 <h2 id="about">About</h2>
34 <div class="box"> 34 <div class="box">
35 <p class="nomargin"> 35 <p class="nomargin">
36 The LITMUS<sup>RT</sup> project is a soft real-time extension of the Linux 36 The LITMUS<sup>RT</sup> project is a soft real-time extension of the Linux
37 kernel with focus on multiprocessor real-time scheduling and 37 kernel with focus on multiprocessor real-time scheduling and
38 synchronization. The Linux kernel is modified 38 synchronization. The Linux kernel is modified
39 to support the sporadic task 39 to support the sporadic task
40 model and modular scheduler plugins. Both partitioned and global scheduling 40 model and modular scheduler plugins. Both partitioned and global scheduling
41 is supported. 41 is supported.
42 </p> 42 </p>
43 <h3>Goals</h3> 43 <h3>Goals</h3>
44 <p class="notopmargin"> 44 <p class="notopmargin">
45 The primary purpose of the LITMUS<sup>RT</sup> project is to <strong>provide a useful experimental platform for applied real-time systems research</strong>. In that regard, LITMUS<sup>RT</sup> provides abstractions and interfaces within the kernel that simplify the prototyping of multiprocessor real-time scheduling and synchronization algorithms (compared to modifying a "vanilla" Linux kernel). As a secondary goal, LITMUS<sup>RT</sup> serves as a <strong>proof of concept</strong>, showing that algorithms such as PFAIR can be implemented on current hardware. Finally, we hope that parts of LITMUS<sup>RT</sup> and the "lessons learned" may find value as blueprints/sources of inspiration for other (both commercial and open source) implementation efforts. 45 The primary purpose of the LITMUS<sup>RT</sup> project is to <strong>provide a useful experimental platform for applied real-time systems research</strong>. In that regard, LITMUS<sup>RT</sup> provides abstractions and interfaces within the kernel that simplify the prototyping of multiprocessor real-time scheduling and synchronization algorithms (compared to modifying a "vanilla" Linux kernel). As a secondary goal, LITMUS<sup>RT</sup> serves as a <strong>proof of concept</strong>, showing that algorithms such as PFAIR can be implemented on current hardware. Finally, we hope that parts of LITMUS<sup>RT</sup> and the "lessons learned" may find value as blueprints/sources of inspiration for other (both commercial and open source) implementation efforts.
46 </p> 46 </p>
47 <h3>Non-Goals</h3> 47 <h3>Non-Goals</h3>
48 <p class="notopmargin"> 48 <p class="notopmargin">
49 LITMUS<sup>RT</sup> is not a production-quality system, and we have currently no plans to turn it into one. LITMUS<sup>RT</sup> is not "stable," <em>i.e.</em>, interfaces and implementations may change without warning between releases. POSIX-compliance is not a goal; the LITMUS<sup>RT</sup>-API offers alternate system call interfaces. While we aim to follow Linux-coding guidelines, LITMUS<sup>RT</sup> is not targeted at being merged into mainline Linux. Rather, we hope that some of the ideas protoyped in LITMUS<sup>RT</sup> may eventually find adoption in Linux. 49 LITMUS<sup>RT</sup> is not a production-quality system, and we have currently no plans to turn it into one. LITMUS<sup>RT</sup> is not "stable," <em>i.e.</em>, interfaces and implementations may change without warning between releases. POSIX-compliance is not a goal; the LITMUS<sup>RT</sup>-API offers alternate system call interfaces. While we aim to follow Linux-coding guidelines, LITMUS<sup>RT</sup> is not targeted at being merged into mainline Linux. Rather, we hope that some of the ideas protoyped in LITMUS<sup>RT</sup> may eventually find adoption in Linux.
50 </p> 50 </p>
51 <h3>Current Version</h3> 51 <h3>Current Version</h3>
52 <p class="notopmargin"> 52 <p class="notopmargin">
53 The current version of LITMUS<sup>RT</sup> is <strong>2008.3</strong> and is based on Linux&nbsp;2.6.24. 53 The current version of LITMUS<sup>RT</sup> is <strong>2010.1</strong> and is based on Linux&nbsp;2.6.32.
54 It was released on 09/24/2009 and includes plugins for the following 54 It was released on 05/12/2010 and includes plugins for the following
55 scheduling policies: 55 scheduling policies:
56 </p> 56 </p>
57 <ul> 57 <ul>
58 <li> Partitioned EDF with synchronization support (PSN-EDF)</li> 58 <li> Partitioned EDF with synchronization support (PSN-EDF)</li>
59 <li> Global EDF with synchronization support (GSN-EDF)</li> 59 <li> Global EDF with synchronization support (GSN-EDF)</li>
60 <li> Clustered EDF (C-EDF) </li> 60 <li> Clustered EDF (C-EDF) </li>
61 <li> PFAIR (both staggered and aligned quanta are supported)</li> 61 <li> PFAIR (both staggered and aligned quanta are supported)</li>
62 </ul> 62 </ul>
63 <p> 63 <p>
64 Please refer to the <a href="#download">download</a> and <a href="#install">installation</a> sections for details. 64 Please refer to the <a href="#download">download</a> and <a href="#install">installation</a> sections for details.
65 </p> 65 </p>
66 <p>Earlier versions (2007.1 &mdash; 2007.3), which are based on Linux&nbsp;2.6.20 66 <p>Earlier versions (2008.1 &mdash 2008.3),based on Linux &nbsp;2.6.24 and (2007.1 &mdash; 2007.3), based on Linux&nbsp;2.6.20
67 and support additional scheduling policies, are discussed 67 ,support additional scheduling policies, are discussed on separate pages dedicated to the <a href="litmus2007.html">LITMUS<sup>RT</sup> 2008</a> and <a href="litmus2007.html">LITMUS<sup>RT</sup> 2007 </a> series respectively.
68 on a separate page dedicated to the <a href="litmus2007.html">LITMUS<sup>RT</sup> 2007 series</a>. 68 </p>
69 </p> 69 <p class="nobottommargin">
70 <p class="nobottommargin"> 70 The first version of LITMUS<sup>RT</sup>, which was implemented in Spring 2006,
71 The first version of LITMUS<sup>RT</sup>, which was implemented in Spring 2006, 71 is based on Linux&nbsp;2.6.9.
72 is based on Linux&nbsp;2.6.9. 72 </p>
73 </p> 73 <h3> Development Plans </h3>
74 <h3>Development Plans</h3> 74 There are plans to port LITMUS<sup>RT</sup> to PowerPC and ARM platforms. Please contact us for details.
75 <p class="nomargin"> 75 </div>
76 Re-basing to the then-current Linux kernel version is scheduled for Spring 2010. There are plans to port LITMUS<sup>RT</sup> to PowerPC and ARM platforms. Please contact us for details. 76 <h2 id="support">Support</h2>
77 </p> 77 <div class="box">
78 </div> 78 <p class="nomargin">
79 79 The LITMUS<sup>RT</sup> development effort is being supported by grants from, SUN Corp.,
80 <h2 id="support">Support</h2> 80 Intel Corp., IBM Corp., The National Science Foundation (grant CCR 0615197), and The U.S.
81 <div class="box"> 81 Army Research Office (grant W911NF-06-1-0425).
82 <p class="nomargin"> 82 </p>
83 The LITMUS<sup>RT</sup> development effort is being supported by grants from, SUN Corp., 83 </div>
84 Intel Corp., IBM Corp., The National Science Foundation (grant CCR 0615197), and The U.S. 84
85 Army Research Office (grant W911NF-06-1-0425). 85 <h2 id="collaborators">Collaborators</h2>
86 </p> 86 <div class="box">
87 </div> 87 <p class="notopmargin"> The LITMUS<sup>RT</sup> project is led by <a
88 88 href="http://www.cs.unc.edu/~anderson/">Dr. James H. Anderson</a>.
89 <h2 id="collaborators">Collaborators</h2> 89 </p>
90 <div class="box"> 90 <p>
91 <p class="notopmargin"> The LITMUS<sup>RT</sup> project is led by <a 91 The implementation effort is carried out by students of the
92 href="http://www.cs.unc.edu/~anderson/">Dr. James H. Anderson</a>. 92 <a href="http://www.cs.unc.edu/~anderson/real-time/">Real-Time Systems
93 </p> 93 Group</a> at the <a href="http://www.unc.edu">University of North Carolina
94 <p> 94 at Chapel Hill</a>:
95 The implementation effort is carried out by students of the 95 </p>
96 <a href="http://www.cs.unc.edu/~anderson/real-time/">Real-Time Systems 96 <ul>
97 Group</a> at the <a href="http://www.unc.edu">University of North Carolina 97 <li>
98 at Chapel Hill</a>: 98 <a href="http://www.cs.unc.edu/~bbb/">Bj&ouml;rn B. Brandenburg</a> (current maintainer)
99 </p> 99 </li>
100 <ul> 100 <li> <a href="http://www.sprg.uniroma2.it/home/bastoni/">Andrea Bastoni</a> (Visiting researcher from University of Rome "Tor Vergata")
101 <li> 101 </li>
102 <a href="http://www.cs.unc.edu/~bbb/">Bj&ouml;rn B. Brandenburg</a> (current maintainer) 102 </ul>
103 </li> 103 <p class="nobottommargin">
104 <li> <a href="http://www.cs.unc.edu/~jmc/">John M. Calandrino</a> <em>(graduated July 2009)</em> 104 (Additional collaborators for <a href="litmus2008.html#collaborators">LITMUS<sup>RT</sup> 2008 series</a> and <a href="litmus2007.html#collaborators">LITMUS<sup>RT</sup> 2007 series</a> contributed to earlier versions of LITMUS<sup>RT</sup>.)
105 </li> 105 </p>
106 </ul> 106 </div>
107 <p class="nobottommargin"> 107
108 (<a href="litmus2007.html#collaborators">Additional collaborators</a> contributed to earlier versions of LITMUS<sup>RT</sup>.) 108
109 </p> 109 <h2 id="publications">Publications</h2>
110 </div> 110 <div class="box">
111 111<!--
112 112 <ol class="nomargin">
113 <h2 id="publications">Publications</h2> 113 <li><p>
114 <div class="box"> 114 B. Brandenburg and J. Anderson,
115 115 &#8220;On the Implementation of Global Real-Time
116 <ol class="nomargin"> 116 Schedulers&#8221;, <cite>Proceedings of the 30th IEEE Real-Time Systems Symposium</cite>, pp.&nbsp;214-224, December 2009.
117 <li><p> 117 <a href="http://www.cs.unc.edu/~anderson/papers/rtss09a.ps">Postscript</a>.
118 B. Brandenburg and J. Anderson, 118 <a href="http://www.cs.unc.edu/~anderson/papers/rtss09a.pdf">PDF</a>.
119 &#8220;On the Implementation of Global Real-Time 119 Longer version with all graphs:
120 Schedulers&#8221;, <cite>Proceedings of the 30th IEEE Real-Time Systems Symposium</cite>, pp.&nbsp;214-224, December 2009. 120 <a href="http://www.cs.unc.edu/~anderson/papers/rtss09a_long.ps">Postscript</a>.
121 <a href="http://www.cs.unc.edu/~anderson/papers/rtss09a.ps">Postscript</a>. 121 <a href="http://www.cs.unc.edu/~anderson/papers/rtss09a_long.pdf">PDF</a>.
122 <a href="http://www.cs.unc.edu/~anderson/papers/rtss09a.pdf">PDF</a>. 122</p>
123 Longer version with all graphs: 123<p> For reference, all evaluated plugins are provided as part of the following patch (against version 2008.3).
124 <a href="http://www.cs.unc.edu/~anderson/papers/rtss09a_long.ps">Postscript</a>. 124</p>
125 <a href="http://www.cs.unc.edu/~anderson/papers/rtss09a_long.pdf">PDF</a>. 125 <ul>
126</p> 126 <li>
127<p> For reference, all evaluated plugins are provided as part of the following patch (against version 2008.3). 127 <a href="download/RTSS09/litmus-rt-RTSS09.patch">litmus-rt-RTSS09.patch</a>
128</p> 128 </li>
129 <ul> 129 </ul>
130 <li> 130
131 <a href="download/RTSS09/litmus-rt-RTSS09.patch">litmus-rt-RTSS09.patch</a> 131</li>
132 </li> 132 <li>
133 </ul> 133 <p>
134 134 B. Brandenburg and J. Anderson
135</li> 135 &ldquo;Reader-Writer Synchronization for Shared-Memory Multiprocessor Real-Time Systems&rdquo;,
136 <li> 136 <cite>Proceedings of the 21st Euromicro Conference on Real-Time Systems</cite>, pp. 184-193, July 2009.
137 <p> 137 <a href="http://www.cs.unc.edu/~anderson/papers/ecrts09b.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/ecrts09b.pdf">PDF</a>.
138 B. Brandenburg and J. Anderson 138 Long version with blocking terms:
139 &ldquo;Reader-Writer Synchronization for Shared-Memory Multiprocessor Real-Time Systems&rdquo;, 139 <a href="http://www.cs.unc.edu/~anderson/papers/ecrts09b-long.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/ecrts09b-long.pdf">PDF</a>.
140 <cite>Proceedings of the 21st Euromicro Conference on Real-Time Systems</cite>, pp. 184-193, July 2009. 140 </p>
141 <a href="http://www.cs.unc.edu/~anderson/papers/ecrts09b.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/ecrts09b.pdf">PDF</a>. 141 </li>
142 Long version with blocking terms: 142
143 <a href="http://www.cs.unc.edu/~anderson/papers/ecrts09b-long.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/ecrts09b-long.pdf">PDF</a>. 143 <li>
144 </p> 144 <p>
145 </li> 145 J. Calandrino and J. Anderson
146 146 &ldquo;On the Design and Implementation of a Cache-Aware Multicore Real-Time Scheduler&rdquo;,
147 <li> 147 <cite>Proceedings of the 21st Euromicro Conference on Real-Time Systems</cite>, pp. 194-204, July 2009.
148 <p> 148 <a href="http://www.cs.unc.edu/~anderson/papers/ecrts09c.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/ecrts09c.pdf">PDF</a>.
149 J. Calandrino and J. Anderson 149 </p>
150 &ldquo;On the Design and Implementation of a Cache-Aware Multicore Real-Time Scheduler&rdquo;, 150 </li>
151 <cite>Proceedings of the 21st Euromicro Conference on Real-Time Systems</cite>, pp. 194-204, July 2009. 151
152 <a href="http://www.cs.unc.edu/~anderson/papers/ecrts09c.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/ecrts09c.pdf">PDF</a>. 152 <li>
153 </p> 153 <p>
154 </li> 154 M. Mollison, B. Brandenburg, and J. Anderson
155 155 &ldquo;Towards Unit Testing Real-Time Schedulers in LITMUS<sup>RT</sup>&rdquo;,
156 <li> 156 <cite>Proceedings of the Fifth International Workshop on Operating Systems Platforms for Embedded Real-Time Applications</cite>, pp. 33-39, July 2009.
157 <p> 157 <a href="http://www.cs.unc.edu/~anderson/papers/ospert09.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/ospert09.pdf">PDF</a>.
158 M. Mollison, B. Brandenburg, and J. Anderson 158 </p>
159 &ldquo;Towards Unit Testing Real-Time Schedulers in LITMUS<sup>RT</sup>&rdquo;, 159 </li>
160 <cite>Proceedings of the Fifth International Workshop on Operating Systems Platforms for Embedded Real-Time Applications</cite>, pp. 33-39, July 2009. 160
161 <a href="http://www.cs.unc.edu/~anderson/papers/ospert09.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/ospert09.pdf">PDF</a>. 161 <li>
162 </p> 162 <p>
163 </li> 163 B. Brandenburg and J. Anderson,
164 164 &ldquo;A Comparison of the M-PCP, D-PCP, and FMLP on LITMUS<sup>RT</sup>&rdquo;,
165 <li> 165 <cite>Proceedings of the 12th International Conference on Principles of Distributed Systems</cite>, pp. 105-124, December 2008.
166 <p> 166 <a href="http://www.cs.unc.edu/~anderson/papers/opodis08.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/opodis08.pdf">PDF</a>.
167 B. Brandenburg and J. Anderson, 167 </p>
168 &ldquo;A Comparison of the M-PCP, D-PCP, and FMLP on LITMUS<sup>RT</sup>&rdquo;, 168 </li>
169 <cite>Proceedings of the 12th International Conference on Principles of Distributed Systems</cite>, pp. 105-124, December 2008. 169
170 <a href="http://www.cs.unc.edu/~anderson/papers/opodis08.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/opodis08.pdf">PDF</a>. 170 <li>
171 </p> 171 <p>
172 </li> 172 B. Brandenburg, J. Calandrino, and J. Anderson,
173 173 &ldquo;On the Scalability of Real-Time Scheduling Algorithms on Multicore Platforms: A Case Study&rdquo;,
174 <li> 174 <cite>Proceedings of the 29th IEEE Real-Time Systems Symposium</cite>,
175 <p> 175 pp. 157-169, December 2008.
176 B. Brandenburg, J. Calandrino, and J. Anderson, 176 <a href="http://www.cs.unc.edu/~anderson/papers/rtss08b.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/rtss08b.pdf">PDF</a>.
177 &ldquo;On the Scalability of Real-Time Scheduling Algorithms on Multicore Platforms: A Case Study&rdquo;, 177 </p>
178 <cite>Proceedings of the 29th IEEE Real-Time Systems Symposium</cite>, 178 </li>
179 pp. 157-169, December 2008. 179
180 <a href="http://www.cs.unc.edu/~anderson/papers/rtss08b.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/rtss08b.pdf">PDF</a>. 180 <li>
181 </p> 181 <p>
182 </li> 182 B. Brandenburg and J. Anderson,
183 183 &ldquo;An Implementation of the PCP, SRP, D-PCP, M-PCP,
184 <li> 184 and FMLP Real-Time Synchronization Protocols in LITMUS<sup>RT</sup>&rdquo;,
185 <p> 185 <cite>Proceedings of the 14th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications</cite>, pp. 185-194, August 2008.
186 B. Brandenburg and J. Anderson, 186 <a href="http://www.cs.unc.edu/~anderson/papers/rtcsa08.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/rtcsa08.pdf">PDF</a>.
187 &ldquo;An Implementation of the PCP, SRP, D-PCP, M-PCP, 187 </p>
188 and FMLP Real-Time Synchronization Protocols in LITMUS<sup>RT</sup>&rdquo;, 188 <p><strong>Note:</strong> The work described in this paper took part in a branch that is currently not part of
189 <cite>Proceedings of the 14th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications</cite>, pp. 185-194, August 2008. 189 the main distribution. For reference, we provide the branch as a separate download:
190 <a href="http://www.cs.unc.edu/~anderson/papers/rtcsa08.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/rtcsa08.pdf">PDF</a>. 190 </p>
191 </p> 191 <ul>
192 <p><strong>Note:</strong> The work described in this paper took part in a branch that is currently not part of 192 <li>
193 the main distribution. For reference, we provide the branch as a separate download: 193 <a href="download/RTCSA08/litmus-rt-RTCSA08.patch">litmus-rt-RTCSA08.patch</a>
194 </p> 194 </li>
195 <ul> 195 <li>
196 <li> 196 <a href="download/RTCSA08/liblitmus-RTCSA08.tgz">liblitmus-RTCSA08.tgz</a>
197 <a href="download/RTCSA08/litmus-rt-RTCSA08.patch">litmus-rt-RTCSA08.patch</a> 197 </li>
198 </li> 198 <li><a href="download/RTCSA08/SHA256SUMS">SHA256 check sums</a>
199 <li> 199 </li>
200 <a href="download/RTCSA08/liblitmus-RTCSA08.tgz">liblitmus-RTCSA08.tgz</a> 200 </ul>
201 </li> 201 <p>Please don't use this version for active development. If you are interested in this work, it would be best
202 <li><a href="download/RTCSA08/SHA256SUMS">SHA256 check sums</a> 202 to first port the desired features to a current version of LTIMUS<sup>RT</sup> and merge them into the main distribution.
203 </li> 203 </p>
204 </ul> 204
205 <p>Please don't use this version for active development. If you are interested in this work, it would be best 205 </li>
206 to first port the desired features to a current version of LTIMUS<sup>RT</sup> and merge them into the main distribution. 206
207 </p> 207 <li>
208 208 <p>
209 </li> 209 A. Block, B. Brandenburg, J. Anderson,
210 210 and S. Quint, &ldquo;An Adaptive Framework for Multiprocessor Real-Time Systems&rdquo;,
211 <li> 211 <cite>Proceedings of the 20th Euromicro Conference on Real-Time Systems</cite>, pp. 23-33, July 2008.
212 <p> 212 <a href="http://www.cs.unc.edu/~anderson/papers/ecrts08b.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/ecrts08b.pdf">PDF</a>.
213 A. Block, B. Brandenburg, J. Anderson, 213 </p>
214 and S. Quint, &ldquo;An Adaptive Framework for Multiprocessor Real-Time Systems&rdquo;, 214 </li>
215 <cite>Proceedings of the 20th Euromicro Conference on Real-Time Systems</cite>, pp. 23-33, July 2008. 215
216 <a href="http://www.cs.unc.edu/~anderson/papers/ecrts08b.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/ecrts08b.pdf">PDF</a>. 216 <li>
217 </p> 217 <p>
218 </li> 218 B. Brandenburg, J. Calandrino, A. Block,
219 219 H. Leontyev, and J. Anderson, &ldquo;Real-Time Synchronization
220 <li> 220 on Multiprocessors: To Block or Not to Block, to Suspend or
221 <p> 221 Spin?&rdquo;, <cite> Proceedings of the 14th IEEE Real-Time and Embedded
222 B. Brandenburg, J. Calandrino, A. Block, 222Technology and Applications Symposium</cite>, pp. 342-353, April 2008.
223 H. Leontyev, and J. Anderson, &ldquo;Real-Time Synchronization 223 <a href="http://www.cs.unc.edu/~anderson/papers/rtas08.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/rtas08.pdf">PDF</a>.
224 on Multiprocessors: To Block or Not to Block, to Suspend or 224 </p>
225 Spin?&rdquo;, <cite> Proceedings of the 14th IEEE Real-Time and Embedded 225 <p>
226Technology and Applications Symposium</cite>, pp. 342-353, April 2008. 226 Extended version, including all graphs:
227 <a href="http://www.cs.unc.edu/~anderson/papers/rtas08.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/rtas08.pdf">PDF</a>. 227 <a href="http://www.cs.unc.edu/~anderson/papers/rtas08along.ps">Postscript</a>,
228 </p> 228 <a href="http://www.cs.unc.edu/~anderson/papers/rtas08along.pdf">PDF</a>.
229 <p> 229 </p>
230 Extended version, including all graphs: 230 </li>
231 <a href="http://www.cs.unc.edu/~anderson/papers/rtas08along.ps">Postscript</a>, 231
232 <a href="http://www.cs.unc.edu/~anderson/papers/rtas08along.pdf">PDF</a>. 232 <li>
233 </p> 233 <p>
234 </li> 234 B. Brandenburg, A. Block, J. Calandrino, U. Devi, H. Leontyev, and J. Anderson,
235 235 &quot;LITMUS<sup>RT</sup>: A Status Report&quot;, <cite> Proceedings of the 9th
236 <li> 236 Real-Time Linux Workshop</cite>, pp. 107-123, November 2007.
237 <p> 237 <a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.ps">Postscript</a>.
238 B. Brandenburg, A. Block, J. Calandrino, U. Devi, H. Leontyev, and J. Anderson, 238 <a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.pdf">PDF</a>.
239 &quot;LITMUS<sup>RT</sup>: A Status Report&quot;, <cite> Proceedings of the 9th 239 </p>
240 Real-Time Linux Workshop</cite>, pp. 107-123, November 2007. 240 </li>
241 <a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.ps">Postscript</a>. 241
242 <a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.pdf">PDF</a>. 242 <li>
243 </p> 243 <p>
244 </li> 244 B. Brandenburg and J. Anderson, &quot;Integrating Hard/Soft Real-Time Tasks
245 245 and Best-Effort Jobs on Multiprocessors&quot;, <cite> Proceedings of the 19th Euromicro
246 <li> 246 Conference on Real-Time Systems</cite>, pp. 61-70, July 2007.
247 <p> 247 <a href="http://www.cs.unc.edu/~anderson/papers/ecrts07b.ps">Postscript</a>,
248 B. Brandenburg and J. Anderson, &quot;Integrating Hard/Soft Real-Time Tasks 248 <a href="http://www.cs.unc.edu/~anderson/papers/ecrts07b.pdf">PDF</a>.
249 and Best-Effort Jobs on Multiprocessors&quot;, <cite> Proceedings of the 19th Euromicro 249 </p>
250 Conference on Real-Time Systems</cite>, pp. 61-70, July 2007. 250 </li>
251 <a href="http://www.cs.unc.edu/~anderson/papers/ecrts07b.ps">Postscript</a>, 251
252 <a href="http://www.cs.unc.edu/~anderson/papers/ecrts07b.pdf">PDF</a>. 252
253 </p> 253 <li>
254 </li> 254 <p>
255 255 J. Calandrino, H. Leontyev, A. Block, U. Devi, and J. Anderson,
256 256 &quot;LITMUS<sup>RT</sup>: A Testbed for Empirically Comparing Real-Time
257 <li> 257 Multiprocessor Schedulers &quot;, <cite>Proceedings of the 27th IEEE Real-Time Systems
258 <p> 258 Symposium</cite>, pp. 111-123, December 2006.
259 J. Calandrino, H. Leontyev, A. Block, U. Devi, and J. Anderson, 259 <a href="http://www.cs.unc.edu/~anderson/papers/rtss06b.ps">Postscript</a>,
260 &quot;LITMUS<sup>RT</sup>: A Testbed for Empirically Comparing Real-Time 260 <a href="http://www.cs.unc.edu/~anderson/papers/rtss06b.pdf">PDF</a>.
261 Multiprocessor Schedulers &quot;, <cite>Proceedings of the 27th IEEE Real-Time Systems 261 </p>
262 Symposium</cite>, pp. 111-123, December 2006. 262 </li>
263 <a href="http://www.cs.unc.edu/~anderson/papers/rtss06b.ps">Postscript</a>, 263
264 <a href="http://www.cs.unc.edu/~anderson/papers/rtss06b.pdf">PDF</a>. 264 </ol> -->
265 </p> 265 </div>
266 </li> 266
267 267 <h2 id="download">Download</h2>
268 </ol> 268 <div class="box">
269 </div> 269 <p class="notopmargin">
270 270 The source code of LITMUS<sup>RT</sup> is made available as open source
271 <h2 id="download">Download</h2> 271 under the terms of the <a href="http://www.gnu.org/licenses/gpl.txt">GNU
272 <div class="box"> 272 General Public License (GPL)</a>.
273 <p class="notopmargin"> 273 </p>
274 The source code of LITMUS<sup>RT</sup> is made available as open source 274 <p>
275 under the terms of the <a href="http://www.gnu.org/licenses/gpl.txt">GNU 275 The current release of LITMUS<sup>RT</sup> is 2010.1.
276 General Public License (GPL)</a>. 276 It consists of our Linux kernel modifications in the form of
277 </p> 277 a patch against Linux 2.6.32 and
278 <p> 278
279 The current release of LITMUS<sup>RT</sup> is 2008.3. 279 <span class="src">liblitmus</span>, the user-space API for real-time
280 It consists of our Linux kernel modifications in the form of 280 tasks, as well as <span class="src">ft_tools</span>, a collection of tools
281 a patch against Linux 2.6.24 and 281 used for tracing with <a href="http://www.cs.unc.edu/~bbb/feathertrace/">Feather-Trace</a> (which is part of the LITMUS<sup>RT</sup> patch).
282 282 </p>
283 <span class="src">liblitmus</span>, the user-space API for real-time 283
284 tasks, as well as <span class="src">ft_tools</span>, a collection of tools 284 <h3 class="relname">LITMUS<sup>RT</sup> 2010.1</h3>
285 used for tracing with <a href="http://www.cs.unc.edu/~bbb/feather-trace/">Feather-Trace</a> (which is part of the LITMUS<sup>RT</sup> patch). 285 <div class="release">
286 </p> 286 <p>
287 287 Based on Linux 2.6.32. Released in May 2010.
288 <h3 class="relname">LITMUS<sup>RT</sup> 2008.3</h3> 288
289 <div class="release"> 289 </p>
290 <p> 290 <h4>Files:</h4>
291 Based on Linux 2.6.24. Released in September 2009. 291 <ul>
292 292 <li>
293 </p> 293 <a href="download/2010.1/litmus-rt-2010.1.patch">litmus-rt-2010.1.patch</a>
294 <h4>Files:</h4> 294 </li>
295 <ul> 295 <li>
296 <li> 296 <a href="download/2010.1/liblitmus-2010.1.tgz">liblitmus-2010.1.tgz</a>
297 <a href="download/2008.3/litmus-rt-2008.3.patch">litmus-rt-2008.3.patch</a> 297 </li>
298 </li> 298
299 <li> 299 <li><a href="download/2010.1/SHA256SUMS">SHA256 check sums</a>
300 <a href="download/2008.3/liblitmus-2008.3.tgz">liblitmus-2008.3.tgz</a> 300 </li>
301 </li> 301 </ul>
302 <li> 302 <h4>Major changes (since LITMUS<sup>RT</sup> 2008.3):</h4> TO BE UPDATED
303 <a href="download/2008.3/ft_tools-2008.3.tgz">ft_tools-2008.3.tgz</a> 303 <ul>
304 </li> 304 <li>
305 305 Changed codebase from Linux 2.6.24 to Linux 2.6.32
306 <li><a href="download/2008.3/SHA256SUMS">SHA256 check sums</a> 306 </li>
307 </li> 307 <li>Several bugfixes.</li>
308 </ul> 308 </div>
309 <h4>Major changes (since LITMUS<sup>RT</sup> 2008.2):</h4> 309
310 <ul> 310 <p>
311 <li> 311 Please note that the current implementation is a <em>prototype</em> with
312 <code>sys_null_call()</code>, a dummy system call that simplifies determining system call overheads. 312 certain limitations. Most notably, it is not secure in a multiuser context,
313 </li> 313 <em>i.e.</em>, real-time system calls do not require superuser
314 <li> 314 privileges.
315 Support for starting timers on remote CPUs via <code>hrtimer_start_on()</code>. 315 </p>
316 </li> 316
317 <li> 317 <p class="nobottommargin">
318 Support for dedicated release handling in GSN-EDF and a corresponding <code>/proc</code> interface. 318
319 </li> 319 Older releases: <a href="litmus2008.html">LITMUS<sup>RT</sup> 2008 series</a>, <a href="litmus2007.html">LITMUS<sup>RT</sup> 2007 series</a>.
320 <li> 320 </p>
321 Support for IPI latency tracing. 321
322 </li> 322 </div>
323 <li>Several bugfixes.</li> 323
324 <li>Switched to <a href="http://www.scons.org/">scons</a> as build system in libraries.</li> 324
325 <li>Support for cross compiling the libraries on x86-64 systems to i386 binaries (specify <code>ARCH=i386</code> in your environment).</li> 325
326 </ul> 326 <h2 id="install">Installation</h2>
327 <p> 327 <div class="box">
328 Please consult the <a href="doc/changes.html">Change Log</a> for further details. 328 <p class="notopmargin">
329 </p> 329 The current release of LITMUS<sup>RT</sup> consists of an
330 </div> 330 extension of the Linux kernel that adds support for the sporadic task
331 331 model, a scheduler plugin infrastructure, and some scheduler plugins, as
332 <h3 class="relname">LITMUS<sup>RT</sup> 2008.2</h3> 332 well as a user-space library that provides the LITMUS<sup>RT</sup>
333 <div class="release"> 333 real-time API. Note that the current implementation only works on the
334 <p> 334 Intel x86-32 and sparc64 architectures.
335 Based on Linux 2.6.24. Released in December 2008. 335 </p>
336 336 <h3>Patching the Kernel</h3>
337 </p> 337 <p class="notopmargin">
338 <h4>Files:</h4> 338 The extension to the Linux kernel is released as a patch against Linux
339 <ul> 339 2.6.32. To install the LITMUS<sup>RT</sup> kernel, first <a
340 <li> 340 href="http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.bz2">download the Linux
341 <a href="download/2008.2/litmus-rt-2008.2.patch">litmus-rt-2008.2.patch</a> 341 kernel 2.6.32</a> and untar it in a directory of your choice (hereafter
342 </li> 342 referred to as <span class="src">$DIR</span>). Second, apply the
343 <li> 343 LITMUS<sup>RT</sup> patch (see <a href="#download">Section Download</a>)
344 <a href="download/2008.2/liblitmus-2008.2.tgz">liblitmus-2008.2.tgz</a> 344 and configure, compile, and install the kernel as usual. The patch is <span
345 </li> 345 class="src">-p1</span> applicable.
346 <li> 346 To summarize, the LITMUS<sup>RT</sup> kernel can be obtained, patched, and
347 <a href="download/2008.2/ft_tools-2008.2.tgz">ft_tools-2008.2.tgz</a> 347 compiled with the following commands:
348 </li> 348 </p>
349 349<pre class="shell">
350 <li><a href="download/2008.2/SHA256SUMS">SHA256 check sums</a> 350cd $DIR
351 </li> 351# get Linux 2.6.32
352 </ul> 352wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.bz2
353 <h4>Major changes (since LITMUS<sup>RT</sup> 2008.1):</h4> 353tar xjf linux-2.6.32.tar.bz2
354 <ul> 354wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2010.1/litmus-rt-2010.1.patch
355 <li>PFAIR implementation can now recover from missed tick interrupts. 355mv linux-2.6.32 litmus2010
356 </li> 356# apply the LITMUS RT patch
357 <li>A bug in the PFAIR prioritization function was corrected. 357cd litmus2010
358 </li> 358patch -p1 &lt; ../litmus-rt-2010.1.patch
359 <li>Support for synchronous task system releases in the EDF-based schedulers was fixed. 359# create a working kernel configuration
360 </li> 360# - select HZ=1000
361 <li><span class="src">sched_trace()</span> support was re-implemented based on Feather-Trace. 361# - enable in-kernel preemptions
362 </li> 362# - disable NO_HZ
363 <li>Added the tool <span class="src">showst</span> to liblitmus, which can convert <span class="src">sched_trace()</span> binary data to a human-readable format. 363# - don't use power management options like frequency scaling
364 </li> 364# - disable support for group scheduling
365 <li> 365make menuconfig
366 Assorted bug fixes. 366# compile the kernel
367 </li> 367make bzImage
368 </ul> 368make modules
369 </div> 369# proceed to install kernel, build initrd, etc.
370 370...
371 <h3 class="relname">LITMUS<sup>RT</sup> 2008.1</h3> 371</pre>
372 <div class="release"> 372 <p>
373 <p> 373 When configuring the kernel, note that there is a menu (at the very end of the list)
374 Based on Linux 2.6.24. Released in July 2008. 374 with LITMUS<sup>RT</sup>-specific configuration options. For reference, we provide sample <a href="download/2010.1/32bit-config">32-bit </a> and <a href="download/2010.1/64bit-config">64-bit </a> configurations that are known to work under QEMU</a>.
375 </p> 375 </p>
376 <h4>Files:</h4> 376
377 <ul> 377 <h3>Libraries</h3>
378 <li> 378 <p class="notopmargin">
379 <a href="download/2008.1/litmus-rt-2008.1.patch">litmus-rt-2008.1.patch</a> 379 The user-space library for real-time tasks, <span class="src">liblitmus</span>,
380 </li> 380 depends on the LITMUS<sup>RT</sup> kernel kernel and provides its own build system (based on <a href="http://www.scons.org/">scons</a>).
381 <li> 381 In order to compile <span class="src">liblitmus</span>, you need to adjust the
382 <a href="download/2008.1/liblitmus-2008.1.tgz">liblitmus-2008.1.tgz</a> 382 variable <span class="src">LITMUS_KERNEL</span> in the <span class="src">SConstruct</span> file to point to your
383 </li> 383 copy of the kernel.
384 <li><a href="download/2008.1/SHA256SUMS">SHA256 check sums</a> 384 </p>
385 </li> 385<pre class="shell">
386 </ul> 386cd $DIR
387 387wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2010.1/liblitmus-2010.1.tgz
388 <h4>Major changes (since LITMUS<sup>RT</sup> 2007.3):</h4> 388tar xzf liblitmus-2010.1.tgz
389 <ul> 389cd liblitmus
390 <li>LITMUS<sup>RT</sup> was ported to Linux 2.6.24. 390# change LITMUS_KERNEL in SConstruct to point to the kernel source
391 </li> 391scons
392 <li>LITMUS<sup>RT</sup> was ported to <span style="src">sparc64</span>. 392</pre>
393 </li> 393 <p class="nobottommargin">
394 <li>LITMUS<sup>RT</sup> is now a proper scheduling class (<span class="src">SCHED_LITMUS</span>). 394 Please refer to the <a href="#doc">documentation</a> on how to use the LITMUS<sup>RT</sup>
395 </li> 395 real-time API as provided by <span class="src">liblitmus</span>.
396 <li> 396 </p>
397 LITMUS<sup>RT</sup> queues are now based on mergeable heaps. 397
398 </li> 398 </div>
399 <li>Support for multi-threaded real-time tasks. 399
400 </li> 400
401 <li>Scheduler plugins can be selected at runtime; no reboot required. 401 <h2 id="doc">Documentation</h2>
402 </li> 402 <div class="box">
403 <li> 403
404 Many bug fixes. 404 <p class="notopmargin">
405 </li> 405 Unfortunately, most of the documentation has yet to be written. To get an overview of
406 </ul> 406 the architecture of the kernel extension, we recommend reading the paper
407 </div> 407 <a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.pdf">&ldquo;LITMUS<sup>RT</sup>:
408 408 A Status Report&rdquo;</a>.
409 <p> 409 </p>
410 Please note that the current implementation is a <em>prototype</em> with 410 <h3>Real-Time Scheduling Policies</h3>
411 certain limitations. Most notably, it is not secure in a multiuser context, 411 <p class="qa">
412 <em>i.e.</em>, real-time system calls do not require superuser 412 The kernel contains the following real-time scheduling policy implementations:
413 privileges. 413 </p>
414 </p> 414 <ul>
415 415 <li>
416 <p class="nobottommargin"> 416 PFAIR, an implementation of the PD<sup>2</sup> algorithm,
417 Older releases: <a href="litmus2007.html">LITMUS<sup>RT</sup> 2007 series</a>. 417 </li>
418 </p> 418 <li>
419 419 PSN-EDF, a partitioned EDF (P-EDF) implementation with support for the real-time synchronization protocol
420 </div> 420 FMLP,
421 421 </li>
422 422 <li>
423 423 GSN-EDF, a global EDF (G-EDF) implementation with support for the real-time synchronization protocol
424 <h2 id="install">Installation</h2> 424 FMLP,
425 <div class="box"> 425 </li>
426 <p class="notopmargin"> 426 <li>
427 The current release of LITMUS<sup>RT</sup> consists of an 427 C-EDF (Clustered EDF), a hybrid of G-EDF and P-EDF, and
428 extension of the Linux kernel that adds support for the sporadic task 428 </li>
429 model, a scheduler plugin infrastructure, and some scheduler plugins, as 429 <li>
430 well as a user-space library that provides the LITMUS<sup>RT</sup> 430 Linux, a placeholder policy that disables all real-time functionality added by the LITMUS<sup>RT</sup> patch.
431 real-time API. Note that the current implementation only works on the 431 </li>
432 Intel x86-32 and sparc64 architectures. 432 </ul>
433 </p> 433 <p>
434 <h3>Patching the Kernel</h3> 434 Only one policy can be active at any time. Initially (<em>i.e.,</em> during and after boot), the "Linux" policy is active.
435 <p class="notopmargin"> 435 You can use the tool <span class="src">showsched</span> (part of <span class="src">liblitmus</span>) to display
436 The extension to the Linux kernel is released as a patch against Linux 436 the name of the currently active policy.
437 2.6.24. To install the LITMUS<sup>RT</sup> kernel, first <a 437 </p>
438 href="http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.tar.bz2">download the Linux 438 <h3>Changing the Active Policy</h3>
439 kernel 2.6.24</a> and untar it in a directory of your choice (hereafter 439 <p class="qa">
440 referred to as <span class="src">$DIR</span>). Second, apply the 440 You can use the tool <span class="src">setsched</span> (part of <span class="src">liblitmus</span>)
441 LITMUS<sup>RT</sup> patch (see <a href="#download">Section Download</a>) 441 to select a new plugin at run time.
442 and configure, compile, and install the kernel as usual. The patch is <span 442 </p>
443 class="src">-p1</span> applicable. 443 <div class="screenshot">
444 To summarize, the LITMUS<sup>RT</sup> kernel can be obtained, patched, and 444 <img src="gfx/setsched.png" alt="Screen shot of setsched"/>
445 compiled with the following commands: 445 </div>
446 </p> 446 <p>
447<pre class="shell"> 447 Only root can change the active policy, and only when there are no real-time tasks present.
448cd $DIR 448 </p>
449# get Linux 2.6.24 449 <p>
450wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.tar.bz2 450 If you do not have the <span class="src">dialog</span> utility installed, then you can still used <span class="src">setsched</span> by passing the desired scheduling policy as a commandline parameter, <em>e.g.</em> type <span class="src"> setsched PFAIR </span> to activate the PFAIR plugin.
451tar xjf linux-2.6.24.tar.bz2 451 </p>
452wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2008.3/litmus-rt-2008.3.patch 452 <h3>Writing Real-Time Tasks</h3>
453mv linux-2.6.24 litmus2008 453 <p class="qa">
454# apply the LITMUS RT patch 454 The user space library that provides the LITMUS<sup>RT</sup> API,
455cd litmus2008 455 <span class="src">liblitmus</span>, contains two example real-time tasks
456patch -p1 &lt; ../litmus-rt-2008.3.patch 456 (<span class="src">base_task.c</span> and
457# create a working kernel configuration 457 <span class="src">base_mt_task.c</span>)
458# - select HZ=1000 458 that both illustrate how to use the API and provide a skeleton for real-time
459# - enable in-kernel preemptions 459 task development. To get started with development, please take a look these example
460# - disable NO_HZ 460 programs.
461# - don't use power management options like frequency scaling 461 </p>
462# - disable support for group scheduling 462 <h3>Tracing Overheads and Scheduling Decisions</h3>
463make menuconfig 463 <p class="qa">LITMUS<sup>RT</sup> provides numerous tracing facilities that are discussed in-depth in the tutorial <a href="doc/tracing.html">Tracing with LITMUS<sup>RT</sup></a>.
464# compile the kernel 464 </p>
465make bzImage 465 <p class="nobottommargin">
466make modules 466 Please contact <span class="src">bbb[AT]cs.unc.edu</span> if you have any
467# proceed to install kernel, build initrd, etc. 467 questions.
468... 468 </p>
469</pre> 469
470 <p> 470
471 When configuring the kernel, note that there is a menu (at the very end of the list) 471 </div>
472 with LITMUS<sup>RT</sup>-specific configuration options. For reference, <a href="download/2008.3/qemu-config">we provide a configuration that is known to work under QEMU</a>. 472
473 </p> 473 <h2 id="credits">Credits</h2>
474 474 <div class="box">
475 <h3>Libraries</h3> 475 <div style="float: right;">
476 <p class="notopmargin"> 476 <a href="http://validator.w3.org/check?uri=referer"><img
477 The user-space library for real-time tasks, <span class="src">liblitmus</span>, 477 src="http://www.w3.org/Icons/valid-xhtml10"
478 depends on the LITMUS<sup>RT</sup> kernel kernel and provides its own build system (based on <a href="http://www.scons.org/">scons</a>). 478 alt="Valid XHTML 1.0 Strict" height="31" width="88"/></a>
479 In order to compile <span class="src">liblitmus</span>, you need to adjust the 479 </div>
480 variable <span class="src">LITMUS_KERNEL</span> in the <span class="src">SConstruct</span> file to point to your 480
481 copy of the kernel. 481 <p class="nomargin">
482 </p> 482 Linux is a registered trademark of Linus Torvalds. <br /> The
483<pre class="shell"> 483 LITMUS<sup>RT</sup> logo was designed by Jasper McChesney of <a href="http://www.breakforsense.net/">Break for Sense Design</a>. <br />
484cd $DIR 484 Web design by Bj&ouml;rn Brandenburg.
485wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2008.3/liblitmus-2008.3.tgz 485 </p>
486tar xzf liblitmus-2008.3.tgz 486
487cd liblitmus 487
488# change LITMUS_KERNEL in SConstruct to point to the kernel source 488 </div>
489scons 489
490</pre> 490<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
491 <p class="nobottommargin"> 491</script>
492 Please refer to the <a href="#doc">documentation</a> on how to use the LITMUS<sup>RT</sup> 492<script type="text/javascript">
493 real-time API as provided by <span class="src">liblitmus</span>. 493_uacct = "UA-3184628-1";
494 </p> 494urchinTracker();
495 495</script>
496 </div> 496</body>
497 497</html>
498
499 <h2 id="doc">Documentation</h2>
500 <div class="box">
501
502 <p class="notopmargin">
503 Unfortunately, most of the documentation has yet to be written. To get an overview of
504 the architecture of the kernel extension, we recommend reading the paper
505 <a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.pdf">&ldquo;LITMUS<sup>RT</sup>:
506 A Status Report&rdquo;</a>.
507 </p>
508 <h3>Real-Time Scheduling Policies</h3>
509 <p class="qa">
510 The kernel contains the following real-time scheduling policy implementations:
511 </p>
512 <ul>
513 <li>
514 PFAIR, an implementation of the PD<sup>2</sup> algorithm,
515 </li>
516 <li>
517 PSN-EDF, a partitioned EDF (P-EDF) implementation with support for the real-time synchronization protocol
518 FMLP,
519 </li>
520 <li>
521 GSN-EDF, a global EDF (G-EDF) implementation with support for the real-time synchronization protocol
522 FMLP,
523 </li>
524 <li>
525 C-EDF (Clustered EDF), a hybrid of G-EDF and P-EDF, and
526 </li>
527 <li>
528 Linux, a placeholder policy that disables all real-time functionality added by the LITMUS<sup>RT</sup> patch.
529 </li>
530 </ul>
531 <p>
532 Only one policy can be active at any time. Initially (<em>i.e.,</em> during and after boot), the "Linux" policy is active.
533 You can use the tool <span class="src">showsched</span> (part of <span class="src">liblitmus</span>) to display
534 the name of the currently active policy.
535 </p>
536 <h3>Changing the Active Policy</h3>
537 <p class="qa">
538 You can use the tool <span class="src">setsched</span> (part of <span class="src">liblitmus</span>)
539 to select a new plugin at run time.
540 </p>
541 <div class="screenshot">
542 <img src="gfx/setsched.png" alt="Screen shot of setsched"/>
543 </div>
544 <p>
545 Only root can change the active policy, and only when there are no real-time tasks present.
546 </p>
547 <p>
548 If you do not have the <span class="src">dialog</span> utility installed, then you can still used <span class="src">setsched</span> by passing the desired scheduling policy as a commandline parameter, <em>e.g.</em> type <span class="src"> setsched PFAIR </span> to activate the PFAIR plugin.
549 </p>
550 <h3>Writing Real-Time Tasks</h3>
551 <p class="qa">
552 The user space library that provides the LITMUS<sup>RT</sup> API,
553 <span class="src">liblitmus</span>, contains two example real-time tasks
554 (<span class="src">base_task.c</span> and
555 <span class="src">base_mt_task.c</span>)
556 that both illustrate how to use the API and provide a skeleton for real-time
557 task development. To get started with development, please take a look these example
558 programs.
559 </p>
560 <h3>Tracing Overheads and Scheduling Decisions</h3>
561 <p class="qa">LITMUS<sup>RT</sup> provides numerous tracing facilities that are discussed in-depth in the tutorial <a href="doc/tracing.html">Tracing with LITMUS<sup>RT</sup></a>.
562 </p>
563 <p class="nobottommargin">
564 Please contact <span class="src">bbb[AT]cs.unc.edu</span> if you have any
565 questions.
566 </p>
567
568
569 </div>
570
571 <h2 id="credits">Credits</h2>
572 <div class="box">
573 <div style="float: right;">
574 <a href="http://validator.w3.org/check?uri=referer"><img
575 src="http://www.w3.org/Icons/valid-xhtml10"
576 alt="Valid XHTML 1.0 Strict" height="31" width="88"/></a>
577 </div>
578
579 <p class="nomargin">
580 Linux is a registered trademark of Linus Torvalds. <br /> The
581 LITMUS<sup>RT</sup> logo was designed by Jasper McChesney of <a href="http://www.breakforsense.net/">Break for Sense Design</a>. <br />
582 Web design by Bj&ouml;rn Brandenburg.
583 </p>
584
585
586 </div>
587
588<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
589</script>
590<script type="text/javascript">
591_uacct = "UA-3184628-1";
592urchinTracker();
593</script>
594</body>
595</html>