Servicio de kernel unlockl
Finalidad
Desbloquea un bloqueo de proceso convencional.
Sintaxis
#include <sys/types.h>
#include <sys/errno.h> lock_t *lock_word;
Parámetro
| Elemento | Descripción |
|---|---|
| lock_word | Especifica la dirección de la palabra de bloqueo. |
Descripción
El servicio de kernel de unlockl desbloquea un bloqueo convencional. Sólo el propietario de un bloqueo puede desbloquearlo. Una vez que se desbloquea un bloqueo, la hebra de prioridad más alta (si la hay) que está esperando el bloqueo se vuelve ejecutable y puede volver a competir por el bloqueo. Si hay al menos un proceso en espera del bloqueo, se vuelve a calcular la prioridad del llamante. Preparación de una llamada del sistema describe cómo las llamadas del sistema pueden utilizar Servicios de kernel al acceder a datos globales.
Los servicios lockl y unlockl no mantienen un recuento de niveles de anidamiento. Una sola llamada al servicio de unlockl desbloquea el bloqueo para el llamante. El código de retorno del servicio lockl debe utilizarse para determinar cuándo desbloquear el bloqueo.
Entorno de ejecución
El servicio de kernel de unlockl sólo se puede llamar desde entorno de proceso .
Valores de retorno
El servicio unlockl no tiene valores de retorno.
Ejemplo
Una llamada al servicio unlockl se puede codificar de la siguiente manera:
int lock_ret; /* return code from lockl() */
extern int lock_word; /* lock word that is external
and was initialized to
LOCK_AVAIL */
...
/* get lock prior to using resource */
lock_ret = lockl(lock_word, LOCK_SHORT)
/* use resource for which lock was obtained */
...
/* release lock if this was not a nested use */
if ( lock_ret != LOCK_NEST )
unlockl(lock_word);