LinuxCNC Documentation

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.