/share/man/man9/VOP_LOCK.9
https://bitbucket.org/freebsd/freebsd-head/ · Unknown · 124 lines · 124 code · 0 blank · 0 comment · 0 complexity · 81545f7330611ef7a1f4b97a574a5923 MD5 · raw file
- .\" -*- nroff -*-
- .\"
- .\" Copyright (c) 1996 Doug Rabson
- .\"
- .\" All rights reserved.
- .\"
- .\" This program is free software.
- .\"
- .\" Redistribution and use in source and binary forms, with or without
- .\" modification, are permitted provided that the following conditions
- .\" are met:
- .\" 1. Redistributions of source code must retain the above copyright
- .\" notice, this list of conditions and the following disclaimer.
- .\" 2. Redistributions in binary form must reproduce the above copyright
- .\" notice, this list of conditions and the following disclaimer in the
- .\" documentation and/or other materials provided with the distribution.
- .\"
- .\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
- .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- .\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
- .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- .\"
- .\" $FreeBSD$
- .\"
- .Dd February 25, 2008
- .Dt VOP_LOCK 9
- .Os
- .Sh NAME
- .Nm VOP_LOCK ,
- .Nm VOP_UNLOCK ,
- .Nm VOP_ISLOCKED ,
- .Nm vn_lock
- .Nd serialize access to a vnode
- .Sh SYNOPSIS
- .In sys/param.h
- .In sys/lock.h
- .In sys/vnode.h
- .Ft int
- .Fn VOP_LOCK "struct vnode *vp" "int flags"
- .Ft int
- .Fn VOP_UNLOCK "struct vnode *vp" "int flags"
- .Ft int
- .Fn VOP_ISLOCKED "struct vnode *vp"
- .Ft int
- .Fn vn_lock "struct vnode *vp" "int flags"
- .Sh 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.
- .Pp
- The arguments are:
- .Bl -tag -width flags
- .It Fa vp
- The vnode being locked or unlocked.
- .It Fa flags
- One of the lock request types:
- .Pp
- .Bl -tag -width ".Dv LK_CANRECURSE" -offset indent -compact
- .It Dv LK_SHARED
- Shared lock.
- .It Dv LK_EXCLUSIVE
- Exclusive lock.
- .It Dv LK_UPGRADE
- Shared-to-exclusive upgrade.
- .It Dv LK_DOWNGRADE
- Exclusive-to-shared downgrade.
- .It Dv LK_RELEASE
- Release any type of lock.
- .It Dv LK_DRAIN
- Wait for all lock activity to end.
- .El
- .Pp
- The lock type may be
- .Em or Ns 'ed
- with these lock flags:
- .Pp
- .Bl -tag -width ".Dv LK_CANRECURSE" -offset indent -compact
- .It Dv LK_NOWAIT
- Do not sleep to wait for lock.
- .It Dv LK_SLEEPFAIL
- Sleep, then return failure.
- .It Dv LK_CANRECURSE
- Allow recursive exclusive lock.
- .It Dv LK_NOWITNESS
- Instruct
- .Xr witness 4
- to ignore this instance.
- .El
- .Pp
- The lock type may be
- .Em or Ns 'ed
- with these control flags:
- .Pp
- .Bl -tag -width ".Dv LK_CANRECURSE" -offset indent -compact
- .It Dv LK_INTERLOCK
- Specify when the caller already has a simple lock
- .Fn ( VOP_LOCK
- will unlock the simple lock after getting the lock).
- .It Dv LK_RETRY
- Retry until locked.
- .El
- .Pp
- Kernel code should use
- .Fn vn_lock
- to lock a vnode rather than calling
- .Fn VOP_LOCK
- directly.
- .Fn vn_lock
- also does not want a thread specified as argument but it
- assumes curthread to be used.
- .El
- .Sh RETURN VALUES
- Zero is returned on success, otherwise an error is returned.
- .Sh SEE ALSO
- .Xr vnode 9
- .Sh AUTHORS
- This manual page was written by
- .An Doug Rabson .