The source code of the LITMUSRT project is hosted on GitHub.
The three main repositories provide
The LITMUSRT kernel repository contains the LITMUSRT patches on top of the Linux kernel. The current main branch is
linux-4.9-litmus and, as the name suggests, is based on Linux 4.9.
The liblitmus repository contains both a user-space library for static linking and essential standalone tools needed to configure a LITMUSRT system. The
master branch is the main branch representing the latest version.
The tracing tools repository contains helper tools and scripts for both overhead and schedule tracing in LITMUSRT. The main branch is the
To obtain the latest LITMUSRT version, simply clone each of the three repositories.
git clone https://github.com/LITMUS-RT/litmus-rt.git git clone https://github.com/LITMUS-RT/liblitmus.git git clone https://github.com/LITMUS-RT/feather-trace-tools.git
Please refer to the installation instructions for additional details.
First, whenever possible, please use the latest version, as represented by the tips of the
linux-4.9-litmus branch in the kernel repository and the
master branches in the other repositories.
The main branches are slow-moving and we do our best to keep them stable. There is hence usually no good reason to pick an older release and to forgo the latest improvements and fixes in the main branches.
That said, to obtain a specific release, simply checkout the release with the corresponding tag. For example, to check out the 2017.1 release, run the following command in each of the cloned repositories.
git checkout 2017.1
Alternatively, one may download an archive corresponding for any release from GitHub:
Based on Linux 4.9.30. Released in May 2017.
Rebased to Linux version 4.9. Major changes in “scheduling in progress” tracking and the
hrtimer API, among many others.
Extend plugin API to allow plugins to optionally change task parameters at runtime via the
task_change_params() plugin callback (opt-in, none of the stock plugins support this at the moment).
Improved handling of wake-ups and job releases triggered by
Fix Feather-Trace compilation on ARM (Namhoon Kim, Andrea Bastoni).
Better tracking of job completions of sporadic tasks.
Basic support for random inter-arrival delays in
Improved argument handling in user-space tools.
Support for compiling liblitmus on ARM64.
Various new time-related helper functions in
liblitmus such as
Older releases consisted of our Linux kernel modifications in the form of a patch against mainline Linux and liblitmus, the user-space API for real-time tasks, as well as ft_tools, a collection of tools used for tracing with Feather-Trace (which is part of the LITMUSRT patch). The following downloads are only of historic interest.
Based on Linux 4.1.3. Released in June 2016.
new syscall get_current_budget
Pratyush Patel contributed much improved hrtimer_start_on() support
LITMUSRT services are now invoked via ioctl() calls
new user-space interfaces and tool (resctrl) to set up reservations
improved help messages of utilities in liblitmus
Based on Linux 4.1.3. Released in August 2015.
Geoffrey Tran (USC/ISI) added support for running LITMUSRT under Xen/x86
a new wrapper script ft-trace-overheads to simplify overhead tracing
Based on Linux 3.10.41. Released in June 2014.
remove integration with Linux’s system tick: LITMUSRT now works with "tickless" kernels (i.e., NO_HZ is supported)
The PFAIR plugin now uses plugin-local hrtimers to trigger quantum boundaries.
added QUANTUM_BOUNDARY Feather-Trace event (for PFAIR)
performance and bug fixes in the P-FP plugin’s PCP, MPCP, and FMLP+ implementations
bugfix in TS_SYSCALL_IN_END
Migration support in liblitmus now works for >=32 CPUs
Based on Linux 3.10.5. Released in April 2014.
Added CONFIG_PREFER_LOCAL_LINKING option to avoid superfluous migrations under G-EDF and C-EDF
New, much improved interface for reporting CPU domain topology to userspace (see /proc/litmus/cpus and /proc/litmus/domains)
Feather-Trace: support TSC offset calibration (-c option in ftcat, for systems with non-aligned TSCs)
P-FP: add implementation of Distributed FIFO Locking Protocol (DFLP)
Export LITMUSRT time stamps in ftrace records
Bug fix: Avoid rare crashes caused by interaction with stop_machine scheduling class
Based on Linux 3.10.5. Released in August 2013.
Based on Linux 3.0. Released in December 2012.
feather-trace-tools: improved outlier detection; statistical outlier filtering is no longer required (for details, see B. Brandenburg, “Improved Analysis and Evaluation of Real-Time Semaphore Protocols for P-FP Scheduling”, RTAS 2013, available here)
Based on Linux 3.0. Released in August 2012.
Integration of LITMUSRT sched_trace_XXX events with Linux tracepoint infrastructure (i.e., kernelshark support).
Based on Linux 3.0. Released in January 2012.
Rebased LITMUSRT from Linux 2.6.36 to Linux 3.0.
Based on Linux 2.6.36. Released in January 2011.
Rebased LITMUSRT from Linux 2.6.34 to Linux 2.6.36.
Feather-Trace devices are now allocated dynamically and are properly registered with sysfs. This avoids bugs due to major device number collisions and removes the need for manual device node creation (on a system with standard udev rules).
Various bug fixes concerning C-EDF cluster size changes. The cluster size can now be configured with the file /proc/litmus/plugins/C-EDF/cluster.
Dropped SCons as the build system for liblitmus and reverted to makefiles.
Added scope and TAG file generation to liblitmus.
st_trace can now be controlled with signals (part of ft_tools).
Older releases of LITMUSRT are available at UNC’s old LITMUSRT webpage: