xref: /freebsd/share/man/man3/sigevent.3 (revision 463970da7b4ccd44981e325dac9b24c12ccd3da6)
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