Real Time Working Group

Real-Time Working Group
This page will collect the publicly available information about the activities of the real-time working group.

Charter
The real-time working group will work to improve the real-time capabilities of the Linux operating system to address the range of real-time requirements for consumer electronics devices.

The working group will establish the real-time requirements for consumer electronics devices and evaluate the suitability of candidate architectures and implementations to satisfy those requirements.

Scope
The scope of the real-time working group will include the kernel as well as user-level libraries (e.g, Native POSIX Thread Library) that collectively provide the run-time environment with suitable real-time characteristics. In addition, the group will also focus on tools for timing analysis.

The working group may address the real-time requirements through the following technology areas:

the POSIX real-time features already available in Linux.
 * 1) Improved real-time capabilities for applications that use the

2. New POSIX real-time features that are not currently available in Linux.

3. New resource management techniques (such as those offered by the the notion of resource kernel) that extend beyond the basic preemptive priority resource management.

4. Preservation of real-time capabilities for applications that use the rich functionality offered by Linux (e.g., applications that use file systems or networking should also be able to achieve real-time behavior).

5. Tools to understand and debug the timing behavior of systems.

6. Interaction of real-time behavior with power-management.

Organization
The working group is chaired by Manas Saksena. You can contact him directly at manas.saksena@timesys.com.

Implementations
The following patches have been submitted to the RTWG mailing list.

Interrupt Priorities + Interrupt Threads + Soft IRQ Threads
This patch implements a priority based interrupts that includes interrupt priorities, interrupt thread, and softirq threads. The patch is for 2.6.0 ppc (IBM PowerPC 405).

This patch was submitted by Norio Nakagawa (Fujitsu).

[[Media:linux-2.6.0-PriorityBasedIntr.diff]]

Interrupt Threads + Soft IRQ Threads
This patch that implements "irq-threads" feature on 2.6.4. The feature is enabled by the option CONFIG_IRQ_THREADS (which depends on the option CONFIG_SOFTIRQ_THREADS). Both options depend on CONFIG_PREEMPT. This patch is only for x86, but it is relatively easy to port it to other architectures.

When the feature is turned on, a kernel thread is created for each IRQ (unless, the ISR is installed with SA_NOTHREAD option). In the main IRQ handling function, instead of directly executing the installed handler, the code wakes up the corresponding kernel thread, which executes the ISRs. The flag SA_NOTHREAD can be used at the time of installing an ISR to tell the kernel that the ISR should not be executed in thread context. The patch uses this option for various input drivers (keyboard, mouse, etc.) since they do not function well when run in thread context.

The patch also turns all softirq processing into thread context as well (otherwise, it will not make much sense).

The patch was submitted by Manas Saksena (TimeSys). The implementation was done by Scott Wood (TimeSys).

[[Media:linux-2.6.4-irq-threads.patch]]