lock_done Kernel-Service
Zweck
Entsperrt eine komplexe Sperre.
Syntax
#include <sys/lock_def.h> complex_lock_t lock_addr;
Parameter
| Element | Beschreibung |
|---|---|
| Sperrenadresse | Gibt die Adresse des zu entsperrenden Sperrworts an |
Beschreibung
Die 'lock_done' -Kernel-Services entsperren eine komplexe Sperre. Der aufrufende Kernel-Thread muss die Sperre entweder im Modus für gemeinsames Lesen oder im Modus für exklusives Schreiben halten. Wenn ein oder mehrere Kernel-Threads darauf warten, die Sperre im exklusiven Schreibmodus zu erhalten, wird einer dieser Kernel-Threads (der mit der höchsten Priorität) als ausführbar definiert und kann um die Sperre konkurrieren. Andernfalls werden alle Kernel-Threads, die darauf warten, die Sperre im Modus für gemeinsames Lesen zu erhalten, als ausführbar definiert. Wenn mindestens ein Kernel-Thread auf die Sperre wartet, wird die Priorität des aufrufenden Kernel-Threads neu berechnet.
Wenn die Sperre rekursiv gehalten wird, wird sie erst freigegeben, wenn der 'lock_done' -Kernel-Service einmal für jedes Mal aufgerufen wurde, wenn die Sperre gesperrt wurde.
Ausführungsumgebung
Der Kernel-Service 'lock_done' kann nur über Prozessumgebung aufgerufen werden.
Rückgabewerte
Der 'lock_done' -Kernel-Service hat keine Rückgabewerte.