Copyright (C) 1996, 1997 Michael Barabanov



                        Real-Time features in Linux


This file covers RT-Linux version 0.5.


                         Overview

This variant of Linux allows to handle time-critical tasks.  This is
accomplished mainly by insertion of Real-Time Kernel layer between Linux
kernel and hardware interrupts. This eliminates the main source of Linux
unsuitability for time-critical processing - big interrupt latency.

Under RT-kernel Linux kernel is just another real-time task.  It has
the lowest priority, and can be preempted when needed.

This structure imposes some restrictions on RT-tasks. They can not easily
use Linux drivers, networking, etc.  They can, however, transfer data
to/from ordinary Linux processes through memory buffers.

Simple FIFOs are implemented for transferring data between real-time
processes and Linux processes.

A typical application consists of real-time tasks that deal with hardware
directly, e.g. acquire data from a device, and Linux tasks performing
non-real-time processing, such as recording data on disk, sending it
over network, etc.

The shortest feasible period for a real-time task under the RT-Linux scheduler
is currently about 150 us on Pentium 120. Interrupt driven tasks can have smaller
periods.

The RT-kernel does not protect from overloads.  It is conceivable that
real-time tasks can consume all CPU power. In this case, having the
lowest priority, Linux kernel will never get a chance to run, and the
system will freeze.

RT-tasks execute in the kernel address space at the kernel privilege
level. For example, they can be implemented as Linux modules.


                                   API


Interfaces to services of RT-Linux are described in separate files:

	rt_prio_sched.txt	-- A simple fixed-priority scheduler.

	rt_fifo.txt		-- Real-time FIFOs

	rt_time.txt		-- Functions related to time

	rt_irq.txt		-- Functions interrupt handling

