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