Exemplo n.º 1
0
static int
cttykqfilter(struct dev_kqfilter_args *ap)
{
	cdev_t dev = ap->a_head.a_dev;
	struct proc *p = curproc;
	struct knote *kn = ap->a_kn;
	struct vnode *ttyvp;

	KKASSERT(p);
	ttyvp = cttyvp(p);

	if (ttyvp != NULL)
		return (VOP_KQFILTER(ttyvp, kn));

	ap->a_result = 0;

	switch (kn->kn_filter) {
	case EVFILT_READ:
		kn->kn_fop = &cttyfiltops_read;
		kn->kn_hook = (caddr_t)dev;
		break;
	case EVFILT_WRITE:
		kn->kn_fop = &cttyfiltops_write;
		kn->kn_hook = (caddr_t)dev;
		break;
	default:
		ap->a_result = EOPNOTSUPP;
		return (0);
	}

	return (0);
}
Exemplo n.º 2
0
/*
 * MPSAFE
 */
static int
vn_kqfilter(struct file *fp, struct knote *kn)
{
	int error;

	error = VOP_KQFILTER(((struct vnode *)fp->f_data), kn);
	return (error);
}
Exemplo n.º 3
0
int
cttykqfilter(dev_t dev, struct knote *kn)
{
	struct vnode *ttyvp = cttyvp(curproc);

	if (ttyvp == NULL)
		return (ENXIO);
	return (VOP_KQFILTER(ttyvp, kn));
}
Exemplo n.º 4
0
static int
cttykqfilter(dev_t dev, struct knote *kn)
{
	/* This is called from filt_fileattach() by the attaching process. */
	struct proc *p = curproc;
	struct vnode *ttyvp = cttyvp(p);

	if (ttyvp == NULL)
		return (1);
	return (VOP_KQFILTER(ttyvp, kn));
}
Exemplo n.º 5
0
static int
unionfs_kqfilter(void *v)
{
	struct vop_kqfilter_args *ap = v;
	struct unionfs_node *unp;
	struct vnode   *tvp;

	unp = VTOUNIONFS(ap->a_vp);
	tvp = (unp->un_uppervp != NULLVP ? unp->un_uppervp : unp->un_lowervp);

	return VOP_KQFILTER(tvp, ap->a_kn);
}
Exemplo n.º 6
0
int
RUMP_VOP_KQFILTER(struct vnode *vp,
    struct knote *kn)
{
	int error;

	rump_schedule();
	error = VOP_KQFILTER(vp, kn);
	rump_unschedule();

	return error;
}
Exemplo n.º 7
0
int
vn_kqfilter(struct file *fp, struct knote *kn)
{
	return (VOP_KQFILTER(((struct vnode *)fp->f_data), kn));
}
Exemplo n.º 8
0
/*
 * File table vnode kqfilter routine.
 */
int
vn_kqfilter(file_t *fp, struct knote *kn)
{

	return (VOP_KQFILTER(fp->f_data, kn));
}