1*463970daSJohn Baldwin.\" -*- nroff -*- 2*463970daSJohn Baldwin.\" 3*463970daSJohn Baldwin.\" Copyright (c) 2016 John H. Baldwin <jhb@FreeBSD.org> 4*463970daSJohn Baldwin.\" All rights reserved. 5*463970daSJohn Baldwin.\" 6*463970daSJohn Baldwin.\" Redistribution and use in source and binary forms, with or without 7*463970daSJohn Baldwin.\" modification, are permitted provided that the following conditions 8*463970daSJohn Baldwin.\" are met: 9*463970daSJohn Baldwin.\" 1. Redistributions of source code must retain the above copyright 10*463970daSJohn Baldwin.\" notice, this list of conditions and the following disclaimer. 11*463970daSJohn Baldwin.\" 2. Redistributions in binary form must reproduce the above copyright 12*463970daSJohn Baldwin.\" notice, this list of conditions and the following disclaimer in the 13*463970daSJohn Baldwin.\" documentation and/or other materials provided with the distribution. 14*463970daSJohn Baldwin.\" 15*463970daSJohn Baldwin.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16*463970daSJohn Baldwin.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17*463970daSJohn Baldwin.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18*463970daSJohn Baldwin.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19*463970daSJohn Baldwin.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20*463970daSJohn Baldwin.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21*463970daSJohn Baldwin.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22*463970daSJohn Baldwin.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23*463970daSJohn Baldwin.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24*463970daSJohn Baldwin.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25*463970daSJohn Baldwin.\" SUCH DAMAGE. 26*463970daSJohn Baldwin.\" 27*463970daSJohn Baldwin.\" $FreeBSD$ 28*463970daSJohn Baldwin.\" 29*463970daSJohn Baldwin.Dd July 15, 2016 30*463970daSJohn Baldwin.Dt SIGEVENT 3 31*463970daSJohn Baldwin.Os 32*463970daSJohn Baldwin.Sh NAME 33*463970daSJohn Baldwin.Nm sigevent 34*463970daSJohn Baldwin.Nd "asynchronous event notification" 35*463970daSJohn Baldwin.Sh SYNOPSIS 36*463970daSJohn Baldwin.In signal.h 37*463970daSJohn Baldwin.Sh DESCRIPTION 38*463970daSJohn BaldwinSome operations permit threads to request asychronous notification of events 39*463970daSJohn Baldwinvia a 40*463970daSJohn Baldwin.Vt struct sigevent 41*463970daSJohn Baldwinstructure. 42*463970daSJohn BaldwinThis structure contains several fields that describe the requested notification: 43*463970daSJohn Baldwin.Bl -column ".Vt void (*)(union sigval)" ".Va sigev_notify_kevent_flags" 44*463970daSJohn Baldwin.It Sy Type Ta Sy Member Ta Sy Description 45*463970daSJohn Baldwin.It Vt int Ta sigev_notify Ta notification method 46*463970daSJohn Baldwin.It Vt int Ta sigev_signo Ta signal number 47*463970daSJohn Baldwin.It Vt union sigval Ta sigev_value Ta signal value 48*463970daSJohn Baldwin.It Vt int Ta sigev_notify_kqueue Ta 49*463970daSJohn Baldwin.Xr kqueue 2 50*463970daSJohn Baldwinfile descriptor 51*463970daSJohn Baldwin.It Vt unsigned short Ta sigev_notify_kevent_flags Ta kevent flags 52*463970daSJohn Baldwin.It Vt lwpid_t Ta sigev_notify_thread_id Ta LWP ID 53*463970daSJohn Baldwin.It Vt void (*)(union sigval) Ta sigev_notify_function Ta 54*463970daSJohn Baldwincallback function pointer 55*463970daSJohn Baldwin.It Vt pthread_attr_t * Ta sigev_notify_attributes Ta 56*463970daSJohn Baldwincallback thread attributes 57*463970daSJohn Baldwin.El 58*463970daSJohn Baldwin.Pp 59*463970daSJohn BaldwinThe 60*463970daSJohn Baldwin.Va sigev_notify 61*463970daSJohn Baldwinfield specifies the notification method used when the event triggers: 62*463970daSJohn Baldwin.Bl -tag -width ".Dv SIGEV_THREAD_ID" 63*463970daSJohn Baldwin.It Dv SIGEV_NONE 64*463970daSJohn BaldwinNo notification is sent. 65*463970daSJohn Baldwin.It Dv SIGEV_SIGNAL 66*463970daSJohn BaldwinThe signal 67*463970daSJohn Baldwin.Va sigev_signo 68*463970daSJohn Baldwinis queued as a real-time signal to the calling process. 69*463970daSJohn BaldwinThe value stored in 70*463970daSJohn Baldwin.Va sigev_value 71*463970daSJohn Baldwinwill be present in the 72*463970daSJohn Baldwin.Va si_value 73*463970daSJohn Baldwinof the 74*463970daSJohn Baldwin.Vt siginfo_t 75*463970daSJohn Baldwinstructure of the queued signal. 76*463970daSJohn Baldwin.It Dv SIGEV_THREAD 77*463970daSJohn BaldwinThe notification function in 78*463970daSJohn Baldwin.Va sigev_notify_function 79*463970daSJohn Baldwinis called in a separate thread context. 80*463970daSJohn BaldwinThe thread is created with the attributes specified in 81*463970daSJohn Baldwin.Va *sigev_notify_attributes . 82*463970daSJohn BaldwinThe value stored in 83*463970daSJohn Baldwin.Va sigev_value 84*463970daSJohn Baldwinis passed as the sole argument to 85*463970daSJohn Baldwin.Va sigev_notify_function . 86*463970daSJohn BaldwinIf 87*463970daSJohn Baldwin.Va sigev_notify_attributes 88*463970daSJohn Baldwinis 89*463970daSJohn Baldwin.Dv NULL , 90*463970daSJohn Baldwinthe thread is created with default attributes. 91*463970daSJohn Baldwin.It Dv SIGEV_KEVENT 92*463970daSJohn BaldwinA new kevent is posted to the kqueue 93*463970daSJohn Baldwin.Va sigev_notify_kqueue . 94*463970daSJohn BaldwinThe 95*463970daSJohn Baldwin.Va udata 96*463970daSJohn Baldwinmember of the kevent structure contains the value stored in 97*463970daSJohn Baldwin.Va sigev_value . 98*463970daSJohn BaldwinThe meaning of other fields in the kevent are specific to the type of triggered 99*463970daSJohn Baldwinevent. 100*463970daSJohn Baldwin.It Dv SIGEV_THREAD_ID 101*463970daSJohn BaldwinThe signal 102*463970daSJohn Baldwin.Va sigev_signo 103*463970daSJohn Baldwinis queued to the thread whose LWP ID is 104*463970daSJohn Baldwin.Va sigev_notify_thread_id . 105*463970daSJohn BaldwinThe value stored in 106*463970daSJohn Baldwin.Va sigev_value 107*463970daSJohn Baldwinwill be present in the 108*463970daSJohn Baldwin.Va si_value 109*463970daSJohn Baldwinof the 110*463970daSJohn Baldwin.Vt siginfo_t 111*463970daSJohn Baldwinstructure of the queued signal. 112*463970daSJohn Baldwin.El 113*463970daSJohn Baldwin.Sh NOTES 114*463970daSJohn BaldwinNote that programs wishing to use 115*463970daSJohn Baldwin.Dv SIGEV_THREAD 116*463970daSJohn Baldwinnotifications must link against the 117*463970daSJohn Baldwin.Lb librt . 118*463970daSJohn Baldwin.Sh SEE ALSO 119*463970daSJohn Baldwin.Xr aio_read 2 , 120*463970daSJohn Baldwin.Xr mq_notify 2 , 121*463970daSJohn Baldwin.Xr timer_create 2 , 122*463970daSJohn Baldwin.Xr siginfo 3 123*463970daSJohn Baldwin.Sh STANDARDS 124*463970daSJohn BaldwinThe 125*463970daSJohn Baldwin.Vt struct sigevent 126*463970daSJohn Baldwintype conforms to 127*463970daSJohn Baldwin.St -p1003.1-2004 . 128