bsr_alloc-Kernel-Service
Zweck
Ordnet eine BSR-Ressource (BSR = Barrier Synchronization Register, Sperrensynchronisationsregister) zu und ruft Zuordnungsinformationen ab.
Syntax
#include <sys/adspace.h>
int bsr_alloc (
int bsr_bytes,
struct io_map * bsr_map,
int *bsr_stride,
int *bsr_id)
Parameter
| Element | Beschreibung |
|---|---|
| bsr_byte | Anzahl der gewünschten BSR-Byte. |
| bsr_map | Zuordnungsinformationen für die BSR-Funktion |
| bsr_stride, | Schritt, bei dem die BSR-Byte innerhalb der Zuordnung wiederholt werden |
| bsr-id | Eine nicht transparente Kennung für die zugeordnete BSR-Ressource |
Beschreibung
Der bsr_alloc -Service kann verwendet werden, um die BSR-Funktion ganz oder teilweise zuzuordnen und zu reservieren. Die angeforderte Anzahl der zuzuordnenden BSR-Byte wird über den Parameter bsr_byte übertragen. Die angeforderte Anzahl Byte muss einer unterstützten Fenstergröße entsprechen, die durch den Parameter supported_window_mask des bsr_query -Service kommuniziert wird. Wenn die angeforderte Anzahl Byte verfügbar ist, sind die Byte reserviert und die E/A-Zuordnungsinformationen für den Zugriff auf die zugeordnete Funktion werden in die bsr_map -Struktur geschrieben. Außerdem wird der Schritt innerhalb der Zuordnung, den die zugeordneten BSR-Bytes wiederholen, im Feld bsr_stride, aufgezeichnet. Das Feld bsr_id wird mit einer eindeutigen Kennung geschrieben, die mit dem Aufruf bsr_free verwendet werden soll.
Wenn mehrere Granulate oder Fenster verwendet werden sollen, müssen sie mit unabhängigen Aufrufen an bsr_alloczugeordnet werden. Dies liegt daran, dass E/A-Zuordnungen für mehrere Granulate möglicherweise nicht zusammenhängend sind und Schritte nur innerhalb der Granule anwendbar sind.
Die resultierenden bsr_map -Informationen können dann als Eingabe für rmmap_create verwendet werden, um die Adressierbarkeit für die BSR-Ressource im aktuellen Prozessadressraum einzurichten.
Ausführungsumgebung
Der bsr_alloc -Service kann nur aus der Prozessumgebung aufgerufen werden.
Rückgabewerte
Bei erfolgreicher Ausführung gibt bsr_alloc 0 zurück und ändert die Struktur bsr_map so, dass sie die Zuordnungsinformationen für die neu zugeordnete Ressource enthält, ändert das Feld bsr_stride den Schritt, auf dem sich die BSR-Bytes innerhalb der Zuordnung wiederholen, und ändert das Feld bsr_id so, dass es eine eindeutige ID für die neu zugeordnete BSR-Ressource anzeigt. Ist dies nicht erfolgreich, wird einer der folgenden Werte zurückgegeben:
| Element | Beschreibung |
|---|---|
| ENODEV | Die BSR-Funktion ist nicht vorhanden. |
| EINVAL | Nicht unterstützte Anzahl Byte angefordert. |
| EBUSY | Angeforderte BSR-Byte oder zuordnungsfähige BSR-Fenster werden derzeit verwendet. |