This documentation is no longer maintained. For documentation of the current version of emc2, please see http://www.linuxcnc.org/docview/html

intro

NAME
DESCRIPTION
HEADER FILES
REALTIME CONSIDERATIONS
RTAPI STATUS CODES

NAME

rtapi − Introduction to the RTAPI API

DESCRIPTION

RTAPI is a library providing a uniform API for several real time operating systems. As of ver 2.1, RTLinux, RTAI, and a pure userspace simulator are supported.

HEADER FILES

rtapi.h

The file rtapi.h defines the RTAPI for both realtime and non-realtime code. This is a change from Rev 2, where the non-realtime (user space) API was defined in ulapi.h and used different function names. The symbols RTAPI and ULAPI are used to determine which mode is being compiled, RTAPI for realtime and ULAPI for non-realtime.

rtapi_math.h

The file rtapi_math.h defines floating-point functions and constants. It should be used instead of <math.h> in rtapi real-time components.

rtapi_string.h

The file rtapi_string.h defines string-related functions. It should be used instead of <string.h> in rtapi real-time components.

REALTIME CONSIDERATIONS

Userspace code

Certain functions are not available in userspace code. This includes functions that perform direct device access such as rtapi_inb(3).

Init/cleanup code

Certain functions may only be called from realtime init/cleanup code. This includes functions that perform memory allocation, such as rtapi_shmem_new(3).

Realtime code

Only a few functions may be called from realtime code. This includes functions that perform direct device access such as rtapi_inb(3). It excludes most Linux kernel APIs such as do_gettimeofday(3) and many rtapi APIs such as rtapi_shmem_new(3).

Simulator

For an RTAPI module to be buildable in the "sim" environment (fake realtime system without special privileges), it must not use any linux kernel APIs, and must not use the RTAPI APIs for direct device access such as rtapi_inb(3). This automatically includes any hardware device drivers, and also devices which use Linux kernel APIs to do things like create special devices or entries in the /proc filesystem.

RTAPI STATUS CODES

RTAPI_SUCCESS

call successfull

RTAPI_UNSUP

function not supported

RTAPI_BADID

bad task, shmem, sem, or fifo ID

RTAPI_INVAL

invalid argument

RTAPI_NOMEM

not enough memory

RTAPI_LIMIT

resource limit reached

RTAPI_PERM

permission denied

RTAPI_BUSY

resource is busy or locked

RTAPI_NOTFND

object not found

RTAPI_FAIL

operation failed