version 1.554, 2021/11/07 13:47:50 |
version 1.555, 2022/02/12 15:51:29 |
Line 168 const u_int nmountcompatnames = __arrayc |
|
Line 168 const u_int nmountcompatnames = __arrayc |
|
/* |
/* |
* Filter event method for EVFILT_FS. |
* Filter event method for EVFILT_FS. |
*/ |
*/ |
static struct klist fs_klist = SLIST_HEAD_INITIALIZER(&fs_klist); |
static struct klist fs_klist; |
kmutex_t fs_klist_lock; |
static kmutex_t fs_klist_lock; |
|
|
CTASSERT((NOTE_SUBMIT & VQ_MOUNT) == 0); |
CTASSERT((NOTE_SUBMIT & VQ_MOUNT) == 0); |
CTASSERT((NOTE_SUBMIT & VQ_UNMOUNT) == 0); |
CTASSERT((NOTE_SUBMIT & VQ_UNMOUNT) == 0); |
|
|
|
void |
|
vfs_evfilt_fs_init(void) |
|
{ |
|
klist_init(&fs_klist); |
|
mutex_init(&fs_klist_lock, MUTEX_DEFAULT, IPL_NONE); |
|
} |
|
|
static int |
static int |
filt_fsattach(struct knote *kn) |
filt_fsattach(struct knote *kn) |
{ |
{ |
mutex_enter(&fs_klist_lock); |
mutex_enter(&fs_klist_lock); |
kn->kn_flags |= EV_CLEAR; |
kn->kn_flags |= EV_CLEAR; |
SLIST_INSERT_HEAD(&fs_klist, kn, kn_selnext); |
klist_insert(&fs_klist, kn); |
mutex_exit(&fs_klist_lock); |
mutex_exit(&fs_klist_lock); |
|
|
return 0; |
return 0; |
|
|
filt_fsdetach(struct knote *kn) |
filt_fsdetach(struct knote *kn) |
{ |
{ |
mutex_enter(&fs_klist_lock); |
mutex_enter(&fs_klist_lock); |
SLIST_REMOVE(&fs_klist, kn, knote, kn_selnext); |
klist_remove(&fs_klist, kn); |
mutex_exit(&fs_klist_lock); |
mutex_exit(&fs_klist_lock); |
} |
} |
|
|