1: /*
   2:  * Copyright (c) 1982, 1986 Regents of the University of California.
   3:  * All rights reserved.  The Berkeley software License Agreement
   4:  * specifies the terms and conditions for redistribution.
   5:  *
   6:  *	@(#)namei.h	7.1 (Berkeley) 6/4/86
   7:  */
   8: 
   9: #ifndef _NAMEI_
  10: #define _NAMEI_
  11: 
  12: #ifdef KERNEL
  13: #include "uio.h"
  14: #else
  15: #include <sys/uio.h>
  16: #endif
  17: 
  18: /*
  19:  * Encapsulation of namei parameters.
  20:  * One of these is located in the u. area to
  21:  * minimize space allocated on the kernel stack.
  22:  */
  23: struct nameidata {
  24:     caddr_t ni_dirp;        /* pathname pointer */
  25:     short   ni_nameiop;     /* see below */
  26:     short   ni_error;       /* error return if any */
  27:     off_t   ni_endoff;      /* end of useful stuff in directory */
  28:     struct  inode *ni_pdir;     /* inode of parent directory of dirp */
  29:     struct  iovec ni_iovec;     /* MUST be pointed to by ni_iov */
  30:     struct  uio ni_uio;     /* directory I/O parameters */
  31:     struct  direct ni_dent;     /* current directory entry */
  32: };
  33: 
  34: #define ni_base     ni_iovec.iov_base
  35: #define ni_count    ni_iovec.iov_len
  36: #define ni_iov      ni_uio.uio_iov
  37: #define ni_iovcnt   ni_uio.uio_iovcnt
  38: #define ni_offset   ni_uio.uio_offset
  39: #define ni_segflg   ni_uio.uio_segflg
  40: #define ni_resid    ni_uio.uio_resid
  41: 
  42: /*
  43:  * namei operations and modifiers
  44:  */
  45: #define LOOKUP      0   /* perform name lookup only */
  46: #define CREATE      1   /* setup for file creation */
  47: #define DELETE      2   /* setup for file deletion */
  48: #define LOCKPARENT  0x10    /* see the top of namei */
  49: #define NOCACHE     0x20    /* name must not be left in cache */
  50: #define FOLLOW      0x40    /* follow symbolic links */
  51: #define NOFOLLOW    0x0 /* don't follow symbolic links (pseudo) */
  52: 
  53: /*
  54:  * This structure describes the elements in the cache of recent
  55:  * names looked up by namei.
  56:  */
  57: struct  namecache {
  58:     struct  namecache *nc_forw; /* hash chain, MUST BE FIRST */
  59:     struct  namecache *nc_back; /* hash chain, MUST BE FIRST */
  60:     struct  namecache *nc_nxt;  /* LRU chain */
  61:     struct  namecache **nc_prev;    /* LRU chain */
  62:     struct  inode *nc_ip;       /* inode the name refers to */
  63:     ino_t   nc_ino;         /* ino of parent of name */
  64:     dev_t   nc_dev;         /* dev of parent of name */
  65:     dev_t   nc_idev;        /* dev of the name ref'd */
  66:     long    nc_id;          /* referenced inode's id */
  67:     char    nc_nlen;        /* length of name */
  68: #define NCHNAMLEN   15  /* maximum name segment length we bother with */
  69:     char    nc_name[NCHNAMLEN]; /* segment name */
  70: };
  71: #ifdef KERNEL
  72: struct  namecache *namecache;
  73: int nchsize;
  74: #endif
  75: 
  76: /*
  77:  * Stats on usefulness of namei caches.
  78:  */
  79: struct  nchstats {
  80:     long    ncs_goodhits;       /* hits that we can reall use */
  81:     long    ncs_badhits;        /* hits we must drop */
  82:     long    ncs_falsehits;      /* hits with id mismatch */
  83:     long    ncs_miss;       /* misses */
  84:     long    ncs_long;       /* long names that ignore cache */
  85:     long    ncs_pass2;      /* names found with passes == 2 */
  86:     long    ncs_2passes;        /* number of times we attempt it */
  87: };
  88: #endif

Defined variables

namecache defined in line 72; never used
nchsize defined in line 73; never used

Defined struct's

namecache defined in line 57; used 10 times
nameidata defined in line 23; used 2 times
nchstats defined in line 79; never used

Defined macros

CREATE defined in line 46; never used
DELETE defined in line 47; never used
FOLLOW defined in line 50; never used
LOCKPARENT defined in line 48; never used
LOOKUP defined in line 45; never used
NCHNAMLEN defined in line 68; used 1 times
  • in line 69
NOCACHE defined in line 49; never used
NOFOLLOW defined in line 51; never used
_NAMEI_ defined in line 10; used 1 times
  • in line 9
ni_base defined in line 34; never used
ni_count defined in line 35; never used
ni_iov defined in line 36; never used
ni_iovcnt defined in line 37; never used
ni_offset defined in line 38; never used
ni_resid defined in line 40; never used
ni_segflg defined in line 39; never used
Last modified: 1986-06-05
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 911
Valid CSS Valid XHTML 1.0 Strict