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.