= Downloads = The source code of LITMUS^RT^ is made available as open source under the terms of the GNU General Public License (GPL2). LITMUS^RT^ is released as a patch against Linux. Additionally, it is also available as a [[Repositories|git repository]]. == Current Release == The current release is made available on the [[http://www.litmus-rt.org/download.html|LITMUS^RT^ homepage]]. {{{#!wiki caution In almost all cases, it is preferable to clone the git repositories instead of downloading and applying patches manually. }}} == Previous Releases == 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 LITMUS^RT^ patch). === LITMUS-RT Version 2016.1 === Based on Linux 4.1.3. Released in June 2016. ==== Files: ==== * [[http://www.litmus-rt.org/releases/2016.1/litmus-rt-2016.1.patch|litmus-rt-2016.1.patch]] * [[http://www.litmus-rt.org/releases/2016.1/liblitmus-2016.1.tgz|liblitmus-2016.1.tgz]] * [[http://www.litmus-rt.org/releases/2016.1/ft_tools-2016.1.tgz|ft_tools-2016.1.tgz]] * [[http://www.litmus-rt.org/releases/2016.1/SHA256SUMS|SHA256 check sums]] ==== 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. ==== Files: ==== * [[http://www.litmus-rt.org/releases/2015.1/litmus-rt-2015.1.patch|litmus-rt-2015.1.patch]] * [[http://www.litmus-rt.org/releases/2015.1/liblitmus-2015.1.tgz|liblitmus-2015.1.tgz]] * [[http://www.litmus-rt.org/releases/2015.1/ft_tools-2015.1.tgz|ft_tools-2015.1.tgz]] * [[http://www.litmus-rt.org/releases/2015.1/SHA256SUMS|SHA256 check sums]] ==== 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 LITMUS^RT^ 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. ==== Files: ==== * [[http://www.litmus-rt.org/releases/2014.2/litmus-rt-2014.2.patch|litmus-rt-2014.2.patch]] * [[http://www.litmus-rt.org/releases/2014.2/liblitmus-2014.2.tgz|liblitmus-2014.2.tgz]] * [[http://www.litmus-rt.org/releases/2014.2/ft_tools-2014.2.tgz|ft_tools-2014.2.tgz]] * [[http://www.litmus-rt.org/releases/2014.2/SHA256SUMS|SHA256 check sums]] ==== Major changes (since LITMUS-RT 2014.1): ==== * now based on Linux 3.10.41 * remove integration with Linux's system tick: LITMUS^RT^ 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. ==== Files: ==== * [[http://www.litmus-rt.org/releases/2014.1/litmus-rt-2014.1.patch|litmus-rt-2014.1.patch]] * [[http://www.litmus-rt.org/releases/2014.1/liblitmus-2014.1.tgz|liblitmus-2014.1.tgz]] * [[http://www.litmus-rt.org/releases/2014.1/ft_tools-2014.1.tgz|ft_tools-2014.1.tgz]] * [[http://www.litmus-rt.org/releases/2014.1/SHA256SUMS|SHA256 check sums]] ==== 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 LITMUS^RT^ 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. ==== Files: ==== * [[http://www.litmus-rt.org/releases/2013.1/litmus-rt-2013.1.patch|litmus-rt-2013.1.patch]] * [[http://www.litmus-rt.org/releases/2013.1/liblitmus-2013.1.tgz|liblitmus-2013.1.tgz]] * [[http://www.litmus-rt.org/releases/2013.1/ft_tools-2013.1.tgz|ft_tools-2013.1.tgz]] * [[http://www.litmus-rt.org/releases/2013.1/SHA256SUMS|SHA256 check sums]] ==== 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. ==== Files: ==== * [[http://www.litmus-rt.org/releases/2012.3/litmus-rt-2012.3.patch|litmus-rt-2012.3.patch]] * [[http://www.litmus-rt.org/releases/2012.3/liblitmus-2012.3.tgz|liblitmus-2012.3.tgz]] * [[http://www.litmus-rt.org/releases/2012.3/ft_tools-2012.3.tgz|ft_tools-2012.3.tgz]] * [[http://www.litmus-rt.org/releases/2012.3/SHA256SUMS|SHA256 check sums]] ==== 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, [[https://www.mpi-sws.org/~bbb/papers/index.html|available here]]) === LITMUS-RT Version 2012.2 === Based on Linux 3.0. Released in August 2012. ==== Files: ==== * [[http://www.litmus-rt.org/releases/2012.2/litmus-rt-2012.2.patch|litmus-rt-2012.2.patch]] * [[http://www.litmus-rt.org/releases/2012.2/liblitmus-2012.2.tgz|liblitmus-2012.2.tgz]] * [[http://www.litmus-rt.org/releases/2012.2/ft_tools-2012.2.tgz|ft_tools-2012.2.tgz]] * [[http://www.litmus-rt.org/releases/2012.2/SHA256SUMS|SHA256 check sums]] ==== 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., [[http://rostedt.homelinux.com/kernelshark/|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. ==== Files: ==== * [[http://www.litmus-rt.org/releases/2012.1/litmus-rt-2012.1.patch|litmus-rt-2012.1.patch]] * [[http://www.litmus-rt.org/releases/2012.1/liblitmus-2012.1.tgz|liblitmus-2012.1.tgz]] * [[http://www.litmus-rt.org/releases/2012.1/ft_tools-2012.1.tgz|ft_tools-2012.1.tgz]] * [[http://www.litmus-rt.org/releases/2012.1/SHA256SUMS|SHA256 check sums]] ==== Major changes (since LITMUS-RT 2011.1): ==== * Rebased LITMUS^RT^ 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. ==== Files: ==== * [[http://www.litmus-rt.org/releases/2011.1/litmus-rt-2011.1.patch|litmus-rt-2011.1.patch]] * [[http://www.litmus-rt.org/releases/2011.1/liblitmus-2011.1.tgz|liblitmus-2011.1.tgz]] * [[http://www.litmus-rt.org/releases/2011.1/ft_tools-2011.1.tgz|ft_tools-2011.1.tgz]] * [[http://www.litmus-rt.org/releases/2011.1/SHA256SUMS|SHA256 check sums]] ==== Major changes (since LITMUS-RT 2010.2): ==== * Rebased LITMUS^RT^ 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 LITMUS^RT^ are available at UNC's old LITMUS^RT^ webpage: * [[http://www.cs.unc.edu/~anderson/litmus-rt/litmus2010.html|2010 series]] * [[http://www.cs.unc.edu/~anderson/litmus-rt/litmus2008.html|2008 series]] * [[http://www.cs.unc.edu/~anderson/litmus-rt/litmus2007.html|2007 series]]