summaryrefslogblamecommitdiffstats
path: root/litmus2007.html
blob: 70998cce43eb052d50cdf40277ee84d1e8d2b790 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15














                                                                                                                         

                          
                                                                     
                                             
                                                           





                                                  












                                                
                           











































                                                                                                       

                                                                                  




                                                                            

                                                                                    


                                                                                   
                       



































































































































































































































































                                                                                                        
<?xml version="1.0" encoding="utf-8" ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <meta name="verify-v1" content="pZNmf5XyUUfAPdlSPbFSavMUsLgVsmBYOXzOhbIy2gw=" />
    <link rel="stylesheet" type="text/css" href="inc/format.css"/>
    <title>LITMUS RT 2007</title>
  </head>
  <body>   
    <div class="logobox">
        <img src="inc/litmusrt.png" alt="LITMUS^RT: Linux Testbed for Multiprocessor Scheduling in Real-Time Systems" /> 
       <h1>LITMUS<sup>RT</sup> 2007 Series</h1>
   </div>

    <div class="alertbox">
    <p class="nomargin">
    	<em><b>NOTE:</b> This web page discusses an older version of 
    	LITMUS<sup>RT</sup>. Please use the  
    	<a href="index.html">current version</a> unless you
    	have specific interest in the 2007 series.
    	</em>
    </p>
    </div>


   <div class="nav">
   <p>   
   <a href="#about">about</a> - 
   <a href="#support">support</a> -
   <a href="#collaborators">collaborators</a> - 
   <a href="#download">download</a> - 
   <a href="#install">installation</a> -
   <a href="#links">documentation</a>      
   </p>
   </div>

   <h2 id="about">About</h2>
    <div class="box">
    <p class="notopmargin">
    The LITMUS<sup>RT</sup> project is a soft real-time extension of the Linux
    kernel with focus on multiprocessor real-time scheduling and
    synchronization. The LITMUS<sup>RT</sup> 2007 series is based on Linux 2.6.20. 
    The Linux kernel is modified to support the sporadic task
    model and modular scheduler plugins. Both partitioned and global scheduling
    is supported. 
    The last release of the 2007 series, LITMUS<sup>RT</sup> 2007.3, includes plugins for the following
    scheduling policies:
    </p>
    <ul>
      <li> Partitioned EDF (P-EDF)</li>
      <li> Partitioned EDF with synchronization support (PSN-EDF)</li>
      <li> Global EDF (G-EDF)</li>
      <li> Global EDF with synchronization support (GSN-EDF)</li>
      <li> Global non-preemptive EDF (G-NP-EDF)</li>
      <li> Global Feedback-Controlled EDF (FC-EDF)</li>
      <li> EDF for heterogeneous task systems (EDF-HSB)</li>
      <li> PFAIR (both staggered and aligned quanta are supported)</li>
    </ul>
    <p>
    The last 2007.X release of LITMUS<sup>RT</sup> occurred on 01/28/2008.
    </p>
    </div>

   <h2 id="support">Support</h2>
    <div class="box">
    <p class="nomargin">
    The LITMUS<sup>RT</sup> 2007 development effort was supported by grants from
    Intel Corp., IBM Corp., The National Science Foundation (grant CCR 0615197), and The U.S.
    Army Research Office (grant W911NF-06-1-0425).
    </p>
    </div>

   <h2 id="collaborators">Collaborators</h2> 
    <div class="box"> 
    <p class="nomargin"> The LITMUS<sup>RT</sup> project is led by <a
    href="http://www.cs.unc.edu/~anderson/">Dr. James H. Anderson</a>. <br/><br/>
    LITMUS<sup>RT</sup> 2007 was implemented by students of the 
    <a href="http://www.cs.unc.edu/rt">Real-Time Systems
    Group</a> at the <a href="http://www.unc.edu">University of North Carolina
    at Chapel Hill</a>:
    </p>
    <ul>

    <li> <a href="http://www.cs.unc.edu/~block/">Aaron D. Block</a> <em>(graduated
    August 2008)</em>
    </li>

    <li> <a href="http://www.cs.unc.edu/~bbb/">Bj&ouml;rn B. Brandenburg</a>
    </li>

    <li> <a href="http://www.cs.unc.edu/~jmc/">John M. Calandrino</a> <em>(graduated
    July 2009)</em>
    </li>

    <li> <a href="http://www.cs.unc.edu/~uma/">UmaMaheswari Devi</a> <em>(graduated
    December 2006)</em>
    </li>

    <li> <a href="http://www.cs.unc.edu/~leontyev/">Hennadiy  Leontyev</a>
    </li>

    </ul>

    </div>
    

    
    <h2 id="download">Download</h2> 
    <div class="box"> 
    <p class="notopmargin">
    The source code of LITMUS<sup>RT</sup> is made available as open source
    under the terms of the <a href="http://www.gnu.org/licenses/gpl.txt">GNU
    General Public License (GPL)</a>. 
    </p>
    <p>
    The third and last version of the LITMUS<sup>RT</sup> 2007 series was released on 01/28/2008. 
    It  consists of our Linux kernel modifications in the form of a patch against Linux 2.6.20, 
    <span class="src">liblitmus</span>, the user-space API for real-time tasks,
    and <span class="src">libso</span>, a library for shared objects that
    provides synchronization primitives suitable for real-time tasks.    
    </p>

    <ul>
    <li>
         2007.3 (January 2008)<br/>
         Based on Linux 2.6.20. (see <a href="#install">Section Install</a> 
	 below) <br/>
	 Files:
	 <ul>
	   <li><a href="download/2007.3/litmus-rt-2007.3.patch">litmus-rt-2007.3.patch</a> (344 KB)</li>
	 <li><a href="download/2007.3/liblitmus-2007.3.tgz">liblitmus-2007.3.tgz</a>
	 (14 KB)</li>
	 <li><a href="download/2007.3/libso-2007.3.tgz">libso-2007.3.tgz</a>
	 (15 KB)</li>
	 <li><a href="download/2007.3/SHA256SUMS">SHA256 check sums.</a>
	 </li>
         </ul>
    </li>
    <li>
         Major changes: 
	 <ul>
	   <li>
	     Support for multi-threaded real-time applications added. The
	     use of <span class="src">libso</span> is no longer required.
	   </li>
	   <li>
	     All allocations (semaphores, etc.) are now dynamic. No more 
	     running out of resources.
	   </li>
	   <li>
	     Real-Time tasks do not have be launched with 
	     <span class="src">rt_launch</span> anymore. Instead, a new
	     <span class="src">task_mode()</span> API was introduced that
	     allows (Linux) tasks to transition in and out of
	     background task mode (std. Linux task) and LITMUS<sup>RT</sup>
	     real-time task.
	   </li>
	   <li>
	     Many bug fixes.
	   </li>
	 </ul>
    </li>
    </ul>
    
  <p class="nobottommargin">
       Please note that theses implementations are <em>prototypes</em> with
       certain limitations. Most notably, it is not secure in a multiuser context,
       <em>i.e.</em>, real-time system calls do not require superuser
       privileges. Further, some resources (<em>e.g.</em> semaphores) that
       should be dynamically allocated are allocated statically.
    </p>

    <p class="nobottommargin">
      Older releases:
    </p>

    <ul>
       <li> 2007.2 (November 2007)<br/>
         Based on Linux 2.6.20. <br/>
	 <a href="download/litmus-rt-2007.2.patch">litmus-rt-2007.2.patch</a>
	 (328 KB)<br/> 
	 <a href="download/liblitmus-2007.2.tgz">liblitmus-2007.2.tgz</a>
	 (11 KB) <br/>
	 <a href="download/libso-2007.2.tgz">libso-2007.2.tgz</a>
	 (16 KB) <br/><br/>
       </li>
 
       <li> 2007.1  (May 2007)<br/>	 
	 Based on Linux 2.6.20. <br/>
	 <a href="download/litmus-rt-2007.1.patch">litmus-rt-2007.1.patch</a>
	 (266 KB) <br/> 
	 <a href="download/liblitmus-2007.1.tgz">liblitmus-2007.1.tgz</a>
	 (6.8 KB) <br/>
	 <a href="download/libso-2007.1.tgz">libso-2007.1.tgz</a>
	 (16 KB) <br/>
       </li>       
    </ul>
    
    </div>


    <h2 id="install">Installation</h2> 
    <div class="box"> 
    <p class="notopmargin">
    LITMUS<sup>RT</sup> 2007.3 consists of an
    extension of the Linux kernel that adds support for the sporadic task
    model, a scheduler plugin infrastructure, and some scheduler plugins, as
    well as two user-space libraries that provide the LITMUS<sup>RT</sup>
    real-time API. Note, that the current implementation only works on the
    Intel x86 architecture.
    </p>
    <h3>Patching the Kernel</h3>
    <p class="notopmargin">
    The extension to the Linux kernel is released as a patch against Linux
    2.6.20. To install the LITMUS<sup>RT</sup> kernel, first <a
    href="http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2">download the Linux
    kernel 2.6.20</a> and untar it in a directory of your choice (hereafter
    referred to as <span class="src">$DIR</span>). Second, apply the
    LITMUS<sup>RT</sup> patch (see <a href="#download">Section Download</a>)
    and configure, compile, and install the kernel as usual. The patch is <span
    class="src">-p1</span> applicable. 
    To summarize, the  LITMUS<sup>RT</sup> kernel can be obtained, patched, and
    compiled with the following commands:
    </p>
