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