BESCHREIBUNG
RTAPI ist eine Bibliothek, die eine einheitliche API für verschiedene Echtzeitbetriebssysteme bereitstellt. Seit LinuxCNC 2.7, werden POSIX-Threads und RTAI unterstützt.
HEADER-DATEIEN
rtapi.h
Die Datei rtapi.h definiert die RTAPI sowohl für Echtzeit- als auch für Nicht-Echtzeit-Code. Dies ist eine Änderung gegenüber Rev 2, wo die Nicht-Echtzeit-API in ulapi.h definiert war und andere Funktionsnamen verwendete. Die Symbole RTAPI und ULAPI werden verwendet, um zu bestimmen, welcher Modus kompiliert wird, RTAPI für Echtzeit und ULAPI für Nicht-Echtzeit.
rtapi_math.h
Die Datei rtapi_math.h definiert Gleitkommafunktionen und Konstanten. Sie sollte anstelle von <math.h> in rtapi-Echtzeitkomponenten verwendet werden.
rtapi_string.h
Die Datei rtapi_string.h definiert string-bezogene Funktionen. Sie sollte anstelle von <string.h> in rtapi-Echtzeitkomponenten verwendet werden.
rtapi_byteorder.h
Diese Datei definiert die Präprozessormakros RTAPI_BIG_ENDIAN, RTAPI_LITTLE_ENDIAN und RTAPI_FLOAT_BIG_ENDIAN als wahr oder falsch, je nach den Eigenschaften des Zielsystems. Es sollte anstelle von <endian.h> (Userspace) oder <linux/byteorder.h> (Kernelspace) verwendet werden.
rtapi_limits.h
Diese Datei definiert den Minimal- und Maximalwert einiger grundlegender Integraltypen, wie INT_MIN und INT_MAX. Sie sollte anstelle von <limits.h> verwendet werden, da diese Header-Datei für Kernel-Module nicht verfügbar ist.
REALTIME CONSIDERATIONS
Nicht-Echtzeit-Code
Bestimmte Funktionen sind im Nicht-Echtzeit-Code nicht verfügbar. Dazu gehören Funktionen, die einen direkten Gerätezugriff ermöglichen, wie z.B. rtapi_inb(3).
Initialisierungs-/Aufräumungscode
Bestimmte Funktionen dürfen nur von Echtzeit-Init/Cleanup-Code aufgerufen werden. Dazu gehören Funktionen, die eine Speicherzuweisung vornehmen, wie rtapi_shmem_new(3).
Echtzeit-Code
Nur einige wenige Funktionen dürfen von Echtzeitcode aus aufgerufen werden. Dazu gehören Funktionen, die einen direkten Gerätezugriff durchführen, wie z.B. rtapi_inb(3). Ausgeschlossen sind die meisten Linux-Kernel-APIs wie do_gettimeofday(3) und viele rtapi-APIs wie rtapi_shmem_new(3).
Simulator
Damit ein RTAPI-Modul in der "sim"-Umgebung (gefälschtes Echtzeitsystem ohne besondere Privilegien) gebaut werden kann, darf es keinerlei Linux-Kernel-APIs verwenden und auch nicht die RTAPI-APIs für direkten Gerätezugriff wie rtapi_inb(3). Dies schließt automatisch alle Hardware-Gerätetreiber ein, und auch Geräte, die Linux-Kernel-APIs benutzen, um Dinge zu tun wie spezielle Geräte oder Einträge im /proc-Dateisystem zu erstellen.
RTAPI STATUS CODES
Außer wie in bestimmten Handbuchseiten angegeben, gibt HAL negative errno-Werte für Fehler und nicht-negative Werte für Erfolg zurück.