<pre class="shell">
cd $DIR
# get Linux 2.6.20
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2
tar xjf linux-2.6.20.tar.bz2
wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2007.3/litmus-rt-2007.3.patch
mv linux-2.6.20 litmus-rt
# apply the LITMUS RT patch
cd litmus-rt
patch -p1 &lt; ../litmus-rt-2007.3.patch
# create a working kernel configuration with HZ=1000
make gconfig
# compile the kernel
make bzImage
make modules
# proceed to install kernel, build initrd, etc.
...
</pre>
   <p>
   After the kernel has been compiled and installed, the boot-loader must be
   configured to load the desired real-time scheduler plugin at boot time (run
   time selection of the real-time scheduler is currently not supported). The
   real-time scheduler plugin is selected with the <span
   class="src">rtsched</span> kernel parameter. 
   </p>
<pre class="shell">
rtsched= {linux, pfair, part_edf, global_edf, 
          global_edf_np, edf_hsb, gsn_edf, psn_edf, adaptive}
</pre>
   <p>
   For example, on our test machine, we use the
   following GRUB entry:
   </p>

<pre class="shell">
title  Kernel 2.6.20-LITMUSRT
root   (hd0,5)
kernel /boot/vmlinuz-2.6.20-LITMUSRT root=/dev/sda6 ro vga=791 rtsched=gsn_edf
initrd /boot/kernel-2.6.20-LITMUSRT.img
</pre>

    <h3>Libraries</h3>
    <p class="notopmargin">
    The two user-space libraries, <span class="src">liblitmus</span> and  <span
    class="src">libso</span>, provide their own makefiles and thus are easy to
    compile. The kernel interface for real-time tasks is provided by <span
    class="src">liblitmus</span>, which can be compiled as follows:
    </p>
