summaryrefslogtreecommitdiffstats
path: root/share/man/man9/namei.9
diff options
context:
space:
mode:
authoreivind <eivind@FreeBSD.org>1998-09-27 13:35:49 +0000
committereivind <eivind@FreeBSD.org>1998-09-27 13:35:49 +0000
commit4cd1dfa2e9d33a28ec2c2b8ab58da70fa6d59059 (patch)
treeb7270d935d1d3b84b47680a21e1142393e274240 /share/man/man9/namei.9
parent2769304fd0b8e49db1052d695bff6e4d79d72be1 (diff)
downloadFreeBSD-src-4cd1dfa2e9d33a28ec2c2b8ab58da70fa6d59059.zip
FreeBSD-src-4cd1dfa2e9d33a28ec2c2b8ab58da70fa6d59059.tar.gz
Add a manpage for namei().
Markup changes and review by: dfr
Diffstat (limited to 'share/man/man9/namei.9')
-rw-r--r--share/man/man9/namei.9160
1 files changed, 160 insertions, 0 deletions
diff --git a/share/man/man9/namei.9 b/share/man/man9/namei.9
new file mode 100644
index 0000000..51b427d
--- /dev/null
+++ b/share/man/man9/namei.9
@@ -0,0 +1,160 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Eivind Eklund
+.\"
+.\" 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.
+.\"
+.\"
+.\" If you integrate this manpage in another OS, I'd appreciate a note
+.\" - eivind@freebsd.org
+.\"
+.\" $Id$
+.\"
+.Dd September 26th, 1998
+.Os
+.Dt namei 9
+.Sh NAME
+.Nm namei ,
+.Nm NDINIT
+.Nd convert pathname to a pointer to a locked vnode.
+.Sh SYNOPSIS
+.Ft int
+.Fn namei "struct nameidata *ndp"
+.Ft void
+.Fn NDINIT "struct nameidata *ndp" "int operation" "int operflags" "int segflag" "const char *path" "struct proc *proc"
+
+.Sh DESCRIPTION
+
+.Fn namei
+is used to get from a pathname to a vnode for the object.
+This is a necessity to start doing VFS operations. The vnode
+returned will have its reference count increased; when you're through
+with it, you have to release it using either
+.Xr vrele 9
+or
+.Xr vput 9 ,
+depending on whether you specified the LOCKLEAF flag or not.
+.Pp
+To initialize the nameidata struct, you usually use
+.Fn NDINIT .
+It takes the following arguments:
+.Pp
+.Bl -tag -width nameidatap
+.It Ar nameidatap
+pointer to the struct nameidata to initialize
+.It Ar operation
+The operation to have
+.Fn namei
+do. The relevant operations are
+.Dv LOOKUP ,
+.Dv CREATE ,
+.Dv DELETE ,
+and
+.Dv RENAME .
+The latter three are just setup for those
+effects; just calling
+.Fn namei
+will not result in
+.Fn VOP_RENAME
+being called.
+.It Ar operflags
+Operation flags. Several of these can be effective at the same time.
+.It Ar segflag
+Segment indicator. This tells if the name of the object is in
+userspace (UIO_USERSPACE) or in the kernel address space (UIO_SYSSPACE).
+.It Ar path
+Pointer to pathname buffer (the file or directory name that will be
+looked up)
+.It Ar proc
+Which process context to use for the
+.Fn namei
+locks.
+.El
+.Sh NAMEI OPERATION FLAGS
+.Fn namei
+takes the following set of 'operation flags' that influence
+how it operates:
+.Bl -tag -width WANTPARENT
+.It Dv LOCKLEAF
+Lock inode on return. This is a full lock of the vnode; you'll have to use
+.Xr VOP_UNLOCK 9
+to release the lock (or use
+.Xr vput 9
+to release the lock and do a
+.Xr vrele 9 ,
+all in one).
+.It Dv LOCKPARENT
+Make
+.Fn namei
+also return the parent (directory) vnode (in ndp->dvp),
+in locked state. Remember to release it (using
+.Xr vput 9
+or
+.Xr VOP_UNLOCK 9
+and
+.Xr vrele 9 .)
+.It Dv WANTPARENT
+Make
+.Fn namei
+also return the parent (directory) vnode, in unlocked
+state. Remember to release it (using
+.Xr vrele 9 .)
+.It Dv NOCACHE
+Avoid
+.Fn namei
+creating this entry in the namecache if it is not
+already present. Normally
+.Fn namei
+will add entries to the name cache
+if they're not already there.
+.It Dv FOLLOW
+With this flag,
+.Fn namei
+will follow the symbolic link if the last part
+of the path supplied is a symbolic link (i.e., it will return a vnode
+for whatever the link points at, instead for the link itself).
+.It Dv NOOBJ
+Do not call
+.Fn vfs_object_create
+for the returned vnode even if it is
+just a VREG and we're able to (ie, it is locked).
+.It Dv NOFOLLOW
+Do not follow symbolic links (pseudo). This flag does not seem to be
+honoured by the actual code.
+.El
+.Sh BUGS
+.Fn namei
+calls
+.Fn lookup
+for each component in the pathname, instead of
+handing the actual names onwards to the stacking layers. This hinders
+the implementation of stacking layers that do full namespace escapes.
+.Sh SEE ALSO
+.Xr vnode 9 ,
+.Xr VFS 9 ,
+src/sys/kern/vfs_lookup.c
+.Sh AUTHORS
+This man page was written by
+.An Eivind Eklund .
OpenPOWER on IntegriCloud