For the complete documentation index, see llms.txt. This page is also available as Markdown.

VOP_LOCK(9)

VOP_LOCK — 序列化对 vnode 的访问

名称

VOP_LOCK, VOP_UNLOCK, VOP_ISLOCKED, vn_lock

概要

#include <sys/param.h>
#include <sys/lock.h>
#include <sys/vnode.h>
int
VOP_LOCK(struct vnode *vp, int flags)

int
VOP_UNLOCK(struct vnode *vp)

int
VOP_ISLOCKED(struct vnode *vp)

int
vn_lock(struct vnode *vp, int flags)

描述

这些调用用于序列化对文件系统的访问,例如防止两个写操作同时写入同一个文件。

参数如下:

LK_SHARED 共享锁。 LK_EXCLUSIVE 独占锁。 LK_UPGRADE 共享锁升级为独占锁。 LK_DOWNGRADE 独占锁降级为共享锁。 LK_RELEASE 释放任何类型的锁。 LK_DRAIN 等待所有锁活动结束。

LK_NOWAIT 不休眠等待锁。 LK_SLEEPFAIL 休眠后返回失败。 LK_CANRECURSE 允许递归独占锁。 LK_NOWITNESS 指示 witness(4) 忽略此实例。

LK_INTERLOCK 当调用者已持有简单锁时指定(VOP_LOCK 在获取锁后会释放该简单锁)。 LK_RETRY 重试直到锁定。

vp 要锁定或解锁的 vnode。

flags 锁请求类型之一:锁类型可以与这些锁标志进行或运算:锁类型可以与这些控制标志进行或运算:内核代码应使用 vn_lock 来锁定 vnode,而不是直接调用 VOP_LOCK。vn_lock 也不接受线程作为参数,而是假定使用 curthread。

返回值

成功时返回零,否则返回错误。

参见

vnode(9)

作者

本手册页面由 Doug Rabson 编写。

最后更新于

这有帮助吗?