VOP_LOCK,
VOP_UNLOCK, VOP_ISLOCKED,
vn_lock — serialize access
to a vnode
#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);
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:
The lock type may be or'ed with these lock
flags:
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.
Zero is returned on success, otherwise an error is returned.
This manual page was written by Doug
Rabson.