1463970daSJohn Baldwin.\" -*- nroff -*- 2463970daSJohn Baldwin.\" 3463970daSJohn Baldwin.\" Copyright (c) 2016 John H. Baldwin <jhb@FreeBSD.org> 4463970daSJohn Baldwin.\" 5463970daSJohn Baldwin.\" Redistribution and use in source and binary forms, with or without 6463970daSJohn Baldwin.\" modification, are permitted provided that the following conditions 7463970daSJohn Baldwin.\" are met: 8463970daSJohn Baldwin.\" 1. Redistributions of source code must retain the above copyright 9463970daSJohn Baldwin.\" notice, this list of conditions and the following disclaimer. 10463970daSJohn Baldwin.\" 2. Redistributions in binary form must reproduce the above copyright 11463970daSJohn Baldwin.\" notice, this list of conditions and the following disclaimer in the 12463970daSJohn Baldwin.\" documentation and/or other materials provided with the distribution. 13463970daSJohn Baldwin.\" 14463970daSJohn Baldwin.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15463970daSJohn Baldwin.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16463970daSJohn Baldwin.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17463970daSJohn Baldwin.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18463970daSJohn Baldwin.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19463970daSJohn Baldwin.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20463970daSJohn Baldwin.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21463970daSJohn Baldwin.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22463970daSJohn Baldwin.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23463970daSJohn Baldwin.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24463970daSJohn Baldwin.\" SUCH DAMAGE. 25463970daSJohn Baldwin.\" 26757a04bfSSergio Carlavilla Delgado.Dd February 25, 2020 27463970daSJohn Baldwin.Dt SIGEVENT 3 28463970daSJohn Baldwin.Os 29463970daSJohn Baldwin.Sh NAME 30463970daSJohn Baldwin.Nm sigevent 31463970daSJohn Baldwin.Nd "asynchronous event notification" 32463970daSJohn Baldwin.Sh SYNOPSIS 33463970daSJohn Baldwin.In signal.h 34463970daSJohn Baldwin.Sh DESCRIPTION 35*2090cb10SGordon BerglingSome operations permit threads to request asynchronous notification of events 36463970daSJohn Baldwinvia a 37463970daSJohn Baldwin.Vt struct sigevent 38463970daSJohn Baldwinstructure. 39463970daSJohn BaldwinThis structure contains several fields that describe the requested notification: 40463970daSJohn Baldwin.Bl -column ".Vt void (*)(union sigval)" ".Va sigev_notify_kevent_flags" 41463970daSJohn Baldwin.It Sy Type Ta Sy Member Ta Sy Description 42463970daSJohn Baldwin.It Vt int Ta sigev_notify Ta notification method 43463970daSJohn Baldwin.It Vt int Ta sigev_signo Ta signal number 44463970daSJohn Baldwin.It Vt union sigval Ta sigev_value Ta signal value 45463970daSJohn Baldwin.It Vt int Ta sigev_notify_kqueue Ta 46463970daSJohn Baldwin.Xr kqueue 2 47463970daSJohn Baldwinfile descriptor 48463970daSJohn Baldwin.It Vt unsigned short Ta sigev_notify_kevent_flags Ta kevent flags 49463970daSJohn Baldwin.It Vt lwpid_t Ta sigev_notify_thread_id Ta LWP ID 50463970daSJohn Baldwin.It Vt void (*)(union sigval) Ta sigev_notify_function Ta 51463970daSJohn Baldwincallback function pointer 52463970daSJohn Baldwin.It Vt pthread_attr_t * Ta sigev_notify_attributes Ta 53463970daSJohn Baldwincallback thread attributes 54463970daSJohn Baldwin.El 55463970daSJohn Baldwin.Pp 56463970daSJohn BaldwinThe 57463970daSJohn Baldwin.Va sigev_notify 58463970daSJohn Baldwinfield specifies the notification method used when the event triggers: 59463970daSJohn Baldwin.Bl -tag -width ".Dv SIGEV_THREAD_ID" 60463970daSJohn Baldwin.It Dv SIGEV_NONE 61463970daSJohn BaldwinNo notification is sent. 62463970daSJohn Baldwin.It Dv SIGEV_SIGNAL 63463970daSJohn BaldwinThe signal 64463970daSJohn Baldwin.Va sigev_signo 65463970daSJohn Baldwinis queued as a real-time signal to the calling process. 66463970daSJohn BaldwinThe value stored in 67463970daSJohn Baldwin.Va sigev_value 68463970daSJohn Baldwinwill be present in the 69463970daSJohn Baldwin.Va si_value 70463970daSJohn Baldwinof the 71463970daSJohn Baldwin.Vt siginfo_t 72463970daSJohn Baldwinstructure of the queued signal. 73463970daSJohn Baldwin.It Dv SIGEV_THREAD 74463970daSJohn BaldwinThe notification function in 75463970daSJohn Baldwin.Va sigev_notify_function 76463970daSJohn Baldwinis called in a separate thread context. 77463970daSJohn BaldwinThe thread is created with the attributes specified in 78463970daSJohn Baldwin.Va *sigev_notify_attributes . 79463970daSJohn BaldwinThe value stored in 80463970daSJohn Baldwin.Va sigev_value 81463970daSJohn Baldwinis passed as the sole argument to 82463970daSJohn Baldwin.Va sigev_notify_function . 83463970daSJohn BaldwinIf 84463970daSJohn Baldwin.Va sigev_notify_attributes 85463970daSJohn Baldwinis 86463970daSJohn Baldwin.Dv NULL , 87463970daSJohn Baldwinthe thread is created with default attributes. 88463970daSJohn Baldwin.It Dv SIGEV_KEVENT 89463970daSJohn BaldwinA new kevent is posted to the kqueue 90463970daSJohn Baldwin.Va sigev_notify_kqueue . 91463970daSJohn BaldwinThe 92463970daSJohn Baldwin.Va udata 93463970daSJohn Baldwinmember of the kevent structure contains the value stored in 94463970daSJohn Baldwin.Va sigev_value . 95463970daSJohn BaldwinThe meaning of other fields in the kevent are specific to the type of triggered 96463970daSJohn Baldwinevent. 97463970daSJohn Baldwin.It Dv SIGEV_THREAD_ID 98463970daSJohn BaldwinThe signal 99463970daSJohn Baldwin.Va sigev_signo 100463970daSJohn Baldwinis queued to the thread whose LWP ID is 101463970daSJohn Baldwin.Va sigev_notify_thread_id . 102463970daSJohn BaldwinThe value stored in 103463970daSJohn Baldwin.Va sigev_value 104463970daSJohn Baldwinwill be present in the 105463970daSJohn Baldwin.Va si_value 106463970daSJohn Baldwinof the 107463970daSJohn Baldwin.Vt siginfo_t 108463970daSJohn Baldwinstructure of the queued signal. 109463970daSJohn Baldwin.El 110463970daSJohn Baldwin.Sh NOTES 111463970daSJohn BaldwinNote that programs wishing to use 112463970daSJohn Baldwin.Dv SIGEV_THREAD 113463970daSJohn Baldwinnotifications must link against the 114463970daSJohn Baldwin.Lb librt . 115463970daSJohn Baldwin.Sh SEE ALSO 116463970daSJohn Baldwin.Xr aio_read 2 , 117463970daSJohn Baldwin.Xr mq_notify 2 , 118463970daSJohn Baldwin.Xr timer_create 2 , 119463970daSJohn Baldwin.Xr siginfo 3 120463970daSJohn Baldwin.Sh STANDARDS 121463970daSJohn BaldwinThe 122463970daSJohn Baldwin.Vt struct sigevent 123463970daSJohn Baldwintype conforms to 124463970daSJohn Baldwin.St -p1003.1-2004 . 12555ed6718SBenedict Reuschling.Sh HISTORY 12655ed6718SBenedict ReuschlingThe 12755ed6718SBenedict Reuschling.Va sigevent 12855ed6718SBenedict Reuschlingstructure first appeared in 12955ed6718SBenedict Reuschling.Fx 3.3 . 130