home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 15 / 15.iso / s / s053 / 8.ddi / usr / include / sys / fs / rf_vfs.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-12-08  |  2.5 KB  |  98 lines

  1. /*    Copyright (c) 1990 UNIX System Laboratories, Inc.    */
  2. /*    Copyright (c) 1984, 1986, 1987, 1988, 1989, 1990 AT&T    */
  3. /*      All Rights Reserved      */
  4.  
  5. /*    THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF         */
  6. /*    UNIX System Laboratories, Inc.                         */
  7. /*    The copyright notice above does not evidence any       */
  8. /*    actual or intended publication of such source code.    */
  9.  
  10. #ifndef _SYS_FS_RF_VFS_H
  11. #define _SYS_FS_RF_VFS_H
  12.  
  13. #ident    "@(#)/usr/include/sys/fs/rf_vfs.h.sl 1.1 4.0 12/08/90 21241 AT&T-USL"
  14.  
  15. #include <sys/list.h>
  16. #include <sys/types.h>
  17. #include <sys/vnode.h>
  18. #include <sys/vfs.h>
  19.  
  20. /*
  21.  * RFS-specific part of VFS.
  22.  */
  23. typedef struct rf_vfs {
  24.     struct rf_vfs    *rfvfs_prev;
  25.     struct rf_vfs    *rfvfs_next;
  26.     vfs_t        *rfvfs_vfsp;    /* to vfs for resource */
  27.     vnode_t        *rfvfs_rootvp;    /* root vnode when mntproc NULL */
  28.     struct proc    *rfvfs_mntproc;    /* process mounting when rootvp NULL */
  29.     int        rfvfs_refcnt;    /* n sndds active in resource */
  30.     ushort        rfvfs_flags;    /* flags, below */
  31.     long        rfvfs_mntid;    /* "index" from static table days */
  32.     ls_elt_t    rfvfs_sdhash;    /* to hash chains for free sndds */
  33.     char        rfvfs_name[MAXDNAME + 1];
  34.                     /* resource name */
  35. } rf_vfs_t;
  36. /*
  37.  * flags in rf_vfs
  38.  */
  39. #define MFREE           0x0
  40. #define MFUMOUNT        0x40
  41. #define MLINKDOWN       0x80
  42. #define MCACHE          0x100
  43.  
  44. /*
  45.  * list header for RFS dependent VFSs
  46.  */
  47. typedef struct rf_head {
  48.     rf_vfs_t  *rfh_prev;
  49.     rf_vfs_t  *rfh_next;
  50. } rf_head_t;
  51. extern rf_head_t       rf_head;
  52.  
  53. /*
  54.  * for rfs mounts, mount system call gets a pointer to one
  55.  * of these as its "dataptr" arg
  56.  */
  57. typedef struct rf_mountdata {
  58.     ushort  rfm_flags;       /* RFS-specific flags */
  59.     rf_token_t rfm_token;
  60. } rf_mountdata_t;
  61. /*
  62.  * flags in rf_mountdata_t
  63.  */
  64. #define MS_CACHE    0x8
  65.  
  66. /*
  67.  * generic mount flags of interest
  68.  */
  69. #define MS_FLAGS_TO_RFS(flags)  ((flags) & MS_RDONLY)
  70.  
  71. /*
  72.  * Give a pointer to an rf_vfs structure, yield ptr to corresponding VFS
  73.  */
  74. #define RFTOVF(rf_vfsp)   ((vfs_t *)((rf_vfsp)->rfvfs_vfsp))
  75. /*
  76.  * Given a pointer to a VFS, yield ptr to corresponding rf_vfs structure
  77.  */
  78. #define VFTORF(vfsp)    ((rf_vfs_t *)((vfsp)->vfs_data))
  79. /* Is this an rf_vfs vnode pointer? */
  80. #define ISRFSVP(vp)      ((vp)->v_op == &rf_vnodeops)
  81. /* Is this a rf_vfst vfs pointer? */
  82. #define ISRFSVFSP(vfsp)   ((vfsp)->vfs_op == &rf_vfsops)
  83.  
  84. #if defined(_KERNEL)
  85.  
  86. extern struct vfsops rf_vfsops;
  87. extern struct vnodeops rf_vnodeops;
  88. extern struct vnodeops *rf_vnopsp;
  89.  
  90. extern int rfs_type;
  91.  
  92. extern rf_vfs_t *findrfvfs();
  93. extern int    rf_vp_preSVR4();
  94.  
  95. #endif
  96.  
  97. #endif /* _SYS_FS_RF_VFS_H */
  98.