summaryrefslogtreecommitdiffstats
path: root/share/man/man9/VOP_LOCK.9
diff options
context:
space:
mode:
Diffstat (limited to 'share/man/man9/VOP_LOCK.9')
-rw-r--r--share/man/man9/VOP_LOCK.9124
1 files changed, 124 insertions, 0 deletions
diff --git a/share/man/man9/VOP_LOCK.9 b/share/man/man9/VOP_LOCK.9
new file mode 100644
index 0000000..b4fdc7a
--- /dev/null
+++ b/share/man/man9/VOP_LOCK.9
@@ -0,0 +1,124 @@
+.\" -*- 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 .
OpenPOWER on IntegriCloud