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