summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern Brandenburg <bbb@swan5.cs.unc.edu>2008-07-01 06:26:01 -0400
committerBjoern Brandenburg <bbb@swan5.cs.unc.edu>2008-07-01 06:26:01 -0400
commiteea295a7a14dec9f7d18d56f5d75563a10ddda06 (patch)
treebcdc4ebe1ae3719d96b1b3be68b7922ab317655b
parent83e168ccd2dfe289d0a453a0c0ca301450f3c516 (diff)
add description of old LITMUS
-rw-r--r--litmus2007.html351
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&ouml;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">
221cd $DIR
222# get Linux 2.6.20
223wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2
224tar xjf linux-2.6.20.tar.bz2
225wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2007.3/litmus-rt-2007.3.patch
226mv linux-2.6.20 litmus-rt
227# apply the LITMUS RT patch
228cd litmus-rt
229patch -p1 &lt; ../litmus-rt-2007.3.patch
230# create a working kernel configuration with HZ=1000
231make gconfig
232# compile the kernel
233make bzImage
234make 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">
246rtsched= {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">
255title Kernel 2.6.20-LITMUSRT
256root (hd0,5)
257kernel /boot/vmlinuz-2.6.20-LITMUSRT root=/dev/sda6 ro vga=791 rtsched=gsn_edf
258initrd /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">
269cd $DIR
270wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2007.3/liblitmus-2007.3.tgz
271tar xzf liblitmus-2007.3.tgz
272cd liblitmus
273make
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 &quot;parallel&quot;
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">
283cd $DIR
284wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2007.3/libso-2007.3.tgz
285tar xzf libso-2007.3.tgz
286cd libso
287make
288make 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">&ldquo;LITMUS<sup>RT</sup>:
306 A Status Report&rdquo;</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&ouml;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";
348urchinTracker();
349</script>
350</body>
351</html>