<pre class="shell">
cd $DIR
wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2007.3/liblitmus-2007.3.tgz
tar xzf liblitmus-2007.3.tgz
cd liblitmus 
make
</pre>
    <p>
    The second library,  <span class="src">libso</span>, provides shared object
    and synchronization support for real-time tasks. It depends on  <span
    class="src">liblitmus</span> and must be installed in &quot;parallel&quot;
    (they must have the same parent directory). The following commands will
    obtain and compile  <span class="src">libso</span>, including the test programs:
    </p>
<pre class="shell">
cd $DIR
wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2007.3/libso-2007.3.tgz
tar xzf libso-2007.3.tgz
cd libso
make
make tests
</pre>
    <p class="nobottommargin">
    Please refer to the <a href="#doc">documentation</a> on how to use the LITMUS<sup>RT</sup>
    real-time API as provided by  <span class="src">libso</span> and  
    <span class="src">liblitmus</span>.
    </p>

    </div>


    <h2 id="doc">Documentation</h2> 
    <div class="box"> 

    <p class="notopmargin">
      Most of the documentation has yet to be written. To get an overview of
      the architecture of the kernel extension, we recommend to read the paper
      <a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.pdf">&ldquo;LITMUS<sup>RT</sup>:
      A Status Report&rdquo;</a>.
    </p>
    <p>
    The user space library that provides the LITMUS<sup>RT</sup> API, 
    <span class="src">liblitmus</span>, contains two example real-time tasks 
    (<span class="src">base_task.c</span> and 
     <span class="src">base_mt_task.c</span>)
    that both illustrate how to use the API and provide a skeleton for real-time
    task development. To get started with development, take a look these example
    programs.
    </p>
    <p class="nobottommargin">
      Please contact <span class="src">bbb[AT]cs.unc.edu</span> if you have any
      questions.
    </p>


    </div>

    <h2 id="credits">Credits</h2> 
    <div class="box">
    <div style="float: right;">    
    <a href="http://validator.w3.org/check?uri=referer"><img
        src="http://www.w3.org/Icons/valid-xhtml10"
        alt="Valid XHTML 1.0 Strict" height="31" width="88"/></a>
    </div>

    <p class="nomargin">
    Linux is a registered trademark of Linus Torvalds. <br /> The
    LITMUS<sup>RT</sup> logo was designed by <a
    href="http://designs.primevalpress.com">Jasper McChesney</a> of <a
    href="http://designs.primevalpress.com">Primeval Designs</a>. <br />
    Web design by Bj&ouml;rn Brandenburg.
    </p>


    </div>

<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-3184628-1";
urchinTracker();
</script>
</body>
</html>