SIMPLE SOLUTIONS

VOP_LOCK(9FREEBSD) - man page online | system kernel interfaces

Serialize access to a vnode.

Chapter
February 25, 2008
VOP_LOCK(9)                       BSD Kernel Developer's Manual                       VOP_LOCK(9)

NAME VOP_LOCK, VOP_UNLOCK, VOP_ISLOCKED, vn_lock — serialize access to a vnode
SYNOPSIS #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 flags); int VOP_ISLOCKED(struct vnode *vp); int vn_lock(struct vnode *vp, int flags);
DESCRIPTION These calls are used to serialize access to the file system, such as to prevent two writes to the same file from happening at the same time. The arguments are: vp The vnode being locked or unlocked. flags One of the lock request types: LK_SHARED Shared lock. LK_EXCLUSIVE Exclusive lock. LK_UPGRADE Shared-to-exclusive upgrade. LK_DOWNGRADE Exclusive-to-shared downgrade. LK_RELEASE Release any type of lock. LK_DRAIN Wait for all lock activity to end. The lock type may be or'ed with these lock flags: LK_NOWAIT Do not sleep to wait for lock. LK_SLEEPFAIL Sleep, then return failure. LK_CANRECURSE Allow recursive exclusive lock. LK_NOWITNESS Instruct witness(4) to ignore this instance. The lock type may be or'ed with these control flags: LK_INTERLOCK Specify when the caller already has a simple lock (VOP_LOCK() will unlock the simple lock after getting the lock). LK_RETRY Retry until locked. Kernel code should use vn_lock() to lock a vnode rather than calling VOP_LOCK() directly. vn_lock() also does not want a thread specified as argument but it assumes curthread to be used.
RETURN VALUES Zero is returned on success, otherwise an error is returned.
SEE ALSO vnode(9)
AUTHORS This manual page was written by Doug Rabson.
BSD February 25, 2008 BSD
This manual Reference Other manuals
VOP_LOCK(9freebsd) referred by vn_lock(9freebsd) | vnode(9freebsd) | VOP_ISLOCKED(9freebsd) | VOP_UNLOCK(9freebsd)
refer to vnode(9freebsd) | witness(4freebsd)