<!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: Linux Testbed for Multiprocessor Scheduling in Real-Time Systems</title> </head> <body> <div class="logobox"> <img src="inc/litmusrt.png" alt="LITMUS^RT: Linux Testbed for Multiprocessor Scheduling in Real-Time Systems" /> <p class="authors"> <a href="http://www.cs.unc.edu/~anderson/">Dr. James H. Anderson & Students</a>, <a href="http://www.unc.edu">The University of North Carolina at Chapel Hill</a> </p> </div> <div class="alertbox"> <h3 class="notopmargin">Interested in kernel hacking and real-time systems? We're hiring!</h3> <p> <a href="http://www.cs.unc.edu/rt">UNC's real-time group</a> is actively recruiting <strong>PhD-seeking graduate students</strong> with a strong background in Linux kernel development. Applicants must be highly-motivated self-starters and eager to complete a <a href="http://www.cs.unc.edu/Admin/AcademicPrograms/Doctoral/DoctoralReqOfficial.html">rigorous PhD program in computer science</a>. Having contributed to Linux (or other open source systems-level projects) and/or maintained an open source project is definitively a plus. (Extra bonus points for submitting a high-quality patch to LITMUS<sup>RT</sup>.) </p> <p class="nobottommargin"> Have a look at our group's <a href="http://www.cs.unc.edu/%7Eanderson/papers.html">recent publications</a> to get a feel for the kind of work that we are doing. Sounds good? Great! Next step: check out the graduate school's <a href="http://www.cs.unc.edu/Admissions/">application requirements</a> and, if you meet the requirements, contact <a href="http://www.cs.unc.edu/~anderson">Prof. Anderson</a>. <br/><strong>Fun, challenging problems are waiting!</strong> </p> </div> <div class="nav"> <p> <a href="#about">about</a> - <a href="#support">support</a> - <a href="#collaborators">collaborators</a> - <a href="#publications">publications</a> - <a href="#download">download</a> - <a href="#install">installation</a> - <a href="#doc">documentation</a> - <a href="#development">development</a> </p> </div> <h2 id="about">About</h2> <div class="box"> <p class="nomargin"> 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 Linux kernel is modified to support the sporadic task model and modular scheduler plugins. Both partitioned and global scheduling is supported. </p> <h3>Goals</h3> <p class="notopmargin"> 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. </p> <h3>Non-Goals</h3> <p class="notopmargin"> 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. </p> <h3>Current Version</h3> <p class="notopmargin"> The current version of LITMUS<sup>RT</sup> is <strong>2010.2</strong> and is based on Linux 2.6.34. It was released on 10/21/2010 and includes plugins for the following scheduling policies: </p> <ul> <li> Partitioned EDF with synchronization support (PSN-EDF)</li> <li> Global EDF with synchronization support (GSN-EDF)</li> <li> Clustered EDF (C-EDF) </li> <li> PFAIR (both staggered and aligned quanta are supported)</li> </ul> <p> Please refer to the <a href="#download">download</a> and <a href="#install">installation</a> sections for details. </p> <p>Earlier versions, which supported additional scheduling policies, are discussed on separate pages dedicated to the <a href="litmus2008.html">LITMUS<sup>RT</sup> 2008</a> (based on Linux 2.6.24) and <a href="litmus2007.html">LITMUS<sup>RT</sup> 2007 </a> (based on Linux 2.6.20) series. </p> <p class="nobottommargin"> The first version of LITMUS<sup>RT</sup> (implemented in Spring 2006) was based on Linux 2.6.9. </p> <h3> Development Plans </h3> There are plans to port LITMUS<sup>RT</sup> to PowerPC and ARM platforms. Please contact us for details. </div> <h2 id="support">Support</h2> <div class="box"> <p class="nomargin"> The LITMUS<sup>RT</sup> development effort is being supported by grants from AT&T, IBM, and Northrop Grumman Corps.; the National Science Foundation (grants CNS 0834270 and CNS 0834132); the U.S. Army Research Office (grant W911NF-09-1-0535); and the Air Force Office of Scientific Research (grant FA 9550-09-1-0549). </p> </div> <h2 id="collaborators">Collaborators</h2> <div class="box"> <p class="notopmargin"> The LITMUS<sup>RT</sup> project is led by <a href="http://www.cs.unc.edu/~anderson/">Dr. James H. Anderson</a>. </p> <p> The implementation effort is carried out by students of the <a href="http://www.cs.unc.edu/~anderson/real-time/">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/~bbb/">Björn B. Brandenburg</a> (current maintainer) </li> <li> <a href="http://www.sprg.uniroma2.it/home/bastoni/">Andrea Bastoni</a> (University of Rome "Tor Vergata") </li> </ul> <p class="nobottommargin"> Additional collaborators contributed to the previous <a href="litmus2008.html#collaborators">LITMUS<sup>RT</sup> 2008</a> and the <a href="litmus2007.html#collaborators">LITMUS<sup>RT</sup> 2007</a> versions. </p> </div> <h2 id="publications">Publications</h2> <div class="box"> <ol class="nomargin"> <li> <p> A.Bastoni, B. Brandenburg and J. Anderson “Cache-Related Preemption and Migration Delays: Empirical Approximation and Impact on Schedulability”, <cite>Proceedings of the Sixth International Workshop on Operating Systems Platforms for Embedded Real-Time Applications</cite>, to appear, July 2010. <a href="http://www.cs.unc.edu/~anderson/papers/ospert10.pdf">PDF</a>. </p> </li> <li><p> B. Brandenburg and J. Anderson, “On the Implementation of Global Real-Time Schedulers”, <cite>Proceedings of the 30th IEEE Real-Time Systems Symposium</cite>, pp. 214-224, December 2009. <a href="http://www.cs.unc.edu/~anderson/papers/rtss09a.pdf">PDF</a>. Longer version with all graphs: <a href="http://www.cs.unc.edu/~anderson/papers/rtss09a_long.pdf">PDF</a>. </p> <p> For reference, all evaluated plugins are provided as part of the following patch (against version 2008.3). </p> <ul> <li> <a href="download/RTSS09/litmus-rt-RTSS09.patch">litmus-rt-RTSS09.patch</a> </li> </ul> </li> <li> <p> B. Brandenburg and J. Anderson “Reader-Writer Synchronization for Shared-Memory Multiprocessor Real-Time Systems”, <cite>Proceedings of the 21st Euromicro Conference on Real-Time Systems</cite>, pp. 184-193, July 2009. <a href="http://www.cs.unc.edu/~anderson/papers/ecrts09b.pdf">PDF</a>. Long version with blocking terms: <a href="http://www.cs.unc.edu/~anderson/papers/ecrts09b-long.pdf">PDF</a>. </p> </li> <li> <p> J. Calandrino and J. Anderson “On the Design and Implementation of a Cache-Aware Multicore Real-Time Scheduler”, <cite>Proceedings of the 21st Euromicro Conference on Real-Time Systems</cite>, pp. 194-204, July 2009. <a href="http://www.cs.unc.edu/~anderson/papers/ecrts09c.pdf">PDF</a>. </p> </li> <li> <p> M. Mollison, B. Brandenburg, and J. Anderson “Towards Unit Testing Real-Time Schedulers in LITMUS<sup>RT</sup>”, <cite>Proceedings of the Fifth International Workshop on Operating Systems Platforms for Embedded Real-Time Applications</cite>, pp. 33-39, July 2009. <a href="http://www.cs.unc.edu/~anderson/papers/ospert09.pdf">PDF</a>. </p> </li> <li> <p> B. Brandenburg and J. Anderson, “A Comparison of the M-PCP, D-PCP, and FMLP on LITMUS<sup>RT</sup>”, <cite>Proceedings of the 12th International Conference on Principles of Distributed Systems</cite>, pp. 105-124, December 2008. <a href="http://www.cs.unc.edu/~anderson/papers/opodis08.pdf">PDF</a>. </p> </li> <li> <p> B. Brandenburg, J. Calandrino, and J. Anderson, “On the Scalability of Real-Time Scheduling Algorithms on Multicore Platforms: A Case Study”, <cite>Proceedings of the 29th IEEE Real-Time Systems Symposium</cite>, pp. 157-169, December 2008. <a href="http://www.cs.unc.edu/~anderson/papers/rtss08b.pdf">PDF</a>. </p> </li> <li> <p> B. Brandenburg and J. Anderson, “An Implementation of the PCP, SRP, D-PCP, M-PCP, and FMLP Real-Time Synchronization Protocols in LITMUS<sup>RT</sup>”, <cite>Proceedings of the 14th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications</cite>, pp. 185-194, August 2008. <a href="http://www.cs.unc.edu/~anderson/papers/rtcsa08.pdf">PDF</a>. </p> <p><strong>Note:</strong> The work described in this paper took part in a branch that is currently not part of the main distribution. For reference, we provide the branch as a separate download: </p> <ul> <li> <a href="download/RTCSA08/litmus-rt-RTCSA08.patch">litmus-rt-RTCSA08.patch</a> </li> <li> <a href="download/RTCSA08/liblitmus-RTCSA08.tgz">liblitmus-RTCSA08.tgz</a> </li> <li><a href="download/RTCSA08/SHA256SUMS">SHA256 check sums</a> </li> </ul> <p>Please don't use this version for active development. If you are interested in this work, it would be best to first port the desired features to a current version of LTIMUS<sup>RT</sup> and merge them into the main distribution. </p> </li> <li> <p> A. Block, B. Brandenburg, J. Anderson, and S. Quint, “An Adaptive Framework for Multiprocessor Real-Time Systems”, <cite>Proceedings of the 20th Euromicro Conference on Real-Time Systems</cite>, pp. 23-33, July 2008. <a href="http://www.cs.unc.edu/~anderson/papers/ecrts08b.pdf">PDF</a>. </p> </li> <li> <p> B. Brandenburg, J. Calandrino, A. Block, H. Leontyev, and J. Anderson, “Real-Time Synchronization on Multiprocessors: To Block or Not to Block, to Suspend or Spin?”, <cite> Proceedings of the 14th IEEE Real-Time and Embedded Technology and Applications Symposium</cite>, pp. 342-353, April 2008. <a href="http://www.cs.unc.edu/~anderson/papers/rtas08.pdf">PDF</a>. </p> <p> Extended version, including all graphs: <a href="http://www.cs.unc.edu/~anderson/papers/rtas08along.pdf">PDF</a>. </p> </li> <li> <p> B. Brandenburg, A. Block, J. Calandrino, U. Devi, H. Leontyev, and J. Anderson, "LITMUS<sup>RT</sup>: A Status Report", <cite> Proceedings of the 9th Real-Time Linux Workshop</cite>, pp. 107-123, November 2007. <a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.pdf">PDF</a>. </p> </li> <li> <p> B. Brandenburg and J. Anderson, "Integrating Hard/Soft Real-Time Tasks and Best-Effort Jobs on Multiprocessors", <cite> Proceedings of the 19th Euromicro Conference on Real-Time Systems</cite>, pp. 61-70, July 2007. <a href="http://www.cs.unc.edu/~anderson/papers/ecrts07b.pdf">PDF</a>. </p> </li> <li> <p> J. Calandrino, H. Leontyev, A. Block, U. Devi, and J. Anderson, "LITMUS<sup>RT</sup>: A Testbed for Empirically Comparing Real-Time Multiprocessor Schedulers ", <cite>Proceedings of the 27th IEEE Real-Time Systems Symposium</cite>, pp. 111-123, December 2006. <a href="http://www.cs.unc.edu/~anderson/papers/rtss06b.pdf">PDF</a>. </p> </li> </ol> </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>. LITMUS<sup>RT</sup> is released as a patch against Linux. Additionally, it is also available as a <span class="src">git</span> repository (see <a href="#development">Development</a> below). </p> <p> The current release of LITMUS<sup>RT</sup> is 2010.2. It consists of our Linux kernel modifications in the form of a patch against Linux 2.6.34 and <span class="src">liblitmus</span>, the user-space API for real-time tasks, as well as <span class="src">ft_tools</span>, a collection of tools 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). </p> <h3 class="relname">LITMUS<sup>RT</sup> 2010.2</h3> <div class="release"> <p> Based on Linux 2.6.34. Released in October 2010. </p> <h4>Files:</h4> <ul class="notopmargin"> <li> <a href="download/2010.2/litmus-rt-2010.2.patch">litmus-rt-2010.2.patch</a> </li> <li> <a href="download/2010.2/liblitmus-2010.2.tgz">liblitmus-2010.2.tgz</a> </li> <li> <a href="download/2010.2/ft_tools-2010.2.tgz">ft_tools-2010.2.tgz</a> </li> <li><a href="download/2010.2/SHA256SUMS">SHA256 check sums</a> </li> </ul> <h4>Major changes since LITMUS<sup>RT</sup> 2010.1:</h4> <ul class="notopmargin"> <li> Rebased LITMUS<sup>RT</sup> from Linux 2.6.32 to Linux 2.6.34. </li> <li> Added support for configurable budget enforcement (no enforcement, coarse-grained enforcement on timer ticks, and precise enforcement using high-resolution timers). </li> <li>Add support for one single cluster (all cpus) under C-EDF</li> <li>Made some features optional (C-EDF, PFair, release-master mode).</li> <li>Fixed several link and compile errors.</li> </ul> </div> <h3 class="relname">LITMUS<sup>RT</sup> 2010.1</h3> <div class="release"> <p> Based on Linux 2.6.32. Released in May 2010. </p> <h4>Files:</h4> <ul class="notopmargin"> <li> <a href="download/2010.1/litmus-rt-2010.1.patch">litmus-rt-2010.1.patch</a> </li> <li> <a href="download/2010.1/liblitmus-2010.1.tgz">liblitmus-2010.1.tgz</a> </li> <li> <a href="download/2010.1/ft_tools-2010.1.tgz">ft_tools-2010.1.tgz</a> </li> <li><a href="download/2010.1/SHA256SUMS">SHA256 check sums</a> </li> </ul> <h4>Major changes (since LITMUS<sup>RT</sup> 2008.3):</h4> <ul class="notopmargin"> <li> Rebased LITMUS<sup>RT</sup> from Linux 2.6.24 to Linux 2.6.32. </li> <li> Added support for Intel x86-64 systems. </li> <li> Dropped sparc64 support. </li> <li> Ported Feather-Trace to x86-64. </li> <li> Integrated recent changes in Linux's hrtimer infrastructure, which made the "norq" (no runqueue locks held) callbacks unnecessary. </li> <li> Added the "LITMUS<sup>RT</sup> control device", a portable mechanism for sharing a memory page between the kernel and user space tasks. </li> <li> Re-implemented support for non-preemptive sections on top of the control page. </li> <li> Improved C-EDF plugin. C-EDF now supports different cluster sizes (based on L2 and L3 cache sharing) and supports dynamic changes of cluster size (this requires reloading the plugin). </li> <li> Reimplemented debug tracing on top of Linux's "misc device class" and kfifo buffers. </li> <li> Improved build system of liblitmus. Users no longer have to edit the SConstruct file manually. Instead, they should provide a .config file (see <a href="#install">installation instructions</a>). </li> <li> Added some synchronization to plugin switching to avoid sporadic crashes.</li> <li>Misc. bugfixes.</li> </ul> </div> <p> Please note that the current implementation is a <em>prototype</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. </p> <p class="nobottommargin"> Older releases: <a href="litmus2008.html">LITMUS<sup>RT</sup> 2008 series</a>, <a href="litmus2007.html">LITMUS<sup>RT</sup> 2007 series</a>. </p> </div> <h2 id="install">Installation</h2> <div class="box"> <p class="notopmargin"> The current release of LITMUS<sup>RT</sup> 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 a user-space library that provides the LITMUS<sup>RT</sup> real-time API. Note that the current implementation only works on the Intel x86-32 and x86-64 architectures. </p> <h3>Patching the Kernel</h3> <p class="notopmargin"> The extension to the Linux kernel is released as a patch against Linux 2.6.32. To install the LITMUS<sup>RT</sup> kernel, first <a href="http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.bz2">download the Linux kernel 2.6.32</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.32 wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.bz2 tar xjf linux-2.6.32.tar.bz2 wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2010.1/litmus-rt-2010.1.patch mv linux-2.6.32 litmus2010 # apply the LITMUS RT patch cd litmus2010 patch -p1 < ../litmus-rt-2010.1.patch # create a working kernel configuration # - select HZ=1000 # - enable in-kernel preemptions # - disable NO_HZ # - don't use power management options like frequency scaling # - disable support for group scheduling # - disable "Write protect kernel read-only data structures" (in kernel debug) make menuconfig # compile the kernel make bzImage make modules # proceed to install kernel, build initrd, etc. ... </pre> <p> When configuring the kernel, note that there is a menu (at the very end of the list) 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 configurations</a> that are known to work under QEMU. </p> <h3>Libraries</h3> <p class="notopmargin"> The user-space library for real-time tasks, <span class="src">liblitmus</span>, 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>). In order to compile <span class="src">liblitmus</span>, you need to adjust the variable <span class="src">LITMUS_KERNEL</span> in the <span class="src">.config</span> file to point to your copy of the kernel. The variables required for building <span class="src">liblitmus </span> can be listed using <span class="src"> scons -h </span> command. For reference, we provide a sample <a href="download/2010.1/liblitmus-2010-config"> config </a> file. Sample output of <span class="src"> scons -h </span> is as shown below. </p> <pre class="shell"> scons -h scons: Reading SConscript files ... scons: done reading SConscript files. ============================================= liblitmus --- The LITMUS^RT Userspace Library There are a number of user-configurable build variables. These can either be set on the command line (e.g., scons ARCH=x86) or read from a local configuration file (.config). Run 'scons --dump-config' to see the final build configuration. Build Variables --------------- LITMUS_KERNEL: Where to find the LITMUS^RT kernel. ( /path/to/LITMUS_KERNEL ) default: ../litmus2010 actual: ../litmus2010 ARCH: Target architecture. (x86_64|sparc64|x86|i686) default: x86_64 actual: x86_64 Use scons -H for help about command-line options. </pre> <p class="notopmargin"> To summarize, the <span class="src"> liblitmus </span> can be obtained and compiled with the following commands: </p> <pre class="shell"> cd $DIR wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2010.1/liblitmus-2010.1.tgz tar xzf liblitmus-2010.1.tgz cd liblitmus # change LITMUS_KERNEL in .config to point to the kernel source scons </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">liblitmus</span>. </p> </div> <h2 id="doc">Documentation</h2> <div class="box"> <p class="notopmargin"> Unfortunately, most of the documentation has yet to be written. To get an overview of the architecture of the kernel extension, we recommend reading the paper <a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.pdf">“LITMUS<sup>RT</sup>: A Status Report”</a>. </p> <h3>Real-Time Scheduling Policies</h3> <p class="qa"> The kernel contains the following real-time scheduling policy implementations: </p> <ul> <li> PFAIR, an implementation of the PD<sup>2</sup> algorithm, </li> <li> PSN-EDF, a partitioned EDF (P-EDF) implementation with support for the real-time synchronization protocol FMLP, </li> <li> GSN-EDF, a global EDF (G-EDF) implementation with support for the real-time synchronization protocol FMLP, </li> <li> C-EDF (Clustered EDF), a hybrid of G-EDF and P-EDF, and </li> <li> Linux, a placeholder policy that disables all real-time functionality added by the LITMUS<sup>RT</sup> patch. </li> </ul> <p> Only one policy can be active at any time. Initially (<em>i.e.,</em> during and after boot), the "Linux" policy is active. You can use the tool <span class="src">showsched</span> (part of <span class="src">liblitmus</span>) to display the name of the currently active policy. </p> <h3>Changing the Active Policy</h3> <p class="qa"> You can use the tool <span class="src">setsched</span> (part of <span class="src">liblitmus</span>) to select a new plugin at run time. </p> <div class="screenshot"> <img src="gfx/setsched.png" alt="Screen shot of setsched"/> </div> <p> Only root can change the active policy, and only when there are no real-time tasks present. </p> <p> 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. </p> <h3>Selecting the C-EDF Cluster Size</h3> <p class="qa"> The C-EDF plugin can create clusters based on the sharing of L2 or L3 caches. When the plugin is activated (see above), it configures clusters based on the value last written to <span class="src"> /proc/litmus/cluster_cache</span> (either "L2" or "L3"). Note that the C-EDF must be reloaded (for example by switching to the Linux plugin and back to C-EDF) to enact a change to the desired cluster size; changing the cluster size while C-EDF is active is not supported. </p> <h3>Writing Real-Time Tasks</h3> <p class="qa"> 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, please take a look at these example programs. </p> <h3>Tracing Overheads and Scheduling Decisions</h3> <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>. </p> <p class="nobottommargin"> Please contact the <a href="#collaborators">current maintainer</a> if you have any questions. </p> </div> <h2 id="development">Development</h2> <div class="box"> <p class="nomargin"> Patches and suggestions are very welcome! The current development version of LITMUS<sup>RT</sup> is available as a public <a href="http://git-scm.com/">git</a> repository at <strong>http://www.cs.unc.edu/~anderson/litmus-rt/git</strong> and can be cloned with the following command. </p> <pre class="shell"> git clone http://www.cs.unc.edu/~anderson/litmus-rt/git litmus-rt </pre> <p class="nobottommargin"> Please contact the <a href="#collaborators">current maintainer</a> if you need access to the repositories for the user space libraries and tools. </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 Jasper McChesney of <a href="http://www.breakforsense.net/">Break for Sense Design</a>. <br /> Web design by Bjö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>