====== Documentation ======
In order to fulfill the requirements of a real-time system, a system
must react to an external event like an interrupt within a defined time
frame. Therefore several mechanisms, configurations and implementation
rules have to be considered.
----
===== HOWTOs =====
There are three categories of HOWTOs:
* [[realtime:documentation:howto:applications:start|RTOS and RT application]]
* [[realtime:documentation:howto:debugging:start|RT latency debugging]]
* [[realtime:documentation:howto:tools:start|RT tools and utilities]]
===== Technical Basics =====
Currently running tasks with low priority must be preempted to allow
the real-time critical task to run. Preemption depends on the rules of
the task’s scheduling policy. Another important aspect in a real-time
system is the guaranteeing the exclusive use of certain resources for
real-time tasks.
[[realtime:documentation:technical_basics:start|Read more about technical basics]]
===== Technical details of PREEMPT_RT patch =====
The main aim of the PREEMPT_RT patch is to //minimize the amount of kernel code that is non-preemptible// ((Paul McKenney. A realtime preemption overview. [[https://lwn.net/Articles/146861/]])). Therefore several substitution mechanisms and new mechanisms are implemented.
[[realtime:documentation:technical_details:start|Read more about technical details]]
===== Publications =====
Several real-time related publications can help broaden your knowledge
about real-time systems. Regarding PREEMPT_RT, a recent survey of available scientific works
[[https://dl.acm.org/citation.cfm?id=3297714|have been published]] ([[https://re.public.polimi.it/handle/11311/1076057|open access link]]).
[[realtime:documentation:publications|Read more about publications]]
===== Known Limitations =====
Some functionality is not available on RT because its implementation
is not compatible with RT. Those limitations may apply to the to the
kernel as a whole or may apply to specific architecture or platforms.
[[realtime:documentation:known_limitations|Read more about known limitations]]
===== Stable RT Releases =====
If the PREEMPT_RT patch was ported to a Linux kernel version that is flagged as a [[https://kernel.org|stable release at kernel.org]], then that port will continue to be forward ported with each new stable release for that kernel version. The stable kernels can be cloned from the [[https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git/|stable git repository]] as well as downloaded as [[https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/|single patches or a tarball of a quilt series of patches]].
The PREEMPT_RT stable releases are updated in two fashions.
* Merged with the upstream Linux stable kernel.
* Backports of commits from the [[https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-rt-devel.git/|current PREEMPT_RT development repository]]
Tagging policy of the PREEMPT_RT stable releases. Each PREEMPT_RT stable release is tagged with the version number of the upstream Linux stable kernel as well as its own "-rt" counter that is appended. The -rt counter will increment for the following:
* When forward ported to the latest upstream Linux stable version.
* When any merge with a upstream Linux stable causes a conflict.
* When a backport of the PREEMPT_RT development branch is done.
A backport will not be done with a forward port of a stable version. They will be done separately, and tagged separately.
The "-rebase" branch is how the series of patches are created. The "-rebase" is only done for forward ports to the latest upstream Linux stable versions, and for backports of the PREEMPT_RT development branch. It is not done for a conflict with a upstream Linux stable merge, unless that stable version is the latest one. As the name suggests, the "-rebase" branch will rebase, to allow each commit added by the PREEMPT_RT code to be applied in the order to the upstream Linux stable version it is based on. This is not the case with the normal "-rt" branch, which is never rebased.
----
Go back to [[realtime:start|Real-Time Main Page]]