xref: /freebsd/share/man/man9/kqueue.9 (revision 3454a7caa053a2f44ad20216f908f472e9d43f1e)
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.\"
27*3454a7caSRobert Wing.Dd August 20, 2022
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 ,
34*3454a7caSRobert Wing.Nm knlist_init , knlist_init_mtx ,
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
604ce04b3dSJohn-Mark Gurney.Fn knlist_add "struct knlist *knl" "struct knote *kn" "int islocked"
614ce04b3dSJohn-Mark Gurney.Ft void
624ce04b3dSJohn-Mark Gurney.Fn knlist_remove "struct knlist *knl" "struct knote *kn" "int islocked"
634ce04b3dSJohn-Mark Gurney.Ft void
644ce04b3dSJohn-Mark Gurney.Fn knlist_remove_inevent "struct knlist *knl" "struct knote *kn"
654ce04b3dSJohn-Mark Gurney.Ft int
664ce04b3dSJohn-Mark Gurney.Fn knlist_empty "struct knlist *knl"
6790db62acSJohn-Mark Gurney.Ft void
6874a603ebSRuslan Ermilov.Fn knlist_clear "struct knlist *knl" "int islocked"
6990db62acSJohn-Mark Gurney.Ft void
7074a603ebSRuslan Ermilov.Fn knlist_delete "struct knlist *knl" "struct thread *td" "int islocked"
7190db62acSJohn-Mark Gurney.Ft void
724ce04b3dSJohn-Mark Gurney.Fn knlist_destroy "struct knlist *knl"
734ce04b3dSJohn-Mark Gurney.Ft void
7474a603ebSRuslan Ermilov.Fn KNOTE_LOCKED "struct knlist *knl" "long hint"
7590db62acSJohn-Mark Gurney.Ft void
7674a603ebSRuslan Ermilov.Fn KNOTE_UNLOCKED "struct knlist *knl" "long hint"
7790db62acSJohn-Mark Gurney.Sh DESCRIPTION
7890db62acSJohn-Mark GurneyThe functions
7990db62acSJohn-Mark Gurney.Fn kqueue_add_filteropts
8090db62acSJohn-Mark Gurneyand
8190db62acSJohn-Mark Gurney.Fn kqueue_del_filteropts
8274a603ebSRuslan Ermilovallow for the addition and removal of a filter type.
8374a603ebSRuslan ErmilovThe filter is statically defined by the
8490db62acSJohn-Mark Gurney.Dv EVFILT_*
8590db62acSJohn-Mark Gurneymacros.
8690db62acSJohn-Mark GurneyThe function
8790db62acSJohn-Mark Gurney.Fn kqueue_add_filteropts
8874a603ebSRuslan Ermilovwill make
8974a603ebSRuslan Ermilov.Fa filt
9074a603ebSRuslan Ermilovavailable.
9174a603ebSRuslan ErmilovThe
9290db62acSJohn-Mark Gurney.Vt "struct filterops"
9390db62acSJohn-Mark Gurneyhas the following members:
9490db62acSJohn-Mark Gurney.Bl -tag -width ".Va f_attach"
9590db62acSJohn-Mark Gurney.It Va f_isfd
9690db62acSJohn-Mark GurneyIf
9790db62acSJohn-Mark Gurney.Va f_isfd
9890db62acSJohn-Mark Gurneyis set,
9990db62acSJohn-Mark Gurney.Va ident
10090db62acSJohn-Mark Gurneyin
10190db62acSJohn-Mark Gurney.Vt "struct kevent"
10290db62acSJohn-Mark Gurneyis taken to be a file descriptor.
10374a603ebSRuslan ErmilovIn this case, the
10474a603ebSRuslan Ermilov.Vt knote
10574a603ebSRuslan Ermilovpassed into
10690db62acSJohn-Mark Gurney.Va f_attach
10790db62acSJohn-Mark Gurneywill have the
10890db62acSJohn-Mark Gurney.Va kn_fp
10974a603ebSRuslan Ermilovmember initialized to the
11090db62acSJohn-Mark Gurney.Vt "struct file *"
11174a603ebSRuslan Ermilovthat represents the file descriptor.
11290db62acSJohn-Mark Gurney.It Va f_attach
11390db62acSJohn-Mark GurneyThe
11490db62acSJohn-Mark Gurney.Va f_attach
11574a603ebSRuslan Ermilovfunction will be called when attaching a
11690db62acSJohn-Mark Gurney.Vt knote
11790db62acSJohn-Mark Gurneyto the object.
11890db62acSJohn-Mark GurneyThe method should call
11990db62acSJohn-Mark Gurney.Fn knlist_add
12090db62acSJohn-Mark Gurneyto add the
12190db62acSJohn-Mark Gurney.Vt knote
12274a603ebSRuslan Ermilovto the list that was initialized with
12390db62acSJohn-Mark Gurney.Fn knlist_init .
12490db62acSJohn-Mark GurneyThe call to
12590db62acSJohn-Mark Gurney.Fn knlist_add
12674a603ebSRuslan Ermilovis only necessary if the object can have multiple
12774a603ebSRuslan Ermilov.Vt knotes
12874a603ebSRuslan Ermilovassociated with it.
12990db62acSJohn-Mark GurneyIf there is no
13090db62acSJohn-Mark Gurney.Vt knlist
13190db62acSJohn-Mark Gurneyto call
13290db62acSJohn-Mark Gurney.Fn knlist_add
13390db62acSJohn-Mark Gurneywith, the function
13490db62acSJohn-Mark Gurney.Va f_attach
13590db62acSJohn-Mark Gurneymust clear the
13690db62acSJohn-Mark Gurney.Dv KN_DETACHED
13790db62acSJohn-Mark Gurneybit of
13890db62acSJohn-Mark Gurney.Va kn_status
13990db62acSJohn-Mark Gurneyin the
14074a603ebSRuslan Ermilov.Vt knote .
1414ce04b3dSJohn-Mark GurneyThe function shall return 0 on success, or appropriate error for the failure,
1424ce04b3dSJohn-Mark Gurneysuch as when the object is being destroyed, or does not exist.
14374a603ebSRuslan ErmilovDuring
14474a603ebSRuslan Ermilov.Va f_attach ,
14590db62acSJohn-Mark Gurneyit is valid to change the
14608580603SKyle Evans.Va kn_fop
14790db62acSJohn-Mark Gurneypointer to a different pointer.
14890db62acSJohn-Mark GurneyThis will change the
14990db62acSJohn-Mark Gurney.Va f_event
15090db62acSJohn-Mark Gurneyand
15190db62acSJohn-Mark Gurney.Va f_detach
15274a603ebSRuslan Ermilovfunctions called when processing the
15374a603ebSRuslan Ermilov.Vt knote .
15490db62acSJohn-Mark Gurney.It Va f_detach
15590db62acSJohn-Mark GurneyThe
15690db62acSJohn-Mark Gurney.Va f_detach
15774a603ebSRuslan Ermilovfunction will be called to detach the
15890db62acSJohn-Mark Gurney.Vt knote
15990db62acSJohn-Mark Gurneyif the
16090db62acSJohn-Mark Gurney.Vt knote
16190db62acSJohn-Mark Gurneyhas not already been detached by a call to
1624ce04b3dSJohn-Mark Gurney.Fn knlist_remove ,
1634ce04b3dSJohn-Mark Gurney.Fn knlist_remove_inevent
1644ce04b3dSJohn-Mark Gurneyor
1654ce04b3dSJohn-Mark Gurney.Fn knlist_delete .
1664ce04b3dSJohn-Mark GurneyThe list
1674ce04b3dSJohn-Mark Gurney.Fa lock
1684ce04b3dSJohn-Mark Gurneywill not be held when this function is called.
16990db62acSJohn-Mark Gurney.It Va f_event
17090db62acSJohn-Mark GurneyThe
17190db62acSJohn-Mark Gurney.Va f_event
17274a603ebSRuslan Ermilovfunction will be called to update the status of the
17390db62acSJohn-Mark Gurney.Vt knote .
17490db62acSJohn-Mark GurneyIf the function returns 0, it will be assumed that the object is not
17590db62acSJohn-Mark Gurneyready (or no longer ready) to be woken up.
17674a603ebSRuslan ErmilovThe
17774a603ebSRuslan Ermilov.Fa hint
17874a603ebSRuslan Ermilovargument will be 0 when scanning
17974a603ebSRuslan Ermilov.Vt knotes
18074a603ebSRuslan Ermilovto see which are triggered.
18174a603ebSRuslan ErmilovOtherwise, the
18274a603ebSRuslan Ermilov.Fa hint
18374a603ebSRuslan Ermilovargument will be the value passed to either
18490db62acSJohn-Mark Gurney.Dv KNOTE_LOCKED
18590db62acSJohn-Mark Gurneyor
18690db62acSJohn-Mark Gurney.Dv KNOTE_UNLOCKED .
18790db62acSJohn-Mark GurneyThe
18890db62acSJohn-Mark Gurney.Va kn_data
18990db62acSJohn-Mark Gurneyvalue should be updated as necessary to reflect the current value, such as
19090db62acSJohn-Mark Gurneynumber of bytes available for reading, or buffer space available for writing.
19190db62acSJohn-Mark GurneyIf the note needs to be removed,
19290db62acSJohn-Mark Gurney.Fn knlist_remove_inevent
19390db62acSJohn-Mark Gurneymust be called.
19490db62acSJohn-Mark GurneyThe function
19590db62acSJohn-Mark Gurney.Fn knlist_remove_inevent
19690db62acSJohn-Mark Gurneywill remove the note from the list, the
19790db62acSJohn-Mark Gurney.Va f_detach
19874a603ebSRuslan Ermilovfunction will not be called and the
19974a603ebSRuslan Ermilov.Vt knote
20090db62acSJohn-Mark Gurneywill not be returned as an event.
201cd457d4eSJohn-Mark Gurney.Pp
202cd457d4eSJohn-Mark GurneyLocks
203cd457d4eSJohn-Mark Gurney.Em must not
20499be3bc6SJohn-Mark Gurneybe acquired in
205cd457d4eSJohn-Mark Gurney.Va f_event .
206cd457d4eSJohn-Mark GurneyIf a lock is required in
207cd457d4eSJohn-Mark Gurney.Va f_event ,
208cd457d4eSJohn-Mark Gurneyit must be obtained in the
209cd457d4eSJohn-Mark Gurney.Fa kl_lock
210cd457d4eSJohn-Mark Gurneyfunction of the
211cd457d4eSJohn-Mark Gurney.Vt knlist
212cd457d4eSJohn-Mark Gurneythat the
213cd457d4eSJohn-Mark Gurney.Va knote
214cd457d4eSJohn-Mark Gurneywas added to.
21590db62acSJohn-Mark Gurney.El
21690db62acSJohn-Mark Gurney.Pp
21790db62acSJohn-Mark GurneyThe function
21890db62acSJohn-Mark Gurney.Fn kqfd_register
21990db62acSJohn-Mark Gurneywill register the
22090db62acSJohn-Mark Gurney.Vt kevent
22190db62acSJohn-Mark Gurneyon the kqueue file descriptor
22290db62acSJohn-Mark Gurney.Fa fd .
22374a603ebSRuslan ErmilovIf it is safe to sleep,
22474a603ebSRuslan Ermilov.Fa waitok
22574a603ebSRuslan Ermilovshould be set.
22690db62acSJohn-Mark Gurney.Pp
22790db62acSJohn-Mark GurneyThe function
22890db62acSJohn-Mark Gurney.Fn knote_fdclose
22990db62acSJohn-Mark Gurneyis used to delete all
23090db62acSJohn-Mark Gurney.Vt knotes
23190db62acSJohn-Mark Gurneyassociated with
23290db62acSJohn-Mark Gurney.Fa fd .
23374a603ebSRuslan ErmilovOnce returned, there will no longer be any
23490db62acSJohn-Mark Gurney.Vt knotes
23590db62acSJohn-Mark Gurneyassociated with the
23690db62acSJohn-Mark Gurney.Fa fd .
23790db62acSJohn-Mark GurneyThe
23890db62acSJohn-Mark Gurney.Vt knotes
23990db62acSJohn-Mark Gurneyremoved will never be returned from a
24090db62acSJohn-Mark Gurney.Xr kevent 2
24190db62acSJohn-Mark Gurneycall, so if userland uses the
24290db62acSJohn-Mark Gurney.Vt knote
24390db62acSJohn-Mark Gurneyto track resources, they will be leaked.
24490db62acSJohn-Mark GurneyThe
24590db62acSJohn-Mark Gurney.Fn FILEDESC_LOCK
24674a603ebSRuslan Ermilovlock must be held over the call to
24790db62acSJohn-Mark Gurney.Fn knote_fdclose
24890db62acSJohn-Mark Gurneyso that file descriptors cannot be added or removed.
24990db62acSJohn-Mark Gurney.Pp
25090db62acSJohn-Mark GurneyThe
25190db62acSJohn-Mark Gurney.Fn knlist_*
25274a603ebSRuslan Ermilovfamily of functions are for managing
25374a603ebSRuslan Ermilov.Vt knotes
25474a603ebSRuslan Ermilovassociated with an object.
25590db62acSJohn-Mark GurneyA
25674a603ebSRuslan Ermilov.Vt knlist
25790db62acSJohn-Mark Gurneyis not required, but is commonly used.
25890db62acSJohn-Mark GurneyIf used, the
25990db62acSJohn-Mark Gurney.Vt knlist
2604ce04b3dSJohn-Mark Gurneymust be initialized with either
261*3454a7caSRobert Wing.Fn knlist_init
2624ce04b3dSJohn-Mark Gurneyor
263*3454a7caSRobert Wing.Fn knlist_init_mtx .
26490db62acSJohn-Mark GurneyThe
26590db62acSJohn-Mark Gurney.Vt knlist
26674a603ebSRuslan Ermilovstructure may be embedded into the object structure.
26790db62acSJohn-Mark GurneyThe
26890db62acSJohn-Mark Gurney.Fa lock
2694ce04b3dSJohn-Mark Gurneywill be held over
2704ce04b3dSJohn-Mark Gurney.Va f_event
2714ce04b3dSJohn-Mark Gurneycalls.
2724ce04b3dSJohn-Mark Gurney.Pp
2734ce04b3dSJohn-Mark GurneyFor the
2744ce04b3dSJohn-Mark Gurney.Fn knlist_init
2754ce04b3dSJohn-Mark Gurneyfunction, if
2764ce04b3dSJohn-Mark Gurney.Fa lock
2774ce04b3dSJohn-Mark Gurneyis
2784ce04b3dSJohn-Mark Gurney.Dv NULL ,
2794ce04b3dSJohn-Mark Gurneya shared global lock will be used and the remaining arguments must be
2804ce04b3dSJohn-Mark Gurney.Dv NULL .
2814ce04b3dSJohn-Mark GurneyThe function pointers
2824ce04b3dSJohn-Mark Gurney.Fa kl_lock , kl_unlock
2834ce04b3dSJohn-Mark Gurneyand
2844ce04b3dSJohn-Mark Gurney.Fa kl_locked
2854ce04b3dSJohn-Mark Gurneywill be used to manipulate the argument
2864ce04b3dSJohn-Mark Gurney.Fa lock .
2874ce04b3dSJohn-Mark GurneyIf any of the function pointers are
2884ce04b3dSJohn-Mark Gurney.Dv NULL ,
2894ce04b3dSJohn-Mark Gurneya function operating on
2904ce04b3dSJohn-Mark Gurney.Dv MTX_DEF
2914ce04b3dSJohn-Mark Gurneystyle
2924ce04b3dSJohn-Mark Gurney.Xr mutex 9
2934ce04b3dSJohn-Mark Gurneylocks will be used instead.
2944ce04b3dSJohn-Mark Gurney.Pp
2954ce04b3dSJohn-Mark GurneyThe function
2964ce04b3dSJohn-Mark Gurney.Fn knlist_init_mtx
2973102cfe2SGlen Barbermay be used to initialize a
2984ce04b3dSJohn-Mark Gurney.Vt knlist
2994ce04b3dSJohn-Mark Gurneywhen
3004ce04b3dSJohn-Mark Gurney.Fa lock
3014ce04b3dSJohn-Mark Gurneyis a
3024ce04b3dSJohn-Mark Gurney.Dv MTX_DEF
3034ce04b3dSJohn-Mark Gurneystyle
3044ce04b3dSJohn-Mark Gurney.Xr mutex 9
3054ce04b3dSJohn-Mark Gurneylock.
3064ce04b3dSJohn-Mark Gurney.Pp
30790db62acSJohn-Mark GurneyThe function
30890db62acSJohn-Mark Gurney.Fn knlist_empty
3094ce04b3dSJohn-Mark Gurneyreturns true when there are no
3104ce04b3dSJohn-Mark Gurney.Vt knotes
3114ce04b3dSJohn-Mark Gurneyon the list.
3124ce04b3dSJohn-Mark GurneyThe function requires that the
31390db62acSJohn-Mark Gurney.Fa lock
3144ce04b3dSJohn-Mark Gurneybe held when called.
3154ce04b3dSJohn-Mark Gurney.Pp
31690db62acSJohn-Mark GurneyThe function
31790db62acSJohn-Mark Gurney.Fn knlist_clear
3184ce04b3dSJohn-Mark Gurneyremoves all
31974a603ebSRuslan Ermilov.Vt knotes
3204ce04b3dSJohn-Mark Gurneyfrom the list.
32190db62acSJohn-Mark GurneyThe
32290db62acSJohn-Mark Gurney.Fa islocked
3234ce04b3dSJohn-Mark Gurneyargument declares if the
32490db62acSJohn-Mark Gurney.Fa lock
32574a603ebSRuslan Ermilovhas been acquired.
32690db62acSJohn-Mark GurneyAll
32790db62acSJohn-Mark Gurney.Vt knotes
3284ce04b3dSJohn-Mark Gurneywill have
32990db62acSJohn-Mark Gurney.Dv EV_ONESHOT
3304ce04b3dSJohn-Mark Gurneyset so that the
33190db62acSJohn-Mark Gurney.Vt knote
332646fa387SEdward Tomasz Napieralawill be returned and removed during the next scan.
3334ce04b3dSJohn-Mark GurneyThe
3344ce04b3dSJohn-Mark Gurney.Va f_detach
3354ce04b3dSJohn-Mark Gurneyfunction will be called when the
3364ce04b3dSJohn-Mark Gurney.Vt knote
337646fa387SEdward Tomasz Napieralais deleted during the next scan.
3384ce04b3dSJohn-Mark GurneyThis function must not be used when
3394ce04b3dSJohn-Mark Gurney.Va f_isfd
3404ce04b3dSJohn-Mark Gurneyis set in
3414ce04b3dSJohn-Mark Gurney.Vt "struct filterops" ,
3424ce04b3dSJohn-Mark Gurneyas the
3434ce04b3dSJohn-Mark Gurney.Fa td
3444ce04b3dSJohn-Mark Gurneyargument of
3454ce04b3dSJohn-Mark Gurney.Fn fdrop
3464ce04b3dSJohn-Mark Gurneywill be
3474ce04b3dSJohn-Mark Gurney.Dv NULL .
3484ce04b3dSJohn-Mark Gurney.Pp
3494ce04b3dSJohn-Mark GurneyThe function
3504ce04b3dSJohn-Mark Gurney.Fn knlist_delete
3514ce04b3dSJohn-Mark Gurneyremoves and deletes all
3524ce04b3dSJohn-Mark Gurney.Vt knotes
3534ce04b3dSJohn-Mark Gurneyon the list.
3544ce04b3dSJohn-Mark GurneyThe function
3554ce04b3dSJohn-Mark Gurney.Va f_detach
3564ce04b3dSJohn-Mark Gurneywill not be called, and the
3574ce04b3dSJohn-Mark Gurney.Vt knote
3584ce04b3dSJohn-Mark Gurneywill not be returned on the next scan.
3594ce04b3dSJohn-Mark GurneyUsing this function could leak userland resources if a process uses the
3604ce04b3dSJohn-Mark Gurney.Vt knote
3614ce04b3dSJohn-Mark Gurneyto track resources.
3624ce04b3dSJohn-Mark Gurney.Pp
3634ce04b3dSJohn-Mark GurneyBoth the
3644ce04b3dSJohn-Mark Gurney.Fn knlist_clear
3654ce04b3dSJohn-Mark Gurneyand
3664ce04b3dSJohn-Mark Gurney.Fn knlist_delete
3674ce04b3dSJohn-Mark Gurneyfunctions may sleep.
3684ce04b3dSJohn-Mark GurneyThey also may release the
3694ce04b3dSJohn-Mark Gurney.Fa lock
3704ce04b3dSJohn-Mark Gurneyto wait for other
3714ce04b3dSJohn-Mark Gurney.Vt knotes
3724ce04b3dSJohn-Mark Gurneyto drain.
3734ce04b3dSJohn-Mark Gurney.Pp
37474a603ebSRuslan ErmilovThe
37590db62acSJohn-Mark Gurney.Fn knlist_destroy
37674a603ebSRuslan Ermilovfunction is used to destroy a
37774a603ebSRuslan Ermilov.Vt knlist .
37890db62acSJohn-Mark GurneyThere must be no
37990db62acSJohn-Mark Gurney.Vt knotes
38090db62acSJohn-Mark Gurneyassociated with the
38190db62acSJohn-Mark Gurney.Vt knlist
3821e9469d1SChristian Brueffer.Po Fn knlist_empty
3831e9469d1SChristian Bruefferreturns true
3841e9469d1SChristian Brueffer.Pc
38574a603ebSRuslan Ermilovand no more
38690db62acSJohn-Mark Gurney.Vt knotes
38774a603ebSRuslan Ermilovmay be attached to the object.
38874a603ebSRuslan ErmilovA
38974a603ebSRuslan Ermilov.Vt knlist
39074a603ebSRuslan Ermilovmay be emptied by calling
3914ce04b3dSJohn-Mark Gurney.Fn knlist_clear
3924ce04b3dSJohn-Mark Gurneyor
3934ce04b3dSJohn-Mark Gurney.Fn knlist_delete .
39490db62acSJohn-Mark Gurney.Pp
39574a603ebSRuslan ErmilovThe macros
39690db62acSJohn-Mark Gurney.Fn KNOTE_LOCKED
39790db62acSJohn-Mark Gurneyand
39890db62acSJohn-Mark Gurney.Fn KNOTE_UNLOCKED
39974a603ebSRuslan Ermilovare used to notify
40074a603ebSRuslan Ermilov.Vt knotes
40174a603ebSRuslan Ermilovabout events associated with the object.
40274a603ebSRuslan ErmilovIt will iterate over all
40390db62acSJohn-Mark Gurney.Vt knotes
40490db62acSJohn-Mark Gurneyon the list calling the
40590db62acSJohn-Mark Gurney.Va f_event
40690db62acSJohn-Mark Gurneyfunction associated with the
40790db62acSJohn-Mark Gurney.Vt knote .
40874a603ebSRuslan ErmilovThe macro
40990db62acSJohn-Mark Gurney.Fn KNOTE_LOCKED
41090db62acSJohn-Mark Gurneymust be used if the lock associated with the
41190db62acSJohn-Mark Gurney.Fa knl
4124ce04b3dSJohn-Mark Gurneyis held.
41390db62acSJohn-Mark GurneyThe function
41490db62acSJohn-Mark Gurney.Fn KNOTE_UNLOCKED
41574a603ebSRuslan Ermilovwill acquire the lock before iterating over the list of
41674a603ebSRuslan Ermilov.Vt knotes .
41790db62acSJohn-Mark Gurney.Sh RETURN VALUES
41890db62acSJohn-Mark GurneyThe function
41990db62acSJohn-Mark Gurney.Fn kqueue_add_filteropts
42090db62acSJohn-Mark Gurneywill return zero on success,
42190db62acSJohn-Mark Gurney.Er EINVAL
42290db62acSJohn-Mark Gurneyin the case of an invalid
42374a603ebSRuslan Ermilov.Fa filt ,
42490db62acSJohn-Mark Gurneyor
42590db62acSJohn-Mark Gurney.Er EEXIST
42690db62acSJohn-Mark Gurneyif the filter has already been installed.
42790db62acSJohn-Mark Gurney.Pp
42890db62acSJohn-Mark GurneyThe function
42990db62acSJohn-Mark Gurney.Fn kqueue_del_filteropts
43090db62acSJohn-Mark Gurneywill return zero on success,
43190db62acSJohn-Mark Gurney.Er EINVAL
43290db62acSJohn-Mark Gurneyin the case of an invalid
43374a603ebSRuslan Ermilov.Fa filt ,
43490db62acSJohn-Mark Gurneyor
43590db62acSJohn-Mark Gurney.Er EBUSY
43690db62acSJohn-Mark Gurneyif the filter is still in use.
43790db62acSJohn-Mark Gurney.Pp
43890db62acSJohn-Mark GurneyThe function
43990db62acSJohn-Mark Gurney.Fn kqfd_register
44090db62acSJohn-Mark Gurneywill return zero on success,
44190db62acSJohn-Mark Gurney.Er EBADF
44274a603ebSRuslan Ermilovif the file descriptor is not a kqueue, or any of the possible values returned
44390db62acSJohn-Mark Gurneyby
44474a603ebSRuslan Ermilov.Xr kevent 2 .
44590db62acSJohn-Mark Gurney.Sh SEE ALSO
44674a603ebSRuslan Ermilov.Xr kevent 2 ,
44774a603ebSRuslan Ermilov.Xr kqueue 2
44890db62acSJohn-Mark Gurney.Sh AUTHORS
44990db62acSJohn-Mark GurneyThis
45090db62acSJohn-Mark Gurneymanual page was written by
4518a7314fcSBaptiste Daroussin.An John-Mark Gurney Aq Mt jmg@FreeBSD.org .
452