version 1.192, 2014/03/24 13:42:40 |
version 1.192.14.1, 2017/07/08 16:52:27 |
Line 548 filt_genfsread(struct knote *kn, long hi |
|
Line 548 filt_genfsread(struct knote *kn, long hi |
|
} |
} |
|
|
static int |
static int |
|
filt_genfswrite(struct knote *kn, long hint) |
|
{ |
|
struct vnode *vp = (struct vnode *)kn->kn_hook; |
|
|
|
/* |
|
* filesystem is gone, so set the EOF flag and schedule |
|
* the knote for deletion. |
|
*/ |
|
switch (hint) { |
|
case NOTE_REVOKE: |
|
KASSERT(mutex_owned(vp->v_interlock)); |
|
kn->kn_flags |= (EV_EOF | EV_ONESHOT); |
|
return (1); |
|
case 0: |
|
mutex_enter(vp->v_interlock); |
|
kn->kn_data = 0; |
|
mutex_exit(vp->v_interlock); |
|
return 1; |
|
default: |
|
KASSERT(mutex_owned(vp->v_interlock)); |
|
kn->kn_data = 0; |
|
return 1; |
|
} |
|
} |
|
|
|
static int |
filt_genfsvnode(struct knote *kn, long hint) |
filt_genfsvnode(struct knote *kn, long hint) |
{ |
{ |
struct vnode *vp = (struct vnode *)kn->kn_hook; |
struct vnode *vp = (struct vnode *)kn->kn_hook; |
Line 578 filt_genfsvnode(struct knote *kn, long h |
|
Line 604 filt_genfsvnode(struct knote *kn, long h |
|
|
|
static const struct filterops genfsread_filtops = |
static const struct filterops genfsread_filtops = |
{ 1, NULL, filt_genfsdetach, filt_genfsread }; |
{ 1, NULL, filt_genfsdetach, filt_genfsread }; |
|
static const struct filterops genfswrite_filtops = |
|
{ 1, NULL, filt_genfsdetach, filt_genfswrite }; |
static const struct filterops genfsvnode_filtops = |
static const struct filterops genfsvnode_filtops = |
{ 1, NULL, filt_genfsdetach, filt_genfsvnode }; |
{ 1, NULL, filt_genfsdetach, filt_genfsvnode }; |
|
|
Line 597 genfs_kqfilter(void *v) |
|
Line 625 genfs_kqfilter(void *v) |
|
case EVFILT_READ: |
case EVFILT_READ: |
kn->kn_fop = &genfsread_filtops; |
kn->kn_fop = &genfsread_filtops; |
break; |
break; |
|
case EVFILT_WRITE: |
|
kn->kn_fop = &genfswrite_filtops; |
|
break; |
case EVFILT_VNODE: |
case EVFILT_VNODE: |
kn->kn_fop = &genfsvnode_filtops; |
kn->kn_fop = &genfsvnode_filtops; |
break; |
break; |