xref: /freebsd/share/man/man9/kqueue.9 (revision 646fa3876792383a2b173b928581d7708c76c4ab)
14ce04b3dSJohn-Mark Gurney.\" Copyright 2006,2011 John-Mark Gurney
290db62acSJohn-Mark Gurney.\" All rights reserved.
390db62acSJohn-Mark Gurney.\"
490db62acSJohn-Mark Gurney.\" Redistribution and use in source and binary forms, with or without
590db62acSJohn-Mark Gurney.\" modification, are permitted provided that the following conditions
690db62acSJohn-Mark Gurney.\" are met:
790db62acSJohn-Mark Gurney.\" 1. Redistributions of source code must retain the above copyright
890db62acSJohn-Mark Gurney.\"    notice, this list of conditions and the following disclaimer.
990db62acSJohn-Mark Gurney.\" 2. Redistributions in binary form must reproduce the above copyright
1090db62acSJohn-Mark Gurney.\"    notice, this list of conditions and the following disclaimer in the
1190db62acSJohn-Mark Gurney.\"    documentation and/or other materials provided with the distribution.
1290db62acSJohn-Mark Gurney.\"
1390db62acSJohn-Mark Gurney.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1490db62acSJohn-Mark Gurney.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1590db62acSJohn-Mark Gurney.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1690db62acSJohn-Mark Gurney.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1790db62acSJohn-Mark Gurney.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1890db62acSJohn-Mark Gurney.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
1990db62acSJohn-Mark Gurney.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2090db62acSJohn-Mark Gurney.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2190db62acSJohn-Mark Gurney.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2290db62acSJohn-Mark Gurney.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2390db62acSJohn-Mark Gurney.\" SUCH DAMAGE.
2490db62acSJohn-Mark Gurney.\"
2590db62acSJohn-Mark Gurney.\" $FreeBSD$
2690db62acSJohn-Mark Gurney.\"
27b25711e6SAlexander V. Chernikov.Dd March 26, 2012
2890db62acSJohn-Mark Gurney.Dt KQUEUE 9
2990db62acSJohn-Mark Gurney.Os
3090db62acSJohn-Mark Gurney.Sh NAME
3174a603ebSRuslan Ermilov.Nm kqueue_add_filteropts , kqueue_del_filteropts ,
3274a603ebSRuslan Ermilov.Nm kqfd_register ,
3374a603ebSRuslan Ermilov.Nm knote_fdclose ,
34b25711e6SAlexander V. Chernikov.Nm knlist_init , knlist_init_mtx , knlist_init_rw_reader ,
3574a603ebSRuslan Ermilov.Nm knlist_add , knlist_remove , knlist_remove_inevent , knlist_empty ,
364ce04b3dSJohn-Mark Gurney.Nm knlist_clear , knlist_delete , knlist_destroy ,
3790db62acSJohn-Mark Gurney.Nm KNOTE_LOCKED , KNOTE_UNLOCKED
3874a603ebSRuslan Ermilov.Nd "event delivery subsystem"
3990db62acSJohn-Mark Gurney.Sh SYNOPSIS
4090db62acSJohn-Mark Gurney.In sys/event.h
4190db62acSJohn-Mark Gurney.Ft int
4274a603ebSRuslan Ermilov.Fn kqueue_add_filteropts "int filt" "struct filterops *filtops"
4390db62acSJohn-Mark Gurney.Ft int
4490db62acSJohn-Mark Gurney.Fn kqueue_del_filteropts "int filt"
4590db62acSJohn-Mark Gurney.Ft int
4674a603ebSRuslan Ermilov.Fn kqfd_register "int fd" "struct kevent *kev" "struct thread *td" "int waitok"
4790db62acSJohn-Mark Gurney.Ft void
4874a603ebSRuslan Ermilov.Fn knote_fdclose "struct thread *td" "int fd"
4990db62acSJohn-Mark Gurney.Ft void
5074a603ebSRuslan Ermilov.Fo knlist_init
5174a603ebSRuslan Ermilov.Fa "struct knlist *knl"
5274a603ebSRuslan Ermilov.Fa "void *lock"
5374a603ebSRuslan Ermilov.Fa "void \*[lp]*kl_lock\*[rp]\*[lp]void *\*[rp]"
5474a603ebSRuslan Ermilov.Fa "void \*[lp]*kl_unlock\*[rp]\*[lp]void *\*[rp]"
5574a603ebSRuslan Ermilov.Fa "int \*[lp]*kl_locked\*[rp]\*[lp]void *\*[rp]"
5674a603ebSRuslan Ermilov.Fc
5790db62acSJohn-Mark Gurney.Ft void
584ce04b3dSJohn-Mark Gurney.Fn knlist_init_mtx "struct knlist *knl" "struct mtx *lock"
594ce04b3dSJohn-Mark Gurney.Ft void
60b25711e6SAlexander V. Chernikov.Fn knlist_init_rw_reader "struct knlist *knl" "struct rwlock *lock"
61b25711e6SAlexander V. Chernikov.Ft void
624ce04b3dSJohn-Mark Gurney.Fn knlist_add "struct knlist *knl" "struct knote *kn" "int islocked"
634ce04b3dSJohn-Mark Gurney.Ft void
644ce04b3dSJohn-Mark Gurney.Fn knlist_remove "struct knlist *knl" "struct knote *kn" "int islocked"
654ce04b3dSJohn-Mark Gurney.Ft void
664ce04b3dSJohn-Mark Gurney.Fn knlist_remove_inevent "struct knlist *knl" "struct knote *kn"
674ce04b3dSJohn-Mark Gurney.Ft int
684ce04b3dSJohn-Mark Gurney.Fn knlist_empty "struct knlist *knl"
6990db62acSJohn-Mark Gurney.Ft void
7074a603ebSRuslan Ermilov.Fn knlist_clear "struct knlist *knl" "int islocked"
7190db62acSJohn-Mark Gurney.Ft void
7274a603ebSRuslan Ermilov.Fn knlist_delete "struct knlist *knl" "struct thread *td" "int islocked"
7390db62acSJohn-Mark Gurney.Ft void
744ce04b3dSJohn-Mark Gurney.Fn knlist_destroy "struct knlist *knl"
754ce04b3dSJohn-Mark Gurney.Ft void
7674a603ebSRuslan Ermilov.Fn KNOTE_LOCKED "struct knlist *knl" "long hint"
7790db62acSJohn-Mark Gurney.Ft void
7874a603ebSRuslan Ermilov.Fn KNOTE_UNLOCKED "struct knlist *knl" "long hint"
7990db62acSJohn-Mark Gurney.Sh DESCRIPTION
8090db62acSJohn-Mark GurneyThe functions
8190db62acSJohn-Mark Gurney.Fn kqueue_add_filteropts
8290db62acSJohn-Mark Gurneyand
8390db62acSJohn-Mark Gurney.Fn kqueue_del_filteropts
8474a603ebSRuslan Ermilovallow for the addition and removal of a filter type.
8574a603ebSRuslan ErmilovThe filter is statically defined by the
8690db62acSJohn-Mark Gurney.Dv EVFILT_*
8790db62acSJohn-Mark Gurneymacros.
8890db62acSJohn-Mark GurneyThe function
8990db62acSJohn-Mark Gurney.Fn kqueue_add_filteropts
9074a603ebSRuslan Ermilovwill make
9174a603ebSRuslan Ermilov.Fa filt
9274a603ebSRuslan Ermilovavailable.
9374a603ebSRuslan ErmilovThe
9490db62acSJohn-Mark Gurney.Vt "struct filterops"
9590db62acSJohn-Mark Gurneyhas the following members:
9690db62acSJohn-Mark Gurney.Bl -tag -width ".Va f_attach"
9790db62acSJohn-Mark Gurney.It Va f_isfd
9890db62acSJohn-Mark GurneyIf
9990db62acSJohn-Mark Gurney.Va f_isfd
10090db62acSJohn-Mark Gurneyis set,
10190db62acSJohn-Mark Gurney.Va ident
10290db62acSJohn-Mark Gurneyin
10390db62acSJohn-Mark Gurney.Vt "struct kevent"
10490db62acSJohn-Mark Gurneyis taken to be a file descriptor.
10574a603ebSRuslan ErmilovIn this case, the
10674a603ebSRuslan Ermilov.Vt knote
10774a603ebSRuslan Ermilovpassed into
10890db62acSJohn-Mark Gurney.Va f_attach
10990db62acSJohn-Mark Gurneywill have the
11090db62acSJohn-Mark Gurney.Va kn_fp
11174a603ebSRuslan Ermilovmember initialized to the
11290db62acSJohn-Mark Gurney.Vt "struct file *"
11374a603ebSRuslan Ermilovthat represents the file descriptor.
11490db62acSJohn-Mark Gurney.It Va f_attach
11590db62acSJohn-Mark GurneyThe
11690db62acSJohn-Mark Gurney.Va f_attach
11774a603ebSRuslan Ermilovfunction will be called when attaching a
11890db62acSJohn-Mark Gurney.Vt knote
11990db62acSJohn-Mark Gurneyto the object.
12090db62acSJohn-Mark GurneyThe method should call
12190db62acSJohn-Mark Gurney.Fn knlist_add
12290db62acSJohn-Mark Gurneyto add the
12390db62acSJohn-Mark Gurney.Vt knote
12474a603ebSRuslan Ermilovto the list that was initialized with
12590db62acSJohn-Mark Gurney.Fn knlist_init .
12690db62acSJohn-Mark GurneyThe call to
12790db62acSJohn-Mark Gurney.Fn knlist_add
12874a603ebSRuslan Ermilovis only necessary if the object can have multiple
12974a603ebSRuslan Ermilov.Vt knotes
13074a603ebSRuslan Ermilovassociated with it.
13190db62acSJohn-Mark GurneyIf there is no
13290db62acSJohn-Mark Gurney.Vt knlist
13390db62acSJohn-Mark Gurneyto call
13490db62acSJohn-Mark Gurney.Fn knlist_add
13590db62acSJohn-Mark Gurneywith, the function
13690db62acSJohn-Mark Gurney.Va f_attach
13790db62acSJohn-Mark Gurneymust clear the
13890db62acSJohn-Mark Gurney.Dv KN_DETACHED
13990db62acSJohn-Mark Gurneybit of
14090db62acSJohn-Mark Gurney.Va kn_status
14190db62acSJohn-Mark Gurneyin the
14274a603ebSRuslan Ermilov.Vt knote .
1434ce04b3dSJohn-Mark GurneyThe function shall return 0 on success, or appropriate error for the failure,
1444ce04b3dSJohn-Mark Gurneysuch as when the object is being destroyed, or does not exist.
14574a603ebSRuslan ErmilovDuring
14674a603ebSRuslan Ermilov.Va f_attach ,
14790db62acSJohn-Mark Gurneyit is valid to change the
14890db62acSJohn-Mark Gurney.Va kn_fops
14990db62acSJohn-Mark Gurneypointer to a different pointer.
15090db62acSJohn-Mark GurneyThis will change the
15190db62acSJohn-Mark Gurney.Va f_event
15290db62acSJohn-Mark Gurneyand
15390db62acSJohn-Mark Gurney.Va f_detach
15474a603ebSRuslan Ermilovfunctions called when processing the
15574a603ebSRuslan Ermilov.Vt knote .
15690db62acSJohn-Mark Gurney.It Va f_detach
15790db62acSJohn-Mark GurneyThe
15890db62acSJohn-Mark Gurney.Va f_detach
15974a603ebSRuslan Ermilovfunction will be called to detach the
16090db62acSJohn-Mark Gurney.Vt knote
16190db62acSJohn-Mark Gurneyif the
16290db62acSJohn-Mark Gurney.Vt knote
16390db62acSJohn-Mark Gurneyhas not already been detached by a call to
1644ce04b3dSJohn-Mark Gurney.Fn knlist_remove ,
1654ce04b3dSJohn-Mark Gurney.Fn knlist_remove_inevent
1664ce04b3dSJohn-Mark Gurneyor
1674ce04b3dSJohn-Mark Gurney.Fn knlist_delete .
1684ce04b3dSJohn-Mark GurneyThe list
1694ce04b3dSJohn-Mark Gurney.Fa lock
1704ce04b3dSJohn-Mark Gurneywill not be held when this function is called.
17190db62acSJohn-Mark Gurney.It Va f_event
17290db62acSJohn-Mark GurneyThe
17390db62acSJohn-Mark Gurney.Va f_event
17474a603ebSRuslan Ermilovfunction will be called to update the status of the
17590db62acSJohn-Mark Gurney.Vt knote .
17690db62acSJohn-Mark GurneyIf the function returns 0, it will be assumed that the object is not
17790db62acSJohn-Mark Gurneyready (or no longer ready) to be woken up.
17874a603ebSRuslan ErmilovThe
17974a603ebSRuslan Ermilov.Fa hint
18074a603ebSRuslan Ermilovargument will be 0 when scanning
18174a603ebSRuslan Ermilov.Vt knotes
18274a603ebSRuslan Ermilovto see which are triggered.
18374a603ebSRuslan ErmilovOtherwise, the
18474a603ebSRuslan Ermilov.Fa hint
18574a603ebSRuslan Ermilovargument will be the value passed to either
18690db62acSJohn-Mark Gurney.Dv KNOTE_LOCKED
18790db62acSJohn-Mark Gurneyor
18890db62acSJohn-Mark Gurney.Dv KNOTE_UNLOCKED .
18990db62acSJohn-Mark GurneyThe
19090db62acSJohn-Mark Gurney.Va kn_data
19190db62acSJohn-Mark Gurneyvalue should be updated as necessary to reflect the current value, such as
19290db62acSJohn-Mark Gurneynumber of bytes available for reading, or buffer space available for writing.
19390db62acSJohn-Mark GurneyIf the note needs to be removed,
19490db62acSJohn-Mark Gurney.Fn knlist_remove_inevent
19590db62acSJohn-Mark Gurneymust be called.
19690db62acSJohn-Mark GurneyThe function
19790db62acSJohn-Mark Gurney.Fn knlist_remove_inevent
19890db62acSJohn-Mark Gurneywill remove the note from the list, the
19990db62acSJohn-Mark Gurney.Va f_detach
20074a603ebSRuslan Ermilovfunction will not be called and the
20174a603ebSRuslan Ermilov.Vt knote
20290db62acSJohn-Mark Gurneywill not be returned as an event.
203cd457d4eSJohn-Mark Gurney.Pp
204cd457d4eSJohn-Mark GurneyLocks
205cd457d4eSJohn-Mark Gurney.Em must not
20699be3bc6SJohn-Mark Gurneybe acquired in
207cd457d4eSJohn-Mark Gurney.Va f_event .
208cd457d4eSJohn-Mark GurneyIf a lock is required in
209cd457d4eSJohn-Mark Gurney.Va f_event ,
210cd457d4eSJohn-Mark Gurneyit must be obtained in the
211cd457d4eSJohn-Mark Gurney.Fa kl_lock
212cd457d4eSJohn-Mark Gurneyfunction of the
213cd457d4eSJohn-Mark Gurney.Vt knlist
214cd457d4eSJohn-Mark Gurneythat the
215cd457d4eSJohn-Mark Gurney.Va knote
216cd457d4eSJohn-Mark Gurneywas added to.
21790db62acSJohn-Mark Gurney.El
21890db62acSJohn-Mark Gurney.Pp
21990db62acSJohn-Mark GurneyThe function
22090db62acSJohn-Mark Gurney.Fn kqfd_register
22190db62acSJohn-Mark Gurneywill register the
22290db62acSJohn-Mark Gurney.Vt kevent
22390db62acSJohn-Mark Gurneyon the kqueue file descriptor
22490db62acSJohn-Mark Gurney.Fa fd .
22574a603ebSRuslan ErmilovIf it is safe to sleep,
22674a603ebSRuslan Ermilov.Fa waitok
22774a603ebSRuslan Ermilovshould be set.
22890db62acSJohn-Mark Gurney.Pp
22990db62acSJohn-Mark GurneyThe function
23090db62acSJohn-Mark Gurney.Fn knote_fdclose
23190db62acSJohn-Mark Gurneyis used to delete all
23290db62acSJohn-Mark Gurney.Vt knotes
23390db62acSJohn-Mark Gurneyassociated with
23490db62acSJohn-Mark Gurney.Fa fd .
23574a603ebSRuslan ErmilovOnce returned, there will no longer be any
23690db62acSJohn-Mark Gurney.Vt knotes
23790db62acSJohn-Mark Gurneyassociated with the
23890db62acSJohn-Mark Gurney.Fa fd .
23990db62acSJohn-Mark GurneyThe
24090db62acSJohn-Mark Gurney.Vt knotes
24190db62acSJohn-Mark Gurneyremoved will never be returned from a
24290db62acSJohn-Mark Gurney.Xr kevent 2
24390db62acSJohn-Mark Gurneycall, so if userland uses the
24490db62acSJohn-Mark Gurney.Vt knote
24590db62acSJohn-Mark Gurneyto track resources, they will be leaked.
24690db62acSJohn-Mark GurneyThe
24790db62acSJohn-Mark Gurney.Fn FILEDESC_LOCK
24874a603ebSRuslan Ermilovlock must be held over the call to
24990db62acSJohn-Mark Gurney.Fn knote_fdclose
25090db62acSJohn-Mark Gurneyso that file descriptors cannot be added or removed.
25190db62acSJohn-Mark Gurney.Pp
25290db62acSJohn-Mark GurneyThe
25390db62acSJohn-Mark Gurney.Fn knlist_*
25474a603ebSRuslan Ermilovfamily of functions are for managing
25574a603ebSRuslan Ermilov.Vt knotes
25674a603ebSRuslan Ermilovassociated with an object.
25790db62acSJohn-Mark GurneyA
25874a603ebSRuslan Ermilov.Vt knlist
25990db62acSJohn-Mark Gurneyis not required, but is commonly used.
26090db62acSJohn-Mark GurneyIf used, the
26190db62acSJohn-Mark Gurney.Vt knlist
2624ce04b3dSJohn-Mark Gurneymust be initialized with either
26373bbeaa5SGlen Barber.Fn knlist_init ,
264b25711e6SAlexander V. Chernikov.Fn knlist_init_mtx
2654ce04b3dSJohn-Mark Gurneyor
266b25711e6SAlexander V. Chernikov.Fn knlist_init_rw_reader .
26790db62acSJohn-Mark GurneyThe
26890db62acSJohn-Mark Gurney.Vt knlist
26974a603ebSRuslan Ermilovstructure may be embedded into the object structure.
27090db62acSJohn-Mark GurneyThe
27190db62acSJohn-Mark Gurney.Fa lock
2724ce04b3dSJohn-Mark Gurneywill be held over
2734ce04b3dSJohn-Mark Gurney.Va f_event
2744ce04b3dSJohn-Mark Gurneycalls.
2754ce04b3dSJohn-Mark Gurney.Pp
2764ce04b3dSJohn-Mark GurneyFor the
2774ce04b3dSJohn-Mark Gurney.Fn knlist_init
2784ce04b3dSJohn-Mark Gurneyfunction, if
2794ce04b3dSJohn-Mark Gurney.Fa lock
2804ce04b3dSJohn-Mark Gurneyis
2814ce04b3dSJohn-Mark Gurney.Dv NULL ,
2824ce04b3dSJohn-Mark Gurneya shared global lock will be used and the remaining arguments must be
2834ce04b3dSJohn-Mark Gurney.Dv NULL .
2844ce04b3dSJohn-Mark GurneyThe function pointers
2854ce04b3dSJohn-Mark Gurney.Fa kl_lock , kl_unlock
2864ce04b3dSJohn-Mark Gurneyand
2874ce04b3dSJohn-Mark Gurney.Fa kl_locked
2884ce04b3dSJohn-Mark Gurneywill be used to manipulate the argument
2894ce04b3dSJohn-Mark Gurney.Fa lock .
2904ce04b3dSJohn-Mark GurneyIf any of the function pointers are
2914ce04b3dSJohn-Mark Gurney.Dv NULL ,
2924ce04b3dSJohn-Mark Gurneya function operating on
2934ce04b3dSJohn-Mark Gurney.Dv MTX_DEF
2944ce04b3dSJohn-Mark Gurneystyle
2954ce04b3dSJohn-Mark Gurney.Xr mutex 9
2964ce04b3dSJohn-Mark Gurneylocks will be used instead.
2974ce04b3dSJohn-Mark Gurney.Pp
2984ce04b3dSJohn-Mark GurneyThe function
2994ce04b3dSJohn-Mark Gurney.Fn knlist_init_mtx
3003102cfe2SGlen Barbermay be used to initialize a
3014ce04b3dSJohn-Mark Gurney.Vt knlist
3024ce04b3dSJohn-Mark Gurneywhen
3034ce04b3dSJohn-Mark Gurney.Fa lock
3044ce04b3dSJohn-Mark Gurneyis a
3054ce04b3dSJohn-Mark Gurney.Dv MTX_DEF
3064ce04b3dSJohn-Mark Gurneystyle
3074ce04b3dSJohn-Mark Gurney.Xr mutex 9
3084ce04b3dSJohn-Mark Gurneylock.
3094ce04b3dSJohn-Mark Gurney.Pp
31090db62acSJohn-Mark GurneyThe function
311b25711e6SAlexander V. Chernikov.Fn knlist_init_rw_reader
312b25711e6SAlexander V. Chernikovmay be used to initialize a
313b25711e6SAlexander V. Chernikov.Vt knlist
314b25711e6SAlexander V. Chernikovwhen
315b25711e6SAlexander V. Chernikov.Fa lock
316b25711e6SAlexander V. Chernikovis a
317b25711e6SAlexander V. Chernikov.Xr rwlock 9
318b25711e6SAlexander V. Chernikovread lock.
319b25711e6SAlexander V. ChernikovLock is acquired via
320b25711e6SAlexander V. Chernikov.Fn rw_rlock
321b25711e6SAlexander V. Chernikovfunction.
322b25711e6SAlexander V. Chernikov.Pp
323b25711e6SAlexander V. ChernikovThe function
32490db62acSJohn-Mark Gurney.Fn knlist_empty
3254ce04b3dSJohn-Mark Gurneyreturns true when there are no
3264ce04b3dSJohn-Mark Gurney.Vt knotes
3274ce04b3dSJohn-Mark Gurneyon the list.
3284ce04b3dSJohn-Mark GurneyThe function requires that the
32990db62acSJohn-Mark Gurney.Fa lock
3304ce04b3dSJohn-Mark Gurneybe held when called.
3314ce04b3dSJohn-Mark Gurney.Pp
33290db62acSJohn-Mark GurneyThe function
33390db62acSJohn-Mark Gurney.Fn knlist_clear
3344ce04b3dSJohn-Mark Gurneyremoves all
33574a603ebSRuslan Ermilov.Vt knotes
3364ce04b3dSJohn-Mark Gurneyfrom the list.
33790db62acSJohn-Mark GurneyThe
33890db62acSJohn-Mark Gurney.Fa islocked
3394ce04b3dSJohn-Mark Gurneyargument declares if the
34090db62acSJohn-Mark Gurney.Fa lock
34174a603ebSRuslan Ermilovhas been acquired.
34290db62acSJohn-Mark GurneyAll
34390db62acSJohn-Mark Gurney.Vt knotes
3444ce04b3dSJohn-Mark Gurneywill have
34590db62acSJohn-Mark Gurney.Dv EV_ONESHOT
3464ce04b3dSJohn-Mark Gurneyset so that the
34790db62acSJohn-Mark Gurney.Vt knote
348*646fa387SEdward Tomasz Napieralawill be returned and removed during the next scan.
3494ce04b3dSJohn-Mark GurneyThe
3504ce04b3dSJohn-Mark Gurney.Va f_detach
3514ce04b3dSJohn-Mark Gurneyfunction will be called when the
3524ce04b3dSJohn-Mark Gurney.Vt knote
353*646fa387SEdward Tomasz Napieralais deleted during the next scan.
3544ce04b3dSJohn-Mark GurneyThis function must not be used when
3554ce04b3dSJohn-Mark Gurney.Va f_isfd
3564ce04b3dSJohn-Mark Gurneyis set in
3574ce04b3dSJohn-Mark Gurney.Vt "struct filterops" ,
3584ce04b3dSJohn-Mark Gurneyas the
3594ce04b3dSJohn-Mark Gurney.Fa td
3604ce04b3dSJohn-Mark Gurneyargument of
3614ce04b3dSJohn-Mark Gurney.Fn fdrop
3624ce04b3dSJohn-Mark Gurneywill be
3634ce04b3dSJohn-Mark Gurney.Dv NULL .
3644ce04b3dSJohn-Mark Gurney.Pp
3654ce04b3dSJohn-Mark GurneyThe function
3664ce04b3dSJohn-Mark Gurney.Fn knlist_delete
3674ce04b3dSJohn-Mark Gurneyremoves and deletes all
3684ce04b3dSJohn-Mark Gurney.Vt knotes
3694ce04b3dSJohn-Mark Gurneyon the list.
3704ce04b3dSJohn-Mark GurneyThe function
3714ce04b3dSJohn-Mark Gurney.Va f_detach
3724ce04b3dSJohn-Mark Gurneywill not be called, and the
3734ce04b3dSJohn-Mark Gurney.Vt knote
3744ce04b3dSJohn-Mark Gurneywill not be returned on the next scan.
3754ce04b3dSJohn-Mark GurneyUsing this function could leak userland resources if a process uses the
3764ce04b3dSJohn-Mark Gurney.Vt knote
3774ce04b3dSJohn-Mark Gurneyto track resources.
3784ce04b3dSJohn-Mark Gurney.Pp
3794ce04b3dSJohn-Mark GurneyBoth the
3804ce04b3dSJohn-Mark Gurney.Fn knlist_clear
3814ce04b3dSJohn-Mark Gurneyand
3824ce04b3dSJohn-Mark Gurney.Fn knlist_delete
3834ce04b3dSJohn-Mark Gurneyfunctions may sleep.
3844ce04b3dSJohn-Mark GurneyThey also may release the
3854ce04b3dSJohn-Mark Gurney.Fa lock
3864ce04b3dSJohn-Mark Gurneyto wait for other
3874ce04b3dSJohn-Mark Gurney.Vt knotes
3884ce04b3dSJohn-Mark Gurneyto drain.
3894ce04b3dSJohn-Mark Gurney.Pp
39074a603ebSRuslan ErmilovThe
39190db62acSJohn-Mark Gurney.Fn knlist_destroy
39274a603ebSRuslan Ermilovfunction is used to destroy a
39374a603ebSRuslan Ermilov.Vt knlist .
39490db62acSJohn-Mark GurneyThere must be no
39590db62acSJohn-Mark Gurney.Vt knotes
39690db62acSJohn-Mark Gurneyassociated with the
39790db62acSJohn-Mark Gurney.Vt knlist
3981e9469d1SChristian Brueffer.Po Fn knlist_empty
3991e9469d1SChristian Bruefferreturns true
4001e9469d1SChristian Brueffer.Pc
40174a603ebSRuslan Ermilovand no more
40290db62acSJohn-Mark Gurney.Vt knotes
40374a603ebSRuslan Ermilovmay be attached to the object.
40474a603ebSRuslan ErmilovA
40574a603ebSRuslan Ermilov.Vt knlist
40674a603ebSRuslan Ermilovmay be emptied by calling
4074ce04b3dSJohn-Mark Gurney.Fn knlist_clear
4084ce04b3dSJohn-Mark Gurneyor
4094ce04b3dSJohn-Mark Gurney.Fn knlist_delete .
41090db62acSJohn-Mark Gurney.Pp
41174a603ebSRuslan ErmilovThe macros
41290db62acSJohn-Mark Gurney.Fn KNOTE_LOCKED
41390db62acSJohn-Mark Gurneyand
41490db62acSJohn-Mark Gurney.Fn KNOTE_UNLOCKED
41574a603ebSRuslan Ermilovare used to notify
41674a603ebSRuslan Ermilov.Vt knotes
41774a603ebSRuslan Ermilovabout events associated with the object.
41874a603ebSRuslan ErmilovIt will iterate over all
41990db62acSJohn-Mark Gurney.Vt knotes
42090db62acSJohn-Mark Gurneyon the list calling the
42190db62acSJohn-Mark Gurney.Va f_event
42290db62acSJohn-Mark Gurneyfunction associated with the
42390db62acSJohn-Mark Gurney.Vt knote .
42474a603ebSRuslan ErmilovThe macro
42590db62acSJohn-Mark Gurney.Fn KNOTE_LOCKED
42690db62acSJohn-Mark Gurneymust be used if the lock associated with the
42790db62acSJohn-Mark Gurney.Fa knl
4284ce04b3dSJohn-Mark Gurneyis held.
42990db62acSJohn-Mark GurneyThe function
43090db62acSJohn-Mark Gurney.Fn KNOTE_UNLOCKED
43174a603ebSRuslan Ermilovwill acquire the lock before iterating over the list of
43274a603ebSRuslan Ermilov.Vt knotes .
43390db62acSJohn-Mark Gurney.Sh RETURN VALUES
43490db62acSJohn-Mark GurneyThe function
43590db62acSJohn-Mark Gurney.Fn kqueue_add_filteropts
43690db62acSJohn-Mark Gurneywill return zero on success,
43790db62acSJohn-Mark Gurney.Er EINVAL
43890db62acSJohn-Mark Gurneyin the case of an invalid
43974a603ebSRuslan Ermilov.Fa filt ,
44090db62acSJohn-Mark Gurneyor
44190db62acSJohn-Mark Gurney.Er EEXIST
44290db62acSJohn-Mark Gurneyif the filter has already been installed.
44390db62acSJohn-Mark Gurney.Pp
44490db62acSJohn-Mark GurneyThe function
44590db62acSJohn-Mark Gurney.Fn kqueue_del_filteropts
44690db62acSJohn-Mark Gurneywill return zero on success,
44790db62acSJohn-Mark Gurney.Er EINVAL
44890db62acSJohn-Mark Gurneyin the case of an invalid
44974a603ebSRuslan Ermilov.Fa filt ,
45090db62acSJohn-Mark Gurneyor
45190db62acSJohn-Mark Gurney.Er EBUSY
45290db62acSJohn-Mark Gurneyif the filter is still in use.
45390db62acSJohn-Mark Gurney.Pp
45490db62acSJohn-Mark GurneyThe function
45590db62acSJohn-Mark Gurney.Fn kqfd_register
45690db62acSJohn-Mark Gurneywill return zero on success,
45790db62acSJohn-Mark Gurney.Er EBADF
45874a603ebSRuslan Ermilovif the file descriptor is not a kqueue, or any of the possible values returned
45990db62acSJohn-Mark Gurneyby
46074a603ebSRuslan Ermilov.Xr kevent 2 .
46190db62acSJohn-Mark Gurney.Sh SEE ALSO
46274a603ebSRuslan Ermilov.Xr kevent 2 ,
46374a603ebSRuslan Ermilov.Xr kqueue 2
46490db62acSJohn-Mark Gurney.Sh AUTHORS
46590db62acSJohn-Mark GurneyThis
46690db62acSJohn-Mark Gurneymanual page was written by
4678a7314fcSBaptiste Daroussin.An John-Mark Gurney Aq Mt jmg@FreeBSD.org .
468