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