Deleted Added
full compact
37c37
< __FBSDID("$FreeBSD: head/sys/kern/subr_log.c 216952 2011-01-04 10:59:38Z kib $");
---
> __FBSDID("$FreeBSD: head/sys/kern/subr_log.c 230866 2012-02-01 14:34:52Z kib $");
61a62
> static d_kqfilter_t logkqfilter;
71a73
> .d_kqfilter = logkqfilter,
74a77,86
> static int logkqread(struct knote *note, long hint);
> static void logkqdetach(struct knote *note);
>
> static struct filterops log_read_filterops = {
> .f_isfd = 1,
> .f_attach = NULL,
> .f_detach = logkqdetach,
> .f_event = logkqread,
> };
>
183a196,220
> static int
> logkqfilter(struct cdev *dev, struct knote *kn)
> {
>
> if (kn->kn_filter != EVFILT_READ)
> return (EINVAL);
>
> kn->kn_fop = &log_read_filterops;
> kn->kn_hook = NULL;
>
> mtx_lock(&msgbuf_lock);
> knlist_add(&logsoftc.sc_selp.si_note, kn, 1);
> mtx_unlock(&msgbuf_lock);
> return (0);
> }
>
> static int
> logkqread(struct knote *kn, long hint)
> {
>
> mtx_assert(&msgbuf_lock, MA_OWNED);
> kn->kn_data = msgbuf_getcount(msgbufp);
> return (kn->kn_data != 0);
> }
>
184a222,230
> logkqdetach(struct knote *kn)
> {
>
> mtx_lock(&msgbuf_lock);
> knlist_remove(&logsoftc.sc_selp.si_note, kn, 1);
> mtx_unlock(&msgbuf_lock);
> }
>
> static void
200a247
> KNOTE_LOCKED(&logsoftc.sc_selp.si_note, 0);
258a306
> knlist_init_mtx(&logsoftc.sc_selp.si_note, &msgbuf_lock);