[BACK]Return to puffs_sys.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / fs / puffs

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

Diff for /src/sys/fs/puffs/puffs_sys.h between version 1.24 and 1.24.2.5

version 1.24, 2007/02/15 12:14:34 version 1.24.2.5, 2007/05/17 13:41:44
Line 38 
Line 38 
 #include <sys/param.h>  #include <sys/param.h>
 #include <sys/select.h>  #include <sys/select.h>
 #include <sys/kauth.h>  #include <sys/kauth.h>
 #include <sys/lock.h>  #include <sys/mutex.h>
 #include <sys/queue.h>  #include <sys/queue.h>
 #include <sys/pool.h>  #include <sys/pool.h>
   
Line 59  extern struct pool puffs_pnpool;
Line 59  extern struct pool puffs_pnpool;
   
 #define PUFFS_NAMEPREFIX "puffs:"  #define PUFFS_NAMEPREFIX "puffs:"
   
 /*  
  * While a request is going to userspace, park the caller within the  
  * kernel.  This is the kernel counterpart of "struct puffs_req".  
  */  
 struct puffs_park {  
         struct puffs_req        *park_preq;     /* req followed by buf  */  
         size_t                  park_copylen;   /* userspace copylength */  
   
         size_t                  park_maxlen;    /* max size, only for "adj" */  
                                                 /* ^ XXX: overloaded */  
   
         TAILQ_ENTRY(puffs_park) park_entries;  
 };  
   
 #define PUFFS_SIZEOPREQ_UIO_IN 1  #define PUFFS_SIZEOPREQ_UIO_IN 1
 #define PUFFS_SIZEOPREQ_UIO_OUT 2  #define PUFFS_SIZEOPREQ_UIO_OUT 2
 #define PUFFS_SIZEOPREQ_BUF_IN 3  #define PUFFS_SIZEOPREQ_BUF_IN 3
Line 118  extern int puffsdebug; /* puffs_subr.c *
Line 104  extern int puffsdebug; /* puffs_subr.c *
 #define FPTOPMP(fp) (((struct puffs_instance *)fp->f_data)->pi_pmp)  #define FPTOPMP(fp) (((struct puffs_instance *)fp->f_data)->pi_pmp)
 #define FPTOPI(fp) ((struct puffs_instance *)fp->f_data)  #define FPTOPI(fp) ((struct puffs_instance *)fp->f_data)
   
   /* we don't pass the kernel overlay to userspace */
   #define PUFFS_TOFHSIZE(s) ((s)==0 ? (s) : (s)+4)
   #define PUFFS_FROMFHSIZE(s) ((s)==0 ? (s) : (s)-4)
   
   #define ALLOPS(pmp) (pmp->pmp_flags & PUFFS_KFLAG_ALLOPS)
 #define EXISTSOP(pmp, op) \  #define EXISTSOP(pmp, op) \
  (((pmp)->pmp_flags&PUFFS_KFLAG_ALLOPS) || ((pmp)->pmp_vnopmask[PUFFS_VN_##op]))   (ALLOPS(pmp) || ((pmp)->pmp_vnopmask[PUFFS_VN_##op]))
   
 #define PUFFS_DOCACHE(pmp)      (((pmp)->pmp_flags & PUFFS_KFLAG_NOCACHE) == 0)  #define PUFFS_DOCACHE(pmp)      (((pmp)->pmp_flags & PUFFS_KFLAG_NOCACHE) == 0)
   
   #define PUFFS_WCACHEINFO(pmp)   0
   
 TAILQ_HEAD(puffs_wq, puffs_park);  TAILQ_HEAD(puffs_wq, puffs_park);
 LIST_HEAD(puffs_node_hashlist, puffs_node);  LIST_HEAD(puffs_node_hashlist, puffs_node);
 struct puffs_mount {  struct puffs_mount {
         struct simplelock               pmp_lock;          kmutex_t                        pmp_lock;
   
         struct puffs_args               pmp_args;          struct puffs_kargs              pmp_args;
 #define pmp_flags pmp_args.pa_flags  #define pmp_flags pmp_args.pa_flags
 #define pmp_vnopmask pmp_args.pa_vnopmask  #define pmp_vnopmask pmp_args.pa_vnopmask
   
         struct puffs_wq                 pmp_req_touser;          struct puffs_wq                 pmp_req_touser;
         size_t                          pmp_req_touser_waiters;          int                             pmp_req_touser_count;
           kcondvar_t                      pmp_req_waiter_cv;
         size_t                          pmp_req_maxsize;          size_t                          pmp_req_maxsize;
   
         struct puffs_wq                 pmp_req_replywait;          struct puffs_wq                 pmp_req_replywait;
         TAILQ_HEAD(, puffs_sizepark)    pmp_req_sizepark;          TAILQ_HEAD(, puffs_sizepark)    pmp_req_sizepark;
   
         struct puffs_node_hashlist      *pmp_pnodehash;          struct puffs_node_hashlist      *pmp_pnodehash;
         size_t                          pmp_npnodehash;          int                             pmp_npnodehash;
   
         struct mount                    *pmp_mp;          struct mount                    *pmp_mp;
         struct vnode                    *pmp_root;          struct vnode                    *pmp_root;
         void                            *pmp_rootcookie;          void                            *pmp_rootcookie;
         struct selinfo                  *pmp_sel;       /* in puffs_instance */          struct selinfo                  *pmp_sel;       /* in puffs_instance */
   
         uint64_t                        pmp_nextreq;          unsigned int                    pmp_refcount;
         uint8_t                         pmp_status;          kcondvar_t                      pmp_refcount_cv;
   
           kcondvar_t                      pmp_unmounting_cv;
         uint8_t                         pmp_unmounting;          uint8_t                         pmp_unmounting;
   
           uint8_t                         pmp_status;
         uint8_t                         pmp_suspend;          uint8_t                         pmp_suspend;
   
           uint64_t                        pmp_nextreq;
 };  };
   
 #define PUFFSTAT_BEFOREINIT     0  #define PUFFSTAT_BEFOREINIT     0
Line 158  struct puffs_mount {
Line 158  struct puffs_mount {
 #define PUFFSTAT_RUNNING        2  #define PUFFSTAT_RUNNING        2
 #define PUFFSTAT_DYING          3 /* Do you want your possessions identified? */  #define PUFFSTAT_DYING          3 /* Do you want your possessions identified? */
   
   
 #define PNODE_NOREFS    0x01    /* vnode inactive, no backend reference */  #define PNODE_NOREFS    0x01    /* vnode inactive, no backend reference */
 #define PNODE_SUSPEND   0x02    /* issue all operations as FAF          */  #define PNODE_SUSPEND   0x02    /* issue all operations as FAF          */
 #if 0  #define PNODE_DOINACT   0x04    /* if inactive-on-demand, call inactive */
 #define PNODE_LOCKED    0x0  
 #define PNODE_WANTED    0x0  #define PNODE_METACACHE_ATIME   0x10    /* cache atime metadata */
 #endif  #define PNODE_METACACHE_CTIME   0x20    /* cache atime metadata */
   #define PNODE_METACACHE_MTIME   0x40    /* cache atime metadata */
   #define PNODE_METACACHE_SIZE    0x80    /* cache atime metadata */
   #define PNODE_METACACHE_MASK    0xf0
   
 struct puffs_node {  struct puffs_node {
         struct genfs_node pn_gnode;     /* genfs glue                   */          struct genfs_node pn_gnode;     /* genfs glue                   */
   
Line 171  struct puffs_node {
Line 176  struct puffs_node {
         struct vnode    *pn_vp;         /* backpointer to vnode         */          struct vnode    *pn_vp;         /* backpointer to vnode         */
         uint32_t        pn_stat;        /* node status                  */          uint32_t        pn_stat;        /* node status                  */
   
           /* metacache */
           struct timespec pn_mc_atime;
           struct timespec pn_mc_ctime;
           struct timespec pn_mc_mtime;
           u_quad_t        pn_mc_size;
   
         LIST_ENTRY(puffs_node) pn_hashent;          LIST_ENTRY(puffs_node) pn_hashent;
 };  };
   
   typedef void (*parkdone_fn)(struct puffs_req *, void *);
   
   void    puffs_transport_init(void);
   void    puffs_transport_destroy(void);
   
   void    puffs_msgif_init(void);
   void    puffs_msgif_destroy(void);
   void    *puffs_park_alloc(int);
   void    puffs_park_release(void *, int);
   
 int     puffs_start2(struct puffs_mount *, struct puffs_startreq *);  int     puffs_start2(struct puffs_mount *, struct puffs_startreq *);
   
 int     puffs_vfstouser(struct puffs_mount *, int, void *, size_t);  int     puffs_vfstouser(struct puffs_mount *, int, void *, size_t);
 void    puffs_suspendtouser(struct puffs_mount *, int);  void    puffs_suspendtouser(struct puffs_mount *, int);
 int     puffs_vntouser(struct puffs_mount *, int, void *, size_t, void *,  int     puffs_vntouser(struct puffs_mount *, int, void *, size_t, size_t,
                        struct vnode *, struct vnode *);                         struct vnode *, struct vnode *);
 void    puffs_vntouser_faf(struct puffs_mount *, int, void *, size_t, void *);  int     puffs_vntouser_req(struct puffs_mount *, int, void *, size_t, size_t,
 int     puffs_vntouser_req(struct puffs_mount *, int, void *, size_t,                             uint64_t, struct vnode *, struct vnode *);
                            void *, uint64_t, struct vnode *, struct vnode *);  void    puffs_vntouser_call(struct puffs_mount *, int, void *, size_t, size_t,
 int     puffs_vntouser_adjbuf(struct puffs_mount *, int, void **, size_t *,                              parkdone_fn, void *, struct vnode *, struct vnode*);
                               size_t, void *, struct vnode *, struct vnode *);  void    puffs_vntouser_faf(struct puffs_mount *, int, void *, size_t,
                              struct vnode *);
   void    puffs_cacheop(struct puffs_mount *, struct puffs_park *,
                         struct puffs_cacheinfo *, size_t, void *);
   struct puffs_park *puffs_cacheop_alloc(void);
   
 int     puffs_getvnode(struct mount *, void *, enum vtype, voff_t, dev_t,  int     puffs_getvnode(struct mount *, void *, enum vtype, voff_t, dev_t,
                        struct vnode **);                         struct vnode **);
Line 196  void puffs_makecn(struct puffs_kcn *, co
Line 221  void puffs_makecn(struct puffs_kcn *, co
 void    puffs_credcvt(struct puffs_cred *, kauth_cred_t);  void    puffs_credcvt(struct puffs_cred *, kauth_cred_t);
 pid_t   puffs_lwp2pid(struct lwp *);  pid_t   puffs_lwp2pid(struct lwp *);
   
   void    puffs_parkdone_asyncbioread(struct puffs_req *, void *);
   
   void    puffs_mp_reference(struct puffs_mount *);
   void    puffs_mp_release(struct puffs_mount *);
   
 void    puffs_updatenode(struct vnode *, int);  void    puffs_updatenode(struct vnode *, int);
 #define PUFFS_UPDATEATIME       0x01  #define PUFFS_UPDATEATIME       0x01
 #define PUFFS_UPDATECTIME       0x02  #define PUFFS_UPDATECTIME       0x02

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.24.2.5

CVSweb <webmaster@jp.NetBSD.org>