Home | History | Annotate | Line # | Download | only in genfs
genfs.h revision 1.32
      1  1.32   hannken /*	$NetBSD: genfs.h,v 1.32 2014/02/27 16:51:38 hannken Exp $	*/
      2  1.24      elad 
      3  1.24      elad #ifndef	_MISCFS_GENFS_GENFS_H_
      4  1.24      elad #define	_MISCFS_GENFS_GENFS_H_
      5  1.24      elad 
      6  1.24      elad #include <sys/vnode.h>
      7  1.30  riastrad #include <sys/types.h>
      8  1.30  riastrad 
      9  1.30  riastrad struct componentname;
     10  1.30  riastrad struct mount;
     11   1.4     perry 
     12  1.18   xtraeme int	genfs_badop(void *);
     13  1.18   xtraeme int	genfs_nullop(void *);
     14  1.18   xtraeme int	genfs_enoioctl(void *);
     15  1.18   xtraeme int	genfs_enoextops(void *);
     16  1.18   xtraeme int	genfs_einval(void *);
     17  1.18   xtraeme int	genfs_eopnotsupp(void *);
     18  1.18   xtraeme int	genfs_ebadf(void *);
     19  1.18   xtraeme int	genfs_nolock(void *);
     20  1.18   xtraeme int	genfs_noislocked(void *);
     21  1.18   xtraeme int	genfs_nounlock(void *);
     22   1.1   mycroft 
     23  1.32   hannken int	genfs_deadlock(void *);
     24  1.32   hannken #define	genfs_deadislocked genfs_islocked
     25  1.32   hannken int	genfs_deadunlock(void *);
     26  1.32   hannken 
     27  1.18   xtraeme int	genfs_poll(void *);
     28  1.18   xtraeme int	genfs_kqfilter(void *);
     29  1.18   xtraeme int	genfs_fcntl(void *);
     30  1.18   xtraeme int	genfs_seek(void *);
     31  1.18   xtraeme int	genfs_abortop(void *);
     32  1.18   xtraeme int	genfs_revoke(void *);
     33  1.18   xtraeme int	genfs_lock(void *);
     34  1.18   xtraeme int	genfs_islocked(void *);
     35  1.18   xtraeme int	genfs_unlock(void *);
     36  1.18   xtraeme int	genfs_mmap(void *);
     37  1.18   xtraeme int	genfs_getpages(void *);
     38  1.18   xtraeme int	genfs_putpages(void *);
     39  1.18   xtraeme int	genfs_null_putpages(void *);
     40  1.18   xtraeme int	genfs_compat_getpages(void *);
     41  1.21  perseant 
     42  1.21  perseant int	genfs_do_putpages(struct vnode *, off_t, off_t, int, struct vm_page **);
     43  1.23  dholland 
     44  1.28     pooka int	genfs_statvfs(struct mount *, struct statvfs *);
     45  1.28     pooka 
     46  1.23  dholland int	genfs_renamelock_enter(struct mount *);
     47  1.23  dholland void	genfs_renamelock_exit(struct mount *);
     48  1.24      elad 
     49  1.27      elad int	genfs_can_access(enum vtype, mode_t, uid_t, gid_t, mode_t,
     50  1.27      elad 	    kauth_cred_t);
     51  1.29      elad int	genfs_can_chmod(enum vtype, kauth_cred_t, uid_t, gid_t, mode_t);
     52  1.29      elad int	genfs_can_chown(kauth_cred_t, uid_t, gid_t, uid_t, gid_t);
     53  1.26      elad int	genfs_can_chtimes(vnode_t *, u_int, uid_t, kauth_cred_t);
     54  1.29      elad int	genfs_can_chflags(kauth_cred_t, enum vtype, uid_t, bool);
     55  1.29      elad int	genfs_can_sticky(kauth_cred_t, uid_t, uid_t);
     56  1.29      elad int	genfs_can_extattr(kauth_cred_t, int, vnode_t *, const char *);
     57  1.24      elad 
     58  1.30  riastrad /*
     59  1.30  riastrad  * Rename is complicated.  Sorry.
     60  1.30  riastrad  */
     61  1.30  riastrad 
     62  1.30  riastrad struct genfs_rename_ops;
     63  1.30  riastrad 
     64  1.30  riastrad 
     65  1.30  riastrad int	genfs_insane_rename(void *,
     66  1.30  riastrad 	    int (*)(struct vnode *, struct componentname *,
     67  1.30  riastrad 		struct vnode *, struct componentname *,
     68  1.30  riastrad 		kauth_cred_t, bool));
     69  1.30  riastrad int	genfs_sane_rename(const struct genfs_rename_ops *,
     70  1.30  riastrad 	    struct vnode *, struct componentname *, void *,
     71  1.30  riastrad 	    struct vnode *, struct componentname *, void *,
     72  1.30  riastrad 	    kauth_cred_t, bool);
     73  1.30  riastrad 
     74  1.30  riastrad void	genfs_rename_knote(struct vnode *, struct vnode *, struct vnode *,
     75  1.30  riastrad 	    struct vnode *, bool);
     76  1.30  riastrad void	genfs_rename_cache_purge(struct vnode *, struct vnode *, struct vnode *,
     77  1.30  riastrad 	    struct vnode *);
     78  1.30  riastrad 
     79  1.30  riastrad int	genfs_ufslike_rename_check_possible(unsigned long, unsigned long,
     80  1.30  riastrad 	    unsigned long, unsigned long, bool,
     81  1.30  riastrad 	    unsigned long, unsigned long);
     82  1.30  riastrad int	genfs_ufslike_rename_check_permitted(kauth_cred_t,
     83  1.30  riastrad 	    struct vnode *, mode_t, uid_t,
     84  1.30  riastrad 	    struct vnode *, uid_t,
     85  1.30  riastrad 	    struct vnode *, mode_t, uid_t,
     86  1.30  riastrad 	    struct vnode *, uid_t);
     87  1.30  riastrad int	genfs_ufslike_remove_check_possible(unsigned long, unsigned long,
     88  1.30  riastrad 	    unsigned long, unsigned long);
     89  1.30  riastrad int	genfs_ufslike_remove_check_permitted(kauth_cred_t,
     90  1.30  riastrad 	    struct vnode *, mode_t, uid_t,
     91  1.30  riastrad 	    struct vnode *, uid_t);
     92  1.30  riastrad 
     93  1.30  riastrad struct genfs_rename_ops {
     94  1.30  riastrad 	bool (*gro_directory_empty_p)(struct mount *mp, kauth_cred_t cred,
     95  1.30  riastrad 	    struct vnode *vp, struct vnode *dvp);
     96  1.30  riastrad 	int (*gro_rename_check_possible)(struct mount *mp,
     97  1.30  riastrad 	    struct vnode *fdvp, struct vnode *fvp,
     98  1.30  riastrad 	    struct vnode *tdvp, struct vnode *tvp);
     99  1.30  riastrad 	int (*gro_rename_check_permitted)(struct mount *mp, kauth_cred_t cred,
    100  1.30  riastrad 	    struct vnode *fdvp, struct vnode *fvp,
    101  1.30  riastrad 	    struct vnode *tdvp, struct vnode *tvp);
    102  1.30  riastrad 	int (*gro_remove_check_possible)(struct mount *mp,
    103  1.30  riastrad 	    struct vnode *dvp, struct vnode *vp);
    104  1.30  riastrad 	int (*gro_remove_check_permitted)(struct mount *mp, kauth_cred_t cred,
    105  1.30  riastrad 	    struct vnode *dvp, struct vnode *vp);
    106  1.30  riastrad 	int (*gro_rename)(struct mount *mp, kauth_cred_t cred,
    107  1.30  riastrad 	    struct vnode *fdvp, struct componentname *fcnp,
    108  1.30  riastrad 	    void *fde, struct vnode *fvp,
    109  1.30  riastrad 	    struct vnode *tdvp, struct componentname *tcnp,
    110  1.30  riastrad 	    void *tde, struct vnode *tvp);
    111  1.30  riastrad 	int (*gro_remove)(struct mount *mp, kauth_cred_t cred,
    112  1.30  riastrad 	    struct vnode *dvp, struct componentname *cnp, void *de,
    113  1.30  riastrad 	    struct vnode *vp);
    114  1.30  riastrad 	int (*gro_lookup)(struct mount *mp, struct vnode *dvp,
    115  1.31  riastrad 	    struct componentname *cnp, void *de_ret, struct vnode **vp_ret);
    116  1.30  riastrad 	int (*gro_genealogy)(struct mount *mp, kauth_cred_t cred,
    117  1.30  riastrad 	    struct vnode *fdvp, struct vnode *tdvp,
    118  1.30  riastrad 	    struct vnode **intermediate_node_ret);
    119  1.30  riastrad 	int (*gro_lock_directory)(struct mount *mp, struct vnode *vp);
    120  1.30  riastrad };
    121  1.30  riastrad 
    122  1.24      elad #endif /* !_MISCFS_GENFS_GENFS_H_ */
    123