[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.48.4.7 and 1.49

version 1.48.4.7, 2007/12/09 19:38:10 version 1.49, 2007/09/24 19:15:42
Line 54  extern const struct vnodeopv_desc puffs_
Line 54  extern const struct vnodeopv_desc puffs_
   
 extern struct pool puffs_pnpool;  extern struct pool puffs_pnpool;
   
   #define PUFFS_SIZEOPREQ_UIO_IN 1
   #define PUFFS_SIZEOPREQ_UIO_OUT 2
   #define PUFFS_SIZEOPREQ_BUF_IN 3
   #define PUFFS_SIZEOPREQ_BUF_OUT 4
   
   #define PUFFS_SIZEOP_UIO(a)     \
           (((a)==PUFFS_SIZEOPREQ_UIO_IN)||(a)==PUFFS_SIZEOPREQ_UIO_OUT)
   #define PUFFS_SIZEOP_BUF(a)     \
           (((a)==PUFFS_SIZEOPREQ_BUF_IN)||(a)==PUFFS_SIZEOPREQ_BUF_OUT)
   
   /* XXX: alignment-optimization */
   struct puffs_sizepark {
           uint64_t        pkso_reqid;
           uint8_t         pkso_reqtype;
   
           struct uio      *pkso_uio;
           void            *pkso_copybuf;
           size_t          pkso_bufsize;
   
           TAILQ_ENTRY(puffs_sizepark) pkso_entries;
   };
   
 #ifdef DEBUG  #ifdef DEBUG
 #ifndef PUFFSDEBUG  #ifndef PUFFSDEBUG
 #define PUFFSDEBUG  #define PUFFSDEBUG
Line 74  extern int puffsdebug; /* puffs_subr.c *
Line 96  extern int puffsdebug; /* puffs_subr.c *
 #define VPTOPP(vp) ((struct puffs_node *)(vp)->v_data)  #define VPTOPP(vp) ((struct puffs_node *)(vp)->v_data)
 #define VPTOPNC(vp) (((struct puffs_node *)(vp)->v_data)->pn_cookie)  #define VPTOPNC(vp) (((struct puffs_node *)(vp)->v_data)->pn_cookie)
 #define VPTOPUFFSMP(vp) ((struct puffs_mount*)((struct puffs_node*)vp->v_data))  #define VPTOPUFFSMP(vp) ((struct puffs_mount*)((struct puffs_node*)vp->v_data))
   #define FPTOPMP(fp) (((struct puffs_instance *)fp->f_data)->pi_pmp)
   #define FPTOPI(fp) ((struct puffs_instance *)fp->f_data)
   
 /* we don't pass the kernel overlay to userspace */  /* we don't pass the kernel overlay to userspace */
 #define PUFFS_TOFHSIZE(s) ((s)==0 ? (s) : (s)+4)  #define PUFFS_TOFHSIZE(s) ((s)==0 ? (s) : (s)+4)
Line 92  extern int puffsdebug; /* puffs_subr.c *
Line 116  extern int puffsdebug; /* puffs_subr.c *
   
 #define PUFFS_WCACHEINFO(pmp)   0  #define PUFFS_WCACHEINFO(pmp)   0
   
 struct puffs_newcookie {  TAILQ_HEAD(puffs_wq, puffs_park);
         void    *pnc_cookie;  
   
         LIST_ENTRY(puffs_newcookie) pnc_entries;  
 };  
   
 TAILQ_HEAD(puffs_wq, puffs_msgpark);  
 LIST_HEAD(puffs_node_hashlist, puffs_node);  LIST_HEAD(puffs_node_hashlist, puffs_node);
 struct puffs_mount {  struct puffs_mount {
         kmutex_t                        pmp_lock;          kmutex_t                        pmp_lock;
Line 107  struct puffs_mount {
Line 125  struct puffs_mount {
 #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_msg_touser;          struct puffs_wq                 pmp_req_touser;
         int                             pmp_msg_touser_count;          int                             pmp_req_touser_count;
         kcondvar_t                      pmp_msg_waiter_cv;          kcondvar_t                      pmp_req_waiter_cv;
         size_t                          pmp_msg_maxsize;          size_t                          pmp_req_maxsize;
   
         struct puffs_wq                 pmp_msg_replywait;          struct puffs_wq                 pmp_req_replywait;
           TAILQ_HEAD(, puffs_sizepark)    pmp_req_sizepark;
   
         struct puffs_node_hashlist      *pmp_pnodehash;          struct puffs_node_hashlist      *pmp_pnodehash;
         int                             pmp_npnodehash;          int                             pmp_npnodehash;
   
         LIST_HEAD(, puffs_newcookie)    pmp_newcookie;  
   
         struct mount                    *pmp_mp;          struct mount                    *pmp_mp;
   
         struct vnode                    *pmp_root;          struct vnode                    *pmp_root;
Line 127  struct puffs_mount {
Line 144  struct puffs_mount {
         vsize_t                         pmp_root_vsize;          vsize_t                         pmp_root_vsize;
         dev_t                           pmp_root_rdev;          dev_t                           pmp_root_rdev;
   
         struct putter_instance          *pmp_pi;          struct selinfo                  *pmp_sel;       /* in puffs_instance */
   
         unsigned int                    pmp_refcount;          unsigned int                    pmp_refcount;
         kcondvar_t                      pmp_refcount_cv;          kcondvar_t                      pmp_refcount_cv;
Line 138  struct puffs_mount {
Line 155  struct puffs_mount {
         uint8_t                         pmp_status;          uint8_t                         pmp_status;
         uint8_t                         pmp_suspend;          uint8_t                         pmp_suspend;
   
         uint8_t                         *pmp_curput;          uint64_t                        pmp_nextreq;
         size_t                          pmp_curres;  
         void                            *pmp_curopaq;  
   
         uint64_t                        pmp_nextmsgid;  
 };  };
   
 #define PUFFSTAT_BEFOREINIT     0  #define PUFFSTAT_BEFOREINIT     0
Line 186  struct puffs_node {
Line 199  struct puffs_node {
         LIST_ENTRY(puffs_node) pn_hashent;          LIST_ENTRY(puffs_node) pn_hashent;
 };  };
   
 typedef void (*parkdone_fn)(struct puffs_mount *, struct puffs_req *, void *);  typedef void (*parkdone_fn)(struct puffs_req *, void *);
   
   void    puffs_transport_init(void);
   void    puffs_transport_destroy(void);
   
 struct puffs_msgpark;  
 void    puffs_msgif_init(void);  void    puffs_msgif_init(void);
 void    puffs_msgif_destroy(void);  void    puffs_msgif_destroy(void);
 int     puffs_msgmem_alloc(size_t, struct puffs_msgpark **, void **, int);  void    *puffs_park_alloc(int);
 void    puffs_msgmem_release(struct puffs_msgpark *);  void    puffs_park_release(void *, int);
   
 void    puffs_msg_setfaf(struct puffs_msgpark *);  int     puffs_vfstouser(struct puffs_mount *, int, void *, size_t);
 void    puffs_msg_setdelta(struct puffs_msgpark *, size_t);  void    puffs_suspendtouser(struct puffs_mount *, int);
 void    puffs_msg_setinfo(struct puffs_msgpark *, int, int, void *);  int     puffs_vntouser(struct puffs_mount *, int, void *, size_t, size_t,
 void    puffs_msg_setcall(struct puffs_msgpark *, parkdone_fn, void *);                         struct vnode *, struct vnode *);
   int     puffs_vntouser_req(struct puffs_mount *, int, void *, size_t, size_t,
 void    puffs_msg_enqueue(struct puffs_mount *, struct puffs_msgpark *);                             uint64_t, struct vnode *, struct vnode *);
 int     puffs_msg_wait(struct puffs_mount *, struct puffs_msgpark *);  void    puffs_vntouser_call(struct puffs_mount *, int, void *, size_t, size_t,
 int     puffs_msg_wait2(struct puffs_mount *, struct puffs_msgpark *,                              parkdone_fn, void *, struct vnode *, struct vnode*);
                         struct puffs_node *, struct puffs_node *);  void    puffs_vntouser_faf(struct puffs_mount *, int, void *, size_t,
                              struct vnode *);
 void    puffs_msg_sendresp(struct puffs_mount *, struct puffs_req *, int);  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 215  void puffs_putvnode(struct vnode *);
Line 232  void puffs_putvnode(struct vnode *);
 void    puffs_releasenode(struct puffs_node *);  void    puffs_releasenode(struct puffs_node *);
 void    puffs_referencenode(struct puffs_node *);  void    puffs_referencenode(struct puffs_node *);
   
 #define PUFFS_NOSUCHCOOKIE (-1)  int     puffs_pnode2vnode(struct puffs_mount *, void *, int, struct vnode **);
 int     puffs_cookie2vnode(struct puffs_mount *, void *, int, int,  
                            struct vnode **);  
 void    puffs_makecn(struct puffs_kcn *, struct puffs_kcred *,  void    puffs_makecn(struct puffs_kcn *, struct puffs_kcred *,
                      const struct componentname *, int);                       struct puffs_kcid *, const struct componentname *, int);
 void    puffs_credcvt(struct puffs_kcred *, kauth_cred_t);  void    puffs_credcvt(struct puffs_kcred *, kauth_cred_t);
   void    puffs_cidcvt(struct puffs_kcid *, const struct lwp *);
   
 void    puffs_parkdone_asyncbioread(struct puffs_mount *,  void    puffs_parkdone_asyncbioread(struct puffs_req *, void *);
                                     struct puffs_req *, void *);  void    puffs_parkdone_poll(struct puffs_req *, void *);
 void    puffs_parkdone_asyncbiowrite(struct puffs_mount *,  
                                      struct puffs_req *, void *);  
 void    puffs_parkdone_poll(struct puffs_mount *, struct puffs_req *, void *);  
   
 void    puffs_mp_reference(struct puffs_mount *);  void    puffs_mp_reference(struct puffs_mount *);
 void    puffs_mp_release(struct puffs_mount *);  void    puffs_mp_release(struct puffs_mount *);
   
 void    puffs_gop_size(struct vnode *, off_t, off_t *, int);  void    puffs_updatenode(struct vnode *, int);
 void    puffs_gop_markupdate(struct vnode *, int);  
   
 void    puffs_senderr(struct puffs_mount *, int, int, const char *, void *);  
   
 void    puffs_updatenode(struct puffs_node *, int, voff_t);  
 #define PUFFS_UPDATEATIME       0x01  #define PUFFS_UPDATEATIME       0x01
 #define PUFFS_UPDATECTIME       0x02  #define PUFFS_UPDATECTIME       0x02
 #define PUFFS_UPDATEMTIME       0x04  #define PUFFS_UPDATEMTIME       0x04
 #define PUFFS_UPDATESIZE        0x08  #define PUFFS_UPDATESIZE        0x08
   
 void    puffs_userdead(struct puffs_mount *);  int     puffs_setpmp(pid_t, int, struct puffs_mount *);
   void    puffs_nukebypmp(struct puffs_mount *);
   
   uint64_t        puffs_getreqid(struct puffs_mount *);
   void            puffs_userdead(struct puffs_mount *);
   
   /* get/put called by ioctl handler */
   int     puffs_getop(struct puffs_mount *, struct puffs_reqh_get *, int);
   int     puffs_putop(struct puffs_mount *, struct puffs_reqh_put *);
   
 extern int (**puffs_vnodeop_p)(void *);  extern int (**puffs_vnodeop_p)(void *);
   
 /* for putter */  MALLOC_DECLARE(M_PUFFS);
 int     puffs_msgif_getout(void *, size_t, int, uint8_t **, size_t *, void **);  
 void    puffs_msgif_releaseout(void *, void *, int);  
 int     puffs_msgif_dispatch(void *, struct putter_hdr *);  
 size_t  puffs_msgif_waitcount(void *);  
 int     puffs_msgif_close(void *);  
   
 static __inline int  
 checkerr(struct puffs_mount *pmp, int error, const char *str)  
 {  
   
         if (error < 0 || error > ELAST) {  
                 puffs_senderr(pmp, PUFFS_ERR_ERROR, error, str, NULL);  
                 error = EPROTO;  
         }  
   
         return error;  
 }  
   
 #define PUFFS_MSG_VARS(type, a)                                         \  
         struct puffs_##type##msg_##a *a##_msg;                          \  
         struct puffs_msgpark *park_##a = NULL  
   
 #define PUFFS_MSG_ALLOC(type, a)                                        \  
         puffs_msgmem_alloc(sizeof(struct puffs_##type##msg_##a),        \  
             &park_##a, (void **)& a##_msg, 1)  
   
 #define PUFFS_MSG_RELEASE(a)                                            \  
 do {                                                                    \  
         if (park_##a) puffs_msgmem_release(park_##a);                   \  
 } while (/*CONSTCOND*/0)  
   
 #define PUFFS_MSG_ENQUEUEWAIT(pmp, park, var)                           \  
 do {                                                                    \  
         puffs_msg_enqueue(pmp, park);                                   \  
         var = puffs_msg_wait(pmp, park);                                \  
 } while (/*CONSTCOND*/0)  
   
 #define PUFFS_MSG_ENQUEUEWAIT2(pmp, park, vp1, vp2, var)                \  
 do {                                                                    \  
         puffs_msg_enqueue(pmp, park);                                   \  
         var = puffs_msg_wait2(pmp, park, vp1, vp2);                     \  
 } while (/*CONSTCOND*/0)  
   
 #endif /* _PUFFS_SYS_H_ */  #endif /* _PUFFS_SYS_H_ */

Legend:
Removed from v.1.48.4.7  
changed lines
  Added in v.1.49

CVSweb <webmaster@jp.NetBSD.org>