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