The source code of LITMUSRT is made available as open source under the terms of the GNU General Public License (GPL2). LITMUSRT is released as a patch against Linux. Additionally, it is also available as a git repository.
The current release is made available on the LITMUS^RT^ homepage.
In almost all cases, it is preferable to clone the git repositories instead of downloading and applying patches manually.
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).
LITMUS-RT Version 2016.1
Based on Linux 4.1.3. Released in June 2016.
Major changes (since LITMUS-RT 2015.1):
new syscall get_current_budget
- export more job stats in control page, including current deadline
Pratyush Patel contributed much improved hrtimer_start_on() support
LITMUS^RT services are now invoked via ioctl() calls
- new scheduler plugin: P-RES (partitioned reservations)
new user-space interfaces and tool (resctrl) to set up reservations
- add a number of callbacks to LITMUS^RT plugins
improved help messages of utilities in liblitmus
- vastly improved tooling and documentation as part of feather-trace-tools (ft_tools)
LITMUS-RT Version 2015.1
Based on Linux 4.1.3. Released in August 2015.
Major changes (since LITMUS-RT 2014.2):
- now based on Linux 4.1.3
- stability fixes in P-FP, PFAIR, GSN-EDF, and C-EDF
Geoffrey Tran (USC/ISI) added support for running LITMUSRT under Xen/x86
a new wrapper script ft-trace-overheads to simplify overhead tracing
LITMUS-RT Version 2014.2
Based on Linux 3.10.41. Released in June 2014.
Major changes (since LITMUS-RT 2014.1):
- now based on Linux 3.10.41
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
LITMUS-RT Version 2014.1
Based on Linux 3.10.5. Released in April 2014.
Major changes (since LITMUS-RT 2013.1):
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)
- liblitmus: added Doxygen documentation
- liblitmus: play nicely with C++ namespaces
Feather-Trace: support TSC offset calibration (-c option in ftcat, for systems with non-aligned TSCs)
- Feather-Trace: Restructured to use per-CPU recording buffers to reduce tracing overheads
- P-FP: Fix interaction of PCP and DPCP semaphores
P-FP: add implementation of Distributed FIFO Locking Protocol (DFLP)
- PSN-EDF: support arbitrary deadlines in SRP implementation
- Tasks are forced to cease being real-time tasks before exiting
Export LITMUSRT time stamps in ftrace records
Bug fix: Avoid rare crashes caused by interaction with stop_machine scheduling class
- Bug fix: Fix cache inconsistencies of the control page on ARM
- Misc. build, bug and performance fixes
LITMUS-RT Version 2013.1
Based on Linux 3.10.5. Released in August 2013.
Major changes (since LITMUS-RT 2012.3):
- Restructured kernel source tree as a proper patch set.
- Rebased to current stable Linux version (3.10.5).
- Fixed admission of suspended tasks.
- Fixed several build failures in corner-case configurations.
- Disabled timer coalescing for LITMUS^RT tasks in Linux timer API.
- Increased maximum Feather-Trace buffer size (using vmalloc()).
- Various code cleanups and reliability fixes.
- Support early job releasing in EDF-based plugins.
- Differentiate between SPORADIC and PERIODIC tasks.
- Fixed race conditions in synchronous task set release support.
- Reimplemented plugin switching code.
- Added checks to prevent nesting of LITMUS^RT locks.
- Added a virtual device for mmap()'ing uncached memory regions.
LITMUS-RT Version 2012.3
Based on Linux 3.0. Released in December 2012.
Major changes (since LITMUS-RT 2012.2):
- configurable EDF tie-breaks (choose from one of four methods: lateness, normalized tardiness, uniform hashing, PID).
- many Feather-Trace improvements, including support for userspace-reported system call overhead tracing (via control page)
- IRQ counts are now exported to the control page
- latency reduction when carrying out synchronous task set releases
- fix of preemption logic in P-FP and PSN-EDF plugins
- various improvements in the P-FP plugin
- misc. bug and compile fixes (esp. on ARM)
- liblitmus: new convenience functions lt_sleep() and get_nr_ts_release_waiters()
- liblitmus: improved test suite
- feather-trace-tools: ftsort gained the -v (verbose) and -s (simulate) flags, which are useful for outlier debugging
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)
LITMUS-RT Version 2012.2
Based on Linux 3.0. Released in August 2012.
Major changes (since LITMUS-RT 2012.1):
- Added P-FP (partitioned fixed-priority) plugin with support for the PCP, DPCP, and MPCP.
- Added support for arbitrary deadlines.
Integration of LITMUS^RT sched_trace_XXX events with Linux tracepoint infrastructure (i.e., kernelshark support).
- Improved Feather-Trace triggers (reduced register pressure)
- Avoidance of "minor" page faults in control page
- Fixed kernel crash related to precise budget enforcement
- Improved liblitmus test suite
LITMUS-RT Version 2012.1
Based on Linux 3.0. Released in January 2012.
Major changes (since LITMUS-RT 2011.1):
Rebased LITMUSRT from Linux 2.6.36 to Linux 3.0.
- Added cache-affinity aware migrations to GSN-EDF and C-EDF.
- PFAIR and C-EDF now support the release-master feature.
- Feather-Trace can now measure interrupt interference.
- PFAIR now supports sporadic task releases.
- PFAIR now implements early-releasing of subtasks (i.e., work-conserving scheduling).
LITMUS-RT Version 2011.1
Based on Linux 2.6.36. Released in January 2011.
Major changes (since LITMUS-RT 2010.2):
Rebased LITMUSRT from Linux 2.6.34 to Linux 2.6.36.
- Added support for the ARM architecture (tested on a PB11MPCore baseboard with a four-core ARM11 MPCore CPU).
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).
- Improved debug tracing output and made trace buffer size configurable.
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.
- Various KConfig cleanups and improvements.
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: