diff options
author | Bjoern Brandenburg <bbb@swan5.cs.unc.edu> | 2008-07-01 06:26:01 -0400 |
---|---|---|
committer | Bjoern Brandenburg <bbb@swan5.cs.unc.edu> | 2008-07-01 06:26:01 -0400 |
commit | eea295a7a14dec9f7d18d56f5d75563a10ddda06 (patch) | |
tree | bcdc4ebe1ae3719d96b1b3be68b7922ab317655b | |
parent | 83e168ccd2dfe289d0a453a0c0ca301450f3c516 (diff) |
add description of old LITMUS
-rw-r--r-- | litmus2007.html | 351 |
1 files changed, 351 insertions, 0 deletions
diff --git a/litmus2007.html b/litmus2007.html new file mode 100644 index 0000000..aedc717 --- /dev/null +++ b/litmus2007.html | |||
@@ -0,0 +1,351 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" ?> | ||
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"> | ||
4 | <head> | ||
5 | <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> | ||
6 | <meta name="verify-v1" content="pZNmf5XyUUfAPdlSPbFSavMUsLgVsmBYOXzOhbIy2gw=" /> | ||
7 | <link rel="stylesheet" type="text/css" href="inc/format.css"/> | ||
8 | <title>LITMUS RT 2007</title> | ||
9 | </head> | ||
10 | <body> | ||
11 | <div class="logobox"> | ||
12 | <img src="inc/litmusrt.png" alt="LITMUS^RT: Linux Testbed for Multiprocessor Scheduling in Real-Time Systems" /> | ||
13 | <h1>LITMUS<sup>RT</sup> 2007 Series</h1> | ||
14 | </div> | ||
15 | |||
16 | <div class="nav"> | ||
17 | <p> | ||
18 | <a href="#about">about</a> - | ||
19 | <a href="#support">support</a> - | ||
20 | <a href="#collaborators">collaborators</a> - | ||
21 | <a href="#download">download</a> - | ||
22 | <a href="#install">installation</a> - | ||
23 | <a href="#links">documentation</a> | ||
24 | </p> | ||
25 | </div> | ||
26 | |||
27 | <h2 id="about">About</h2> | ||
28 | <div class="box"> | ||
29 | <p class="nomargin"> | ||
30 | <em><b>NOTE:</b> This web page talks about an older version of | ||
31 | LITMUS<sup>RT</sup>. Please use the | ||
32 | <a href="http://www.cs.unc.edu/~anderson/litmus-rt">current version</a> unless you | ||
33 | have specific interest in the 2007 series. | ||
34 | </em> | ||
35 | </p> | ||
36 | <p> | ||
37 | The LITMUS<sup>RT</sup> project is a soft real-time extension of the Linux | ||
38 | kernel with focus on multiprocessor real-time scheduling and | ||
39 | synchronization. The LITMUS<sup>RT</sup> 2007 series is based on Linux 2.6.20. | ||
40 | The Linux kernel is modified to support the sporadic task | ||
41 | model and modular scheduler plugins. Both partitioned and global scheduling | ||
42 | is supported. | ||
43 | The last release of the 2007 series, LITMUS<sup>RT</sup> 2007.3, includes plugins for the following | ||
44 | scheduling policies: | ||
45 | </p> | ||
46 | <ul> | ||
47 | <li> Partitioned EDF (P-EDF)</li> | ||
48 | <li> Partitioned EDF with synchronization support (PSN-EDF)</li> | ||
49 | <li> Global EDF (G-EDF)</li> | ||
50 | <li> Global EDF with synchronization support (GSN-EDF)</li> | ||
51 | <li> Global non-preemptive EDF (G-NP-EDF)</li> | ||
52 | <li> Global Feedback-Controlled EDF (FC-EDF)</li> | ||
53 | <li> EDF for heterogeneous task systems (EDF-HSB)</li> | ||
54 | <li> PFAIR (both staggered and aligned quanta are supported)</li> | ||
55 | </ul> | ||
56 | <p> | ||
57 | The last 2007.X release of LITMUS<sup>RT</sup> occurred on 01/28/2008. | ||
58 | </p> | ||
59 | </div> | ||
60 | |||
61 | <h2 id="support">Support</h2> | ||
62 | <div class="box"> | ||
63 | <p class="nomargin"> | ||
64 | The LITMUS<sup>RT</sup> 2007 development effort was supported by grants from | ||
65 | Intel Corp., IBM Corp., The National Science Foundation (grant CCR 0615197), and The U.S. | ||
66 | Army Research Office (grant W911NF-06-1-0425). | ||
67 | </p> | ||
68 | </div> | ||
69 | |||
70 | <h2 id="collaborators">Collaborators</h2> | ||
71 | <div class="box"> | ||
72 | <p class="nomargin"> The LITMUS<sup>RT</sup> project is led by <a | ||
73 | href="http://www.cs.unc.edu/~anderson/">Dr. James H. Anderson</a>. <br/><br/> | ||
74 | LITMUS<sup>RT</sup> 2007 was implemented by students of the | ||
75 | <a href="http://www.cs.unc.edu/rt">Real-Time Systems | ||
76 | Group</a> at the <a href="http://www.unc.edu">University of North Carolina | ||
77 | at Chapel Hill</a>: | ||
78 | </p> | ||
79 | <ul> | ||
80 | |||
81 | <li> <a href="http://www.cs.unc.edu/~block/">Aaron D. Block</a> | ||
82 | </li> | ||
83 | |||
84 | <li> <a href="http://www.cs.unc.edu/~bbb/">Björn B. Brandenburg</a> | ||
85 | </li> | ||
86 | |||
87 | <li> <a href="http://www.cs.unc.edu/~jmc/">John M. Calandrino</a> | ||
88 | </li> | ||
89 | |||
90 | <li> <a href="http://www.cs.unc.edu/~uma/">UmaMaheswari Devi</a> <em>(graduated | ||
91 | Dec. 2006)</em> | ||
92 | </li> | ||
93 | |||
94 | <li> <a href="http://www.cs.unc.edu/~leontyev/">Hennadiy Leontyev</a> | ||
95 | </li> | ||
96 | |||
97 | </ul> | ||
98 | |||
99 | </div> | ||
100 | |||
101 | |||
102 | |||
103 | <h2 id="download">Download</h2> | ||
104 | <div class="box"> | ||
105 | <p class="notopmargin"> | ||
106 | The source code of LITMUS<sup>RT</sup> is made available as open source | ||
107 | under the terms of the <a href="http://www.gnu.org/licenses/gpl.txt">GNU | ||
108 | General Public License (GPL)</a>. | ||
109 | </p> | ||
110 | <p> | ||
111 | The third and last version of the LITMUS<sup>RT</sup> 2007 series was released on 01/28/2008. | ||
112 | It consists of our Linux kernel modifications in the form of a patch against Linux 2.6.20, | ||
113 | <span class="src">liblitmus</span>, the user-space API for real-time tasks, | ||
114 | and <span class="src">libso</span>, a library for shared objects that | ||
115 | provides synchronization primitives suitable for real-time tasks. | ||
116 | </p> | ||
117 | |||
118 | <ul> | ||
119 | <li> | ||
120 | 2007.3 (January 2008)<br/> | ||
121 | Based on Linux 2.6.20. (see <a href="#install">Section Install</a> | ||
122 | below) <br/> | ||
123 | Files: | ||
124 | <ul> | ||
125 | <li><a href="download/2007.3/litmus-rt-2007.3.patch">litmus-rt-2007.3.patch</a> (344 KB)</li> | ||
126 | <li><a href="download/2007.3/liblitmus-2007.3.tgz">liblitmus-2007.3.tgz</a> | ||
127 | (14 KB)</li> | ||
128 | <li><a href="download/2007.3/libso-2007.3.tgz">libso-2007.3.tgz</a> | ||
129 | (15 KB)</li> | ||
130 | <li><a href="download/2007.3/SHA256SUMS">SHA256 check sums.</a> | ||
131 | </li> | ||
132 | </ul> | ||
133 | </li> | ||
134 | <li> | ||
135 | Major changes: | ||
136 | <ul> | ||
137 | <li> | ||
138 | Support for multi-threaded real-time applications added. The | ||
139 | use of <span class="src">libso</span> is no longer required. | ||
140 | </li> | ||
141 | <li> | ||
142 | All allocations (semaphores, etc.) are now dynamic. No more | ||
143 | running out of resources. | ||
144 | </li> | ||
145 | <li> | ||
146 | Real-Time tasks do not have be launched with | ||
147 | <span class="src">rt_launch</span> anymore. Instead, a new | ||
148 | <span class="src">task_mode()</span> API was introduced that | ||
149 | allows (Linux) tasks to transition in and out of | ||
150 | background task mode (std. Linux task) and LITMUS<sup>RT</sup> | ||
151 | real-time task. | ||
152 | </li> | ||
153 | <li> | ||
154 | Many bug fixes. | ||
155 | </li> | ||
156 | </ul> | ||
157 | </li> | ||
158 | </ul> | ||
159 | |||
160 | <p class="nobottommargin"> | ||
161 | Please note that theses implementations are <em>prototypes</em> with | ||
162 | certain limitations. Most notably, it is not secure in a multiuser context, | ||
163 | <em>i.e.</em>, real-time system calls do not require superuser | ||
164 | privileges. Further, some resources (<em>e.g.</em> semaphores) that | ||
165 | should be dynamically allocated are allocated statically. | ||
166 | </p> | ||
167 | |||
168 | <p class="nobottommargin"> | ||
169 | Older releases: | ||
170 | </p> | ||
171 | |||
172 | <ul> | ||
173 | <li> 2007.2 (November 2007)<br/> | ||
174 | Based on Linux 2.6.20. <br/> | ||
175 | <a href="download/litmus-rt-2007.2.patch">litmus-rt-2007.2.patch</a> | ||
176 | (328 KB)<br/> | ||
177 | <a href="download/liblitmus-2007.2.tgz">liblitmus-2007.2.tgz</a> | ||
178 | (11 KB) <br/> | ||
179 | <a href="download/libso-2007.2.tgz">libso-2007.2.tgz</a> | ||
180 | (16 KB) <br/><br/> | ||
181 | </li> | ||
182 | |||
183 | <li> 2007.1 (May 2007)<br/> | ||
184 | Based on Linux 2.6.20. <br/> | ||
185 | <a href="download/litmus-rt-2007.1.patch">litmus-rt-2007.1.patch</a> | ||
186 | (266 KB) <br/> | ||
187 | <a href="download/liblitmus-2007.1.tgz">liblitmus-2007.1.tgz</a> | ||
188 | (6.8 KB) <br/> | ||
189 | <a href="download/libso-2007.1.tgz">libso-2007.1.tgz</a> | ||
190 | (16 KB) <br/> | ||
191 | </li> | ||
192 | </ul> | ||
193 | |||
194 | </div> | ||
195 | |||
196 | |||
197 | <h2 id="install">Installation</h2> | ||
198 | <div class="box"> | ||
199 | <p class="notopmargin"> | ||
200 | LITMUS<sup>RT</sup> 2007.3 consists of an | ||
201 | extension of the Linux kernel that adds support for the sporadic task | ||
202 | model, a scheduler plugin infrastructure, and some scheduler plugins, as | ||
203 | well as two user-space libraries that provide the LITMUS<sup>RT</sup> | ||
204 | real-time API. Note, that the current implementation only works on the | ||
205 | Intel x86 architecture. | ||
206 | </p> | ||
207 | <h3>Patching the Kernel</h3> | ||
208 | <p class="notopmargin"> | ||
209 | The extension to the Linux kernel is released as a patch against Linux | ||
210 | 2.6.20. To install the LITMUS<sup>RT</sup> kernel, first <a | ||
211 | href="http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2">download the Linux | ||
212 | kernel 2.6.20</a> and untar it in a directory of your choice (hereafter | ||
213 | referred to as <span class="src">$DIR</span>). Second, apply the | ||
214 | LITMUS<sup>RT</sup> patch (see <a href="#download">Section Download</a>) | ||
215 | and configure, compile, and install the kernel as usual. The patch is <span | ||
216 | class="src">-p1</span> applicable. | ||
217 | To summarize, the LITMUS<sup>RT</sup> kernel can be obtained, patched, and | ||
218 | compiled with the following commands: | ||
219 | </p> | ||
220 | <pre class="shell"> | ||
221 | cd $DIR | ||
222 | # get Linux 2.6.20 | ||
223 | wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2 | ||
224 | tar xjf linux-2.6.20.tar.bz2 | ||
225 | wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2007.3/litmus-rt-2007.3.patch | ||
226 | mv linux-2.6.20 litmus-rt | ||
227 | # apply the LITMUS RT patch | ||
228 | cd litmus-rt | ||
229 | patch -p1 < ../litmus-rt-2007.3.patch | ||
230 | # create a working kernel configuration with HZ=1000 | ||
231 | make gconfig | ||
232 | # compile the kernel | ||
233 | make bzImage | ||
234 | make modules | ||
235 | # proceed to install kernel, build initrd, etc. | ||
236 | ... | ||
237 | </pre> | ||
238 | <p> | ||
239 | After the kernel has been compiled and installed, the boot-loader must be | ||
240 | configured to load the desired real-time scheduler plugin at boot time (run | ||
241 | time selection of the real-time scheduler is currently not supported). The | ||
242 | real-time scheduler plugin is selected with the <span | ||
243 | class="src">rtsched</span> kernel parameter. | ||
244 | </p> | ||
245 | <pre class="shell"> | ||
246 | rtsched= {linux, pfair, part_edf, global_edf, | ||
247 | global_edf_np, edf_hsb, gsn_edf, psn_edf, adaptive} | ||
248 | </pre> | ||
249 | <p> | ||
250 | For example, on our test machine, we use the | ||
251 | following GRUB entry: | ||
252 | </p> | ||
253 | |||
254 | <pre class="shell"> | ||
255 | title Kernel 2.6.20-LITMUSRT | ||
256 | root (hd0,5) | ||
257 | kernel /boot/vmlinuz-2.6.20-LITMUSRT root=/dev/sda6 ro vga=791 rtsched=gsn_edf | ||
258 | initrd /boot/kernel-2.6.20-LITMUSRT.img | ||
259 | </pre> | ||
260 | |||
261 | <h3>Libraries</h3> | ||
262 | <p class="notopmargin"> | ||
263 | The two user-space libraries, <span class="src">liblitmus</span> and <span | ||
264 | class="src">libso</span>, provide their own makefiles and thus are easy to | ||
265 | compile. The kernel interface for real-time tasks is provided by <span | ||
266 | class="src">liblitmus</span>, which can be compiled as follows: | ||
267 | </p> | ||
268 | <pre class="shell"> | ||
269 | cd $DIR | ||
270 | wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2007.3/liblitmus-2007.3.tgz | ||
271 | tar xzf liblitmus-2007.3.tgz | ||
272 | cd liblitmus | ||
273 | make | ||
274 | </pre> | ||
275 | <p> | ||
276 | The second library, <span class="src">libso</span>, provides shared object | ||
277 | and synchronization support for real-time tasks. It depends on <span | ||
278 | class="src">liblitmus</span> and must be installed in "parallel" | ||
279 | (they must have the same parent directory). The following commands will | ||
280 | obtain and compile <span class="src">libso</span>, including the test programs: | ||
281 | </p> | ||
282 | <pre class="shell"> | ||
283 | cd $DIR | ||
284 | wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2007.3/libso-2007.3.tgz | ||
285 | tar xzf libso-2007.3.tgz | ||
286 | cd libso | ||
287 | make | ||
288 | make tests | ||
289 | </pre> | ||
290 | <p class="nobottommargin"> | ||
291 | Please refer to the <a href="#doc">documentation</a> on how to use the LITMUS<sup>RT</sup> | ||
292 | real-time API as provided by <span class="src">libso</span> and | ||
293 | <span class="src">liblitmus</span>. | ||
294 | </p> | ||
295 | |||
296 | </div> | ||
297 | |||
298 | |||
299 | <h2 id="doc">Documentation</h2> | ||
300 | <div class="box"> | ||
301 | |||
302 | <p class="notopmargin"> | ||
303 | Most of the documentation has yet to be written. To get an overview of | ||
304 | the architecture of the kernel extension, we recommend to read the paper | ||
305 | <a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.pdf">“LITMUS<sup>RT</sup>: | ||
306 | A Status Report”</a>. | ||
307 | </p> | ||
308 | <p> | ||
309 | The user space library that provides the LITMUS<sup>RT</sup> API, | ||
310 | <span class="src">liblitmus</span>, contains two example real-time tasks | ||
311 | (<span class="src">base_task.c</span> and | ||
312 | <span class="src">base_mt_task.c</span>) | ||
313 | that both illustrate how to use the API and provide a skeleton for real-time | ||
314 | task development. To get started with development, take a look these example | ||
315 | programs. | ||
316 | </p> | ||
317 | <p class="nobottommargin"> | ||
318 | Please contact <span class="src">bbb[AT]cs.unc.edu</span> if you have any | ||
319 | questions. | ||
320 | </p> | ||
321 | |||
322 | |||
323 | </div> | ||
324 | |||
325 | <h2 id="credits">Credits</h2> | ||
326 | <div class="box"> | ||
327 | <div style="float: right;"> | ||
328 | <a href="http://validator.w3.org/check?uri=referer"><img | ||
329 | src="http://www.w3.org/Icons/valid-xhtml10" | ||
330 | alt="Valid XHTML 1.0 Strict" height="31" width="88"/></a> | ||
331 | </div> | ||
332 | |||
333 | <p class="nomargin"> | ||
334 | Linux is a registered trademark of Linus Torvalds. <br /> The | ||
335 | LITMUS<sup>RT</sup> logo was designed by <a | ||
336 | href="http://designs.primevalpress.com">Jasper McChesney</a> of <a | ||
337 | href="http://designs.primevalpress.com">Primeval Designs</a>. <br /> | ||
338 | Web design by Björn Brandenburg. | ||
339 | </p> | ||
340 | |||
341 | |||
342 | </div> | ||
343 | |||
344 | <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> | ||
345 | </script> | ||
346 | <script type="text/javascript"> | ||
347 | _uacct = "UA-3184628-1"; | ||
348 | urchinTracker(); | ||
349 | </script> | ||
350 | </body> | ||
351 | </html> | ||