A real-time program is one that must maintain a fixed timing relationship to external hardware. In order to respond to the hardware quickly and reliably, a real-time program must have special support from the system software and hardware. This guide describes the facilities of SGI® REACT™ real-time for Linux®.
This guide is written for real-time programmers. You are assumed to be:
An expert in the C programming language
Knowledgeable about the hardware interfaces used by your real-time program
Familiar with system-programming concepts such as interrupts, device drivers, multiprogramming, and semaphores
You are not assumed to be an expert in Linux system programming, although you do need to be familiar with Linux as an environment for developing software.
This guide contains the following:
Chapter 1, “Introduction”, describes the important classes of real-time programs and applications, summarizes the features that REACT provides, and lists installation requirements
Chapter 2, “Linux and REACT Support for Real-Time Programs”, provides an overview of how Linux and REACT support real-time programs
Chapter 3, “External Interrupts”, discusses the external interrupts feature
Chapter 4, “CPU Workload”, describes how you can isolate a CPU and dedicate almost all of its cycles to your program's use
Chapter 5, “Using the Frame Scheduler”, describes how to structure a real-time program as a family of independent, cooperating activities, running on multiple CPUs, scheduled in sequence at the frame rate of the application
Chapter 6, “Disk I/O Optimization”, describes how to set up disk I/O to meet real-time constraints, including the use of memory-mapped and asynchronous I/O
Chapter 7, “PCI Devices”, discusses the Linux PCI interface
Chapter 8, “User-Level Interrupts”, discusses the facility that is intended to simplify the creation of device drivers for unsupported devices
Chapter 9, “REACT System Configuration”, explains how to configure real-time CPUs
Chapter 10, “Using the REACT Library”, explains how to use the REACT C application programming interface (API) to change the configuration of real-time CPUs from program control without affecting the boot-up configuration for real-time processing
Chapter 11, “SLES LTTng”, discusses the Linux Trace Toolkit Next Generation (LTTng) that generates traces for kernel and userspace events such as interrupt handling scheduling, and system calls
Chapter 12, “Troubleshooting”, discusses diagnostic tools that apply to real-time applications and common problems
Appendix A, “libreact API Example”, provides excerpts of application modules to be used with REACT
Appendix B, “High-Resolution Timer Example ”, demonstrates the use of SGI high-resolution timers
Appendix C, “Sample User-Level Interrupt Programs”, contains a sample program that shows how user-level interrupts are used
The following may be useful:
SGI technical publications:
The user guide for your SGI system
Linux Configuration and Operations Guide
SGI L1 and L2 Controller Software User's Guide
TP9500 Remote Mirror Premium Feature-Factory
The Linux Programmer's Guide (Sven Goldt, Sven van der Meer, Scott Burkett, Matt Welsh)
The Linux Kernel (David A Rusling)
Linux Kernel Module Programming Guide (Ori Pomerantz)
Linux Device Drivers, third edition, by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman, February 2005 (ISBN: 0-596-00590-3):
For more information about SGI servers, see:
The following conventions are used throughout this document:
| Convention | Meaning | |
| [ ] | Brackets enclose optional portions of a command or directive line. | |
| command | This fixed-space font denotes literal items such as commands, files, routines, path names, signals, messages, and programming language structures. | |
| ... | Ellipses indicate that a preceding element can be repeated. | |
| manpage(x) | Man page section identifiers appear in parentheses after man page names. | |
| user input | This bold, fixed-space font denotes literal items that the user enters in interactive sessions. (Output is shown in nonbold, fixed-space font.) | |
| variable | Italic typeface denotes variable entries and words or concepts being defined. |
| ms (or msec) | Millisecond (1 ms is .001 seconds) |
| ns | Nanosecond (1 ns is .000000001 seconds) | |
| us (or usec) | Microsecond (1 us is .000001 seconds) |
You can obtain SGI documentation as follows:
See the SGI Technical Publications Library at http://docs.sgi.com. Various formats are available. This library contains the most recent and most comprehensive set of online books, release notes, man pages, and other information.
You can view man pages by typing man title at a command line.
If you have comments about the technical accuracy, content, or organization of this publication, contact SGI. Be sure to include the title and document number of the publication with your comments. (Online, the document number is located in the front matter of the publication. In printed publications, the document number is located at the bottom of each page.)
You can contact SGI in either of the following ways:
Send e-mail to the following address:
Contact your customer service representative and ask that an incident be filed in the SGI incident tracking system:
SGI values your comments and will respond to them promptly.