解锁内核服务

用途

将常规进程锁定解锁。

语法

#include <sys/types.h>
#include <sys/errno.h>
void unlockl ( lock_word)
lock_t *lock_word;

参数

描述
lock_word 指定该锁定字的地址。

描述

注: 提供 解锁 内核服务只是为了实现兼容性,不应该在新代码中使用,而应该使用简单锁定或 复杂锁定

解锁 内核服务会将 常规锁定解锁。 只有锁的所有者才能将其解锁。 一旦锁定解锁,等待锁定的最高优先级线程 (如果有) 将成为可运行的线程,并且可能再次争用锁定。 如果至少有一个进程正在等待该锁定,那么将重新计算调用者的优先级。 抢先进行系统调用 讨论了系统调用在访问全局数据时如何使用 锁定内核服务

洛克勒解锁 服务不会维护嵌套级别计数。 对 解锁 服务进行的单个调用将解锁调用者的锁定。 应该使用来自 洛克勒 服务的返回码来确定何时解锁该锁定。

注: 只有在锁定事件或锁定字的情况下,才能在禁用中断的情况下调用 解锁 内核服务。

执行环境

仅可从 流程环境 调用 解锁 内核服务。

返回值

解锁 服务没有任何返回值。

示例

解锁 服务的调用可以按如下所示进行编码:

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);