mutex(2) mutex(2)
NAME
mutex - ABI-Startadressen für den gegenseitigen Ausschluß
SYNTAX
cc [flag ...] file ... -lmutex [library ...]
#include <abimutex.h>
void initlock(abilockt *lck)
int acquirelock(abilockt *lck)
void releaselock(abilockt *lck)
int statlock(abilockt *lck)
BESCHREIBUNG
Diese Funktionen stellen eine Schnittstelle zu Sperren mit gegenseiti-
gem Ausschluß auf Benutzerebene zur Verfügung. Der Parameter lck muß
auf einen Speicherbereich zeigen, der von allen Prozessen genutzt
wird, die Eigner der Sperre werden oder die Sperre testen wollen.
Die Struktur abilockt hat folgenden Inhalt:
typedef struct {
volatile unsigned long abilock;
} abilockt;
Die Funktion initlock muß vor allen anderen Funktionen für eine
Sperre aufgerufen werden. Sie initialisiert die Sperre so, daß diese
einen ungesperrten Status hat.
acquirelock versucht, Eigner der Sperre zu werden, auf die lck ver-
weist. Die Funktion übergibt null, wenn sie Eigner der Sperre wurde,
und andernfalls einen Wert ungleich null.
statlock übergibt den aktuellen Status der Sperre, auf die lck ver-
weist, ohne Eigner dieser Sperre zu werden. Die Funktion übergibt
null, wenn die Sperre frei ist und andernfalls einen Wert ungleich
null. releaselock hebt die Sperre, auf die lck zeigt, bedingungslos
auf.
HINWEISE
Sperren werden vom System niemals automatisch aufgehoben. Sperren, die
einem Prozeß gehören, der stirbt, bleiben aktiv.
Dem Benutzer obliegt die Rücknahme der Aktivierung, wenn acquirelock
einen Fehler übergibt.
Ein Aufruf von acquirelock kann fehlschlagen, selbst wenn aus dem von
statlock übergebenen Status hervorgeht, daß die Sperre verfügbar ist.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
mutex(2) mutex(2)
Der Inhalt der Sperre, auf die lck zeigt, darf niemals direkt geprüft
werden.
Auf dem System RM400-5 stehen diese Funktionen nur dem Superuser oder
Benutzern mit der Berechtigung, Steuerung der Prozeßumschaltung zu
verwenden, zur Verfügung [siehe pfenable(1M)]. Auf diesen Systemen
müssen zusätzlich zur Ladeoption -lmutex auch die Optionen -lmproc und
-lext angegeben werden.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98