lockl 内核服务
用途
锁定常规进程锁定。
语法
参数
| 项 | 描述 |
|---|---|
| 锁定字 | 指定该锁定字的地址。 |
| 标志 | 指定用于控制正在等待锁定的标志。 标志 参数用于控制信号如何影响等待锁定的方式。 这四个标志是:
注意: LOCK_SIGRET标志优先于 LOCK_SIGWAKE标志。
|
描述
lockl内核服务为传统锁加锁
该锁字可以位于共享内存中。 在调用 lockl或unlockl服务时,它必须在进程的地址空间中。 内核仅在调用者进程下执行时才访问锁定字。
lock_word 参数通常是数据结构的一部分,该数据结构描述了由锁定管理的资源。 在首次调用lockl服务之前,必须将此参数初始化为LOCK_AVAIL值。 只有锁定和解锁服务才能在锁使用时更改该参数。
锁定服务是可嵌套的。 调用者应使用LOCK_SUCC值来确定何时调用unlockl服务来解锁传统锁。
锁服务会暂时为所有者分配该锁最受欢迎的等待者的进程优先级。
在终止或离开内核方式之前,进程必须释放所有锁定。 当内核进程拥有任何锁定时,不会向这些进程传递信号。 内核扩展和设备支持编程概念》中的 "了解系统调用执行"讨论了系统调用在访问全局数据时如何使用lockl服务。
执行环境
lockl内核服务只能从进程环境中调用。
返回值
| 项 | 描述 |
|---|---|
| LOCK_SUCC | 当flags参数设置为 LOCK_NDELAY 时,表示进程尚未拥有该锁,或者该锁未被其他进程拥有。 |
| 锁定/非标准 | 指示当 标志 参数设置为 LOCK_NDELAY时,该进程已拥有该锁定或该锁定未由另一个进程拥有。 |
| 锁定失败 | 当 标志 参数设置为 LOCK_NDELAY时,指示该锁定由另一个进程拥有。 |
| LOCK_SIG | 指示当 标志 参数设置为 LOCK_SIGRET时,等待将通过信号终止。 |