About This Guide

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 real-time facilities of IRIX, called REACT, as well as the optional REACT/pro extensions.

This guide is designed to be read online, using InfoSearch. You are encouraged to read it in non-linear order using all the navigation tools that Insight provides. In the online book, the name of a man page (“man page”) is red in color (for example, mpin(2) and sproc(2)). You can click on these names to cause the man page to open automatically in a separate terminal window.

Who This Guide Is For

This guide is written for real-time programmers. You are assumed to be:

  • An expert in the use of your programming language, which must be either C, Ada, or FORTRAN to use the features described here

  • 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 UNIX system programming, although you do need to be familiar with UNIX as an environment for developing software.

What This Guide Contains

Here is a summary of what you will find in the following chapters.

Chapter 1, “Real-Time Programs”, describes the important classes of real-time programs, emphasizing the different kinds of performance requirements they have.

Chapter 2, “How IRIX and REACT/pro Support Real–Time Programs”, gives an overview of the real-time features of IRIX. From these survey topics you can jump to the detailed topics that interest you most.

Chapter 3, “Controlling CPU Workload”, describes how you can isolate a CPU and dedicate almost all of its cycles to your program's use.

Chapter 4, “Using the Frame Scheduler”, describes the REACT/pro Frame Scheduler, which gives you a simple, direct way to structure your real-time program as a group of cooperating processes, efficiently scheduled on one or more isolated CPUs.

Chapter 5, “Optimizing Disk I/O for a Real-Time Program”, describes how to set up disk I/O to meet real-time constraints, including the use of asynchronous I/O and guaranteed-rate I/O.

Chapter 6, “Managing Device Interactions”, summarizes the software interfaces to external hardware, including user-level programming of external interrupts and VME and SCSI devices.

Chapter 7, “Managing User-Level Interrupts”, describes the user-level interrupt (ULI) facility to perform programmed I/O (PIO) from user space. You can use PIO to initiate a device action that leads to a device interrupt, and you can intercept and handle the interrupt in your program.

Appendix A, “Sample Programs”, provides the location of the sample programs that are distributed with the REACT/pro Frame Scheduler and describes them in detail.

Related Publications and Sites

The following books contain more information that can be useful to a real-time programmer.

  • The IRIXview User's Guide tells how to use a graphical performance analysis tool that can be of great help in debugging and tuning a real-time application on a multiprocessor system.

  • Topics in IRIX Programming covers several programming facilities only touched on in this book.

  • MIPS Compiling and Performance Tuning Guide covers compiler use.

  • The IRIX Device Driver Programmer's Guide gives details on all types of device control, including programmed I/O (PIO) and direct memory access (DMA) from the user process, as well as discussing the design and construction of device drivers and other kernel-level modules.

  • Administration of an SGI system is covered in a family of books, including:

    • IRIX Admin: System Configuration and Operation

    • IRIX Admin: Disks and Filesystems

    • IRIX Admin: Peripheral Devices

  • For details of the architecture of the CPU, processor cache, processor bus, and virtual memory, a number of publications are available for downloading from the MIPS home page, http://www.mips.com.

  • For programming intercomputer connections using sockets, see the IRIX Network Programming Guide.

  • For coding functions in assembly language, see the MIPSpro Assembly Language Programmer's Guide.

  • For information about the physical description of the XIO-VME option for Origin and Onyx 2 systems, see the Origin 2000 and Onyx 2 VME Option Owner's Guide.

  • For information about the SGI Origin 3000 series and Onyx 3000 series, see the following site:


In addition, SGI offers training courses in Real-Time Programming and in Parallel Programming.

Obtaining Publications

You can obtain SGI documentation in the following ways:

  • 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.

  • If it is installed on your SGI system, you can use InfoSearch, an online tool that provides a more limited set of online books, release notes, and man pages. With an IRIX system, select Help from the Toolchest, and then select InfoSearch. Or you can type infosearch on a command line.

  • You can also view release notes by typing either grelnotes or relnotes on a command line.

  • You can also view man pages by typing man <title> on a command line.


The following conventions are used throughout this publication:




This fixed-space font denotes literal items such as commands, files, routines, path names, signals, messages, and programming language structures.


Italic typeface denotes variable entries and words or concepts being defined.

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.)


Brackets enclose optional portions of a command or directive line.


Ellipses indicate that a preceding element can be repeated.


Man page section identifiers appear in parentheses after man page names.

GUI element

This font denotes the names of graphical user interface (GUI) elements such as windows, screens, dialog boxes, menus, toolbars, icons, buttons, boxes, fields, and lists.

Reader Comments

If you have comments about the technical accuracy, content, or organization of this document, contact SGI. Be sure to include the title and document number of the manual with your comments. (Online, the document number is located in the front matter of the manual. In printed manuals, the document number can be found on the back cover.)

You can contact SGI in any of the following ways:

  • Send e-mail to the following address:

    [email protected]

  • Use the Feedback option on the Technical Publications Library Web page:


  • Contact your customer service representative and ask that an incident be filed in the SGI incident tracking system.

  • Send mail to the following address:

    Technical Publications
    600 Amphitheatre Parkway, M/S 535
    Mountain View, California 94043-1351

SGI values your comments and will respond to them promptly.