[BACK]Return to kernfs_vnops.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / miscfs / kernfs

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/miscfs/kernfs/kernfs_vnops.c between version 1.9 and 1.14

version 1.9, 1993/05/28 16:47:05 version 1.14, 1993/12/18 03:56:12
Line 40 
Line 40 
  * Kernel parameter filesystem   * Kernel parameter filesystem
  */   */
   
 #include "param.h"  #include <sys/param.h>
 #include "systm.h"  #include <sys/systm.h>
 #include "kernel.h"  #include <sys/kernel.h>
 #include "types.h"  #include <sys/types.h>
 #include "time.h"  #include <sys/time.h>
 #include "proc.h"  #include <sys/proc.h>
 #include "file.h"  #include <sys/file.h>
 #include "vnode.h"  #include <sys/vnode.h>
 #include "stat.h"  #include <sys/stat.h>
 #include "mount.h"  #include <sys/mount.h>
 #include "namei.h"  #include <sys/namei.h>
 #include "buf.h"  #include <sys/buf.h>
 #include "miscfs/kernfs/kernfs.h"  
   
 #include "../ufs/dir.h"         /* For readdir() XXX */  #include <ufs/dir.h>            /* For readdir() XXX */
   
   #include <miscfs/kernfs/kernfs.h>
   
 struct kernfs_target kernfs_targets[] = {  struct kernfs_target kernfs_targets[] = {
 /* NOTE: The name must be less than UIO_MX-16 chars in length */  /* NOTE: The name must be less than UIO_MX-16 chars in length */
Line 65  REG_TARGET("hostname", 0,  KTT_HOSTNAME,
Line 66  REG_TARGET("hostname", 0,  KTT_HOSTNAME,
 REG_TARGET("hz",        &hz,            KTT_INT,        KTM_RO_PERMS    )  REG_TARGET("hz",        &hz,            KTT_INT,        KTM_RO_PERMS    )
 REG_TARGET("loadavg",   0,              KTT_AVENRUN,    KTM_RO_PERMS    )  REG_TARGET("loadavg",   0,              KTT_AVENRUN,    KTM_RO_PERMS    )
 REG_TARGET("physmem",   &physmem,       KTT_INT,        KTM_RO_PERMS    )  REG_TARGET("physmem",   &physmem,       KTT_INT,        KTM_RO_PERMS    )
   #ifdef KERNFS_HAVE_ROOTDIR
 DIR_TARGET("root",      0,              KTT_NULL,       KTM_DIR_PERMS   )  DIR_TARGET("root",      0,              KTT_NULL,       KTM_DIR_PERMS   )
   #endif
 BLK_TARGET("rootdev",   0,              KTT_NULL,       KTM_RO_PERMS    )  BLK_TARGET("rootdev",   0,              KTT_NULL,       KTM_RO_PERMS    )
 CHR_TARGET("rrootdev",  0,              KTT_NULL,       KTM_RO_PERMS    )  CHR_TARGET("rrootdev",  0,              KTT_NULL,       KTM_RO_PERMS    )
 REG_TARGET("time",      0,              KTT_TIME,       KTM_RO_PERMS    )  REG_TARGET("time",      0,              KTT_TIME,       KTM_RO_PERMS    )
Line 185  kernfs_lookup(dvp, ndp, p)
Line 188  kernfs_lookup(dvp, ndp, p)
                 /*VOP_LOCK(dvp);*/                  /*VOP_LOCK(dvp);*/
                 return (0);                  return (0);
         }          }
   
   #ifdef KERNFS_HAVE_ROOTDIR
         if (ndp->ni_namelen == 4 && bcmp(pname, "root", 4) == 0) {          if (ndp->ni_namelen == 4 && bcmp(pname, "root", 4) == 0) {
                 ndp->ni_dvp = dvp;                  ndp->ni_dvp = dvp;
                 ndp->ni_vp = rootdir;                  ndp->ni_vp = rootdir;
Line 193  kernfs_lookup(dvp, ndp, p)
Line 197  kernfs_lookup(dvp, ndp, p)
                 VOP_LOCK(rootdir);                  VOP_LOCK(rootdir);
                 return (0);                  return (0);
         }          }
   #endif
   
         /*          /*
          * /kern/rootdev is the root device           * /kern/rootdev is the root device
          */           */
Line 237  kernfs_lookup(dvp, ndp, p)
Line 242  kernfs_lookup(dvp, ndp, p)
 #ifdef KERNFS_DIAGNOSTIC  #ifdef KERNFS_DIAGNOSTIC
         printf("kernfs_lookup: allocate new vnode\n");          printf("kernfs_lookup: allocate new vnode\n");
 #endif  #endif
         error = getnewvnode(VT_UFS, dvp->v_mount, &kernfs_vnodeops, &fvp);          error = getnewvnode(VT_KERNFS, dvp->v_mount, &kernfs_vnodeops, &fvp);
         if (error)          if (error)
                 goto bad;                  goto bad;
         VTOKERN(fvp)->kf_kt = &kernfs_targets[i];          VTOKERN(fvp)->kf_kt = &kernfs_targets[i];
Line 556  kernfs_write(vp, uio, ioflag, cred)
Line 561  kernfs_write(vp, uio, ioflag, cred)
         return (kernfs_xwrite(kt, strbuf, xlen));          return (kernfs_xwrite(kt, strbuf, xlen));
 }  }
   
 kernfs_readdir(vp, uio, cred, eofflagp)  kernfs_readdir(vp, uio, cred, eofflagp, cookies, ncookies)
         struct vnode *vp;          struct vnode *vp;
         struct uio *uio;          struct uio *uio;
         struct ucred *cred;          struct ucred *cred;
         int *eofflagp;          int *eofflagp;
           u_int *cookies;
           int ncookies;
 {  {
         struct filedesc *fdp;          struct filedesc *fdp;
         int i;          int i;
Line 568  kernfs_readdir(vp, uio, cred, eofflagp)
Line 575  kernfs_readdir(vp, uio, cred, eofflagp)
   
         i = uio->uio_offset / UIO_MX;          i = uio->uio_offset / UIO_MX;
         error = 0;          error = 0;
         while (uio->uio_resid > 0) {          while (uio->uio_resid > 0 && (!cookies || ncookies > 0)) {
 #ifdef KERNFS_DIAGNOSTIC  #ifdef KERNFS_DIAGNOSTIC
                 printf("kernfs_readdir: i = %d\n", i);                  printf("kernfs_readdir: i = %d\n", i);
 #endif  #endif
Line 601  kernfs_readdir(vp, uio, cred, eofflagp)
Line 608  kernfs_readdir(vp, uio, cred, eofflagp)
                         error = uiomove((caddr_t) dp, UIO_MX, uio);                          error = uiomove((caddr_t) dp, UIO_MX, uio);
                         if (error)                          if (error)
                                 break;                                  break;
                           if (cookies) {
                                   *cookies = (i + 1) * UIO_MX;
                                   ncookies--;
                           }
                 }                  }
                 i++;                  i++;
         }          }
Line 629  kernfs_inactive(vp, p)
Line 640  kernfs_inactive(vp, p)
  * Print out the contents of a kernfs vnode.   * Print out the contents of a kernfs vnode.
  */   */
 /* ARGSUSED */  /* ARGSUSED */
   void
 kernfs_print(vp)  kernfs_print(vp)
         struct vnode *vp;          struct vnode *vp;
 {  {
         printf("tag VT_NON, kernfs vnode\n");          printf("tag VT_KERNFS, kernfs vnode\n");
 }  }
   
 /*  /*

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.14

CVSweb <webmaster@jp.NetBSD.org>