Changeset View
Changeset View
Standalone View
Standalone View
fs/pseudofs/pseudofs.h
Context not available. | |||||
/* | /* | ||||
* Now for some initialization magic... | * Now for some initialization magic... | ||||
*/ | */ | ||||
#define PSEUDOFS(name, version, jflag) \ | #define PSEUDOFS(name, version, flags) \ | ||||
\ | \ | ||||
static struct pfs_info name##_info = { \ | static struct pfs_info name##_info = { \ | ||||
#name, \ | #name, \ | ||||
Context not available. | |||||
\ | \ | ||||
static int \ | static int \ | ||||
_##name##_mount(struct mount *mp) { \ | _##name##_mount(struct mount *mp) { \ | ||||
if (jflag && !prison_allow(curthread->td_ucred, jflag)) \ | |||||
return (EPERM); \ | |||||
return (pfs_mount(&name##_info, mp)); \ | return (pfs_mount(&name##_info, mp)); \ | ||||
} \ | } \ | ||||
\ | \ | ||||
Context not available. | |||||
.vfs_uninit = _##name##_uninit, \ | .vfs_uninit = _##name##_uninit, \ | ||||
.vfs_unmount = pfs_unmount, \ | .vfs_unmount = pfs_unmount, \ | ||||
}; \ | }; \ | ||||
VFS_SET(name##_vfsops, name, VFCF_SYNTHETIC | (jflag ? VFCF_JAIL : 0)); \ | VFS_SET(name##_vfsops, name, VFCF_SYNTHETIC | flags); \ | ||||
MODULE_VERSION(name, version); \ | MODULE_VERSION(name, version); \ | ||||
MODULE_DEPEND(name, pseudofs, 1, 1, 1); | MODULE_DEPEND(name, pseudofs, 1, 1, 1); | ||||
Context not available. |