xref: /aosp_15_r20/external/cronet/third_party/libevent/event.3 (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker.\"	$OpenBSD: event.3,v 1.4 2002/07/12 18:50:48 provos Exp $
2*6777b538SAndroid Build Coastguard Worker.\"
3*6777b538SAndroid Build Coastguard Worker.\" Copyright (c) 2000 Artur Grabowski <[email protected]>
4*6777b538SAndroid Build Coastguard Worker.\" All rights reserved.
5*6777b538SAndroid Build Coastguard Worker.\"
6*6777b538SAndroid Build Coastguard Worker.\" Redistribution and use in source and binary forms, with or without
7*6777b538SAndroid Build Coastguard Worker.\" modification, are permitted provided that the following conditions
8*6777b538SAndroid Build Coastguard Worker.\" are met:
9*6777b538SAndroid Build Coastguard Worker.\"
10*6777b538SAndroid Build Coastguard Worker.\" 1. Redistributions of source code must retain the above copyright
11*6777b538SAndroid Build Coastguard Worker.\"    notice, this list of conditions and the following disclaimer.
12*6777b538SAndroid Build Coastguard Worker.\" 2. Redistributions in binary form must reproduce the above copyright
13*6777b538SAndroid Build Coastguard Worker.\"    notice, this list of conditions and the following disclaimer in the
14*6777b538SAndroid Build Coastguard Worker.\"    documentation and/or other materials provided with the distribution.
15*6777b538SAndroid Build Coastguard Worker.\" 3. The name of the author may not be used to endorse or promote products
16*6777b538SAndroid Build Coastguard Worker.\"    derived from this software without specific prior written permission.
17*6777b538SAndroid Build Coastguard Worker.\"
18*6777b538SAndroid Build Coastguard Worker.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
19*6777b538SAndroid Build Coastguard Worker.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
20*6777b538SAndroid Build Coastguard Worker.\" AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
21*6777b538SAndroid Build Coastguard Worker.\" THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22*6777b538SAndroid Build Coastguard Worker.\" EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23*6777b538SAndroid Build Coastguard Worker.\" PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24*6777b538SAndroid Build Coastguard Worker.\" OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25*6777b538SAndroid Build Coastguard Worker.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26*6777b538SAndroid Build Coastguard Worker.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27*6777b538SAndroid Build Coastguard Worker.\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28*6777b538SAndroid Build Coastguard Worker.\"
29*6777b538SAndroid Build Coastguard Worker.Dd August 8, 2000
30*6777b538SAndroid Build Coastguard Worker.Dt EVENT 3
31*6777b538SAndroid Build Coastguard Worker.Os
32*6777b538SAndroid Build Coastguard Worker.Sh NAME
33*6777b538SAndroid Build Coastguard Worker.Nm event_init ,
34*6777b538SAndroid Build Coastguard Worker.Nm event_dispatch ,
35*6777b538SAndroid Build Coastguard Worker.Nm event_loop ,
36*6777b538SAndroid Build Coastguard Worker.Nm event_loopexit ,
37*6777b538SAndroid Build Coastguard Worker.Nm event_loopbreak ,
38*6777b538SAndroid Build Coastguard Worker.Nm event_set ,
39*6777b538SAndroid Build Coastguard Worker.Nm event_base_dispatch ,
40*6777b538SAndroid Build Coastguard Worker.Nm event_base_loop ,
41*6777b538SAndroid Build Coastguard Worker.Nm event_base_loopexit ,
42*6777b538SAndroid Build Coastguard Worker.Nm event_base_loopbreak ,
43*6777b538SAndroid Build Coastguard Worker.Nm event_base_set ,
44*6777b538SAndroid Build Coastguard Worker.Nm event_base_free ,
45*6777b538SAndroid Build Coastguard Worker.Nm event_add ,
46*6777b538SAndroid Build Coastguard Worker.Nm event_del ,
47*6777b538SAndroid Build Coastguard Worker.Nm event_once ,
48*6777b538SAndroid Build Coastguard Worker.Nm event_base_once ,
49*6777b538SAndroid Build Coastguard Worker.Nm event_pending ,
50*6777b538SAndroid Build Coastguard Worker.Nm event_initialized ,
51*6777b538SAndroid Build Coastguard Worker.Nm event_priority_init ,
52*6777b538SAndroid Build Coastguard Worker.Nm event_priority_set ,
53*6777b538SAndroid Build Coastguard Worker.Nm evtimer_set ,
54*6777b538SAndroid Build Coastguard Worker.Nm evtimer_add ,
55*6777b538SAndroid Build Coastguard Worker.Nm evtimer_del ,
56*6777b538SAndroid Build Coastguard Worker.Nm evtimer_pending ,
57*6777b538SAndroid Build Coastguard Worker.Nm evtimer_initialized ,
58*6777b538SAndroid Build Coastguard Worker.Nm signal_set ,
59*6777b538SAndroid Build Coastguard Worker.Nm signal_add ,
60*6777b538SAndroid Build Coastguard Worker.Nm signal_del ,
61*6777b538SAndroid Build Coastguard Worker.Nm signal_pending ,
62*6777b538SAndroid Build Coastguard Worker.Nm signal_initialized ,
63*6777b538SAndroid Build Coastguard Worker.Nm bufferevent_new ,
64*6777b538SAndroid Build Coastguard Worker.Nm bufferevent_free ,
65*6777b538SAndroid Build Coastguard Worker.Nm bufferevent_write ,
66*6777b538SAndroid Build Coastguard Worker.Nm bufferevent_write_buffer ,
67*6777b538SAndroid Build Coastguard Worker.Nm bufferevent_read ,
68*6777b538SAndroid Build Coastguard Worker.Nm bufferevent_enable ,
69*6777b538SAndroid Build Coastguard Worker.Nm bufferevent_disable ,
70*6777b538SAndroid Build Coastguard Worker.Nm bufferevent_settimeout ,
71*6777b538SAndroid Build Coastguard Worker.Nm bufferevent_base_set ,
72*6777b538SAndroid Build Coastguard Worker.Nm evbuffer_new ,
73*6777b538SAndroid Build Coastguard Worker.Nm evbuffer_free ,
74*6777b538SAndroid Build Coastguard Worker.Nm evbuffer_add ,
75*6777b538SAndroid Build Coastguard Worker.Nm evbuffer_add_buffer ,
76*6777b538SAndroid Build Coastguard Worker.Nm evbuffer_add_printf ,
77*6777b538SAndroid Build Coastguard Worker.Nm evbuffer_add_vprintf ,
78*6777b538SAndroid Build Coastguard Worker.Nm evbuffer_drain ,
79*6777b538SAndroid Build Coastguard Worker.Nm evbuffer_write ,
80*6777b538SAndroid Build Coastguard Worker.Nm evbuffer_read ,
81*6777b538SAndroid Build Coastguard Worker.Nm evbuffer_find ,
82*6777b538SAndroid Build Coastguard Worker.Nm evbuffer_readline ,
83*6777b538SAndroid Build Coastguard Worker.Nm evhttp_new ,
84*6777b538SAndroid Build Coastguard Worker.Nm evhttp_bind_socket ,
85*6777b538SAndroid Build Coastguard Worker.Nm evhttp_free
86*6777b538SAndroid Build Coastguard Worker.Nd execute a function when a specific event occurs
87*6777b538SAndroid Build Coastguard Worker.Sh SYNOPSIS
88*6777b538SAndroid Build Coastguard Worker.Fd #include <sys/time.h>
89*6777b538SAndroid Build Coastguard Worker.Fd #include <event.h>
90*6777b538SAndroid Build Coastguard Worker.Ft "struct event_base *"
91*6777b538SAndroid Build Coastguard Worker.Fn "event_init" "void"
92*6777b538SAndroid Build Coastguard Worker.Ft int
93*6777b538SAndroid Build Coastguard Worker.Fn "event_dispatch" "void"
94*6777b538SAndroid Build Coastguard Worker.Ft int
95*6777b538SAndroid Build Coastguard Worker.Fn "event_loop" "int flags"
96*6777b538SAndroid Build Coastguard Worker.Ft int
97*6777b538SAndroid Build Coastguard Worker.Fn "event_loopexit" "struct timeval *tv"
98*6777b538SAndroid Build Coastguard Worker.Ft int
99*6777b538SAndroid Build Coastguard Worker.Fn "event_loopbreak" "void"
100*6777b538SAndroid Build Coastguard Worker.Ft void
101*6777b538SAndroid Build Coastguard Worker.Fn "event_set" "struct event *ev" "int fd" "short event" "void (*fn)(int, short, void *)" "void *arg"
102*6777b538SAndroid Build Coastguard Worker.Ft int
103*6777b538SAndroid Build Coastguard Worker.Fn "event_base_dispatch" "struct event_base *base"
104*6777b538SAndroid Build Coastguard Worker.Ft int
105*6777b538SAndroid Build Coastguard Worker.Fn "event_base_loop" "struct event_base *base" "int flags"
106*6777b538SAndroid Build Coastguard Worker.Ft int
107*6777b538SAndroid Build Coastguard Worker.Fn "event_base_loopexit" "struct event_base *base" "struct timeval *tv"
108*6777b538SAndroid Build Coastguard Worker.Ft int
109*6777b538SAndroid Build Coastguard Worker.Fn "event_base_loopbreak" "struct event_base *base"
110*6777b538SAndroid Build Coastguard Worker.Ft int
111*6777b538SAndroid Build Coastguard Worker.Fn "event_base_set" "struct event_base *base" "struct event *"
112*6777b538SAndroid Build Coastguard Worker.Ft void
113*6777b538SAndroid Build Coastguard Worker.Fn "event_base_free" "struct event_base *base"
114*6777b538SAndroid Build Coastguard Worker.Ft int
115*6777b538SAndroid Build Coastguard Worker.Fn "event_add" "struct event *ev" "struct timeval *tv"
116*6777b538SAndroid Build Coastguard Worker.Ft int
117*6777b538SAndroid Build Coastguard Worker.Fn "event_del" "struct event *ev"
118*6777b538SAndroid Build Coastguard Worker.Ft int
119*6777b538SAndroid Build Coastguard Worker.Fn "event_once" "int fd" "short event" "void (*fn)(int, short, void *)" "void *arg" "struct timeval *tv"
120*6777b538SAndroid Build Coastguard Worker.Ft int
121*6777b538SAndroid Build Coastguard Worker.Fn "event_base_once" "struct event_base *base" "int fd" "short event" "void (*fn)(int, short, void *)" "void *arg" "struct timeval *tv"
122*6777b538SAndroid Build Coastguard Worker.Ft int
123*6777b538SAndroid Build Coastguard Worker.Fn "event_pending" "struct event *ev" "short event" "struct timeval *tv"
124*6777b538SAndroid Build Coastguard Worker.Ft int
125*6777b538SAndroid Build Coastguard Worker.Fn "event_initialized" "struct event *ev"
126*6777b538SAndroid Build Coastguard Worker.Ft int
127*6777b538SAndroid Build Coastguard Worker.Fn "event_priority_init" "int npriorities"
128*6777b538SAndroid Build Coastguard Worker.Ft int
129*6777b538SAndroid Build Coastguard Worker.Fn "event_priority_set" "struct event *ev" "int priority"
130*6777b538SAndroid Build Coastguard Worker.Ft void
131*6777b538SAndroid Build Coastguard Worker.Fn "evtimer_set" "struct event *ev" "void (*fn)(int, short, void *)" "void *arg"
132*6777b538SAndroid Build Coastguard Worker.Ft void
133*6777b538SAndroid Build Coastguard Worker.Fn "evtimer_add" "struct event *ev" "struct timeval *"
134*6777b538SAndroid Build Coastguard Worker.Ft void
135*6777b538SAndroid Build Coastguard Worker.Fn "evtimer_del" "struct event *ev"
136*6777b538SAndroid Build Coastguard Worker.Ft int
137*6777b538SAndroid Build Coastguard Worker.Fn "evtimer_pending" "struct event *ev" "struct timeval *tv"
138*6777b538SAndroid Build Coastguard Worker.Ft int
139*6777b538SAndroid Build Coastguard Worker.Fn "evtimer_initialized" "struct event *ev"
140*6777b538SAndroid Build Coastguard Worker.Ft void
141*6777b538SAndroid Build Coastguard Worker.Fn "signal_set" "struct event *ev" "int signal" "void (*fn)(int, short, void *)" "void *arg"
142*6777b538SAndroid Build Coastguard Worker.Ft void
143*6777b538SAndroid Build Coastguard Worker.Fn "signal_add" "struct event *ev" "struct timeval *"
144*6777b538SAndroid Build Coastguard Worker.Ft void
145*6777b538SAndroid Build Coastguard Worker.Fn "signal_del" "struct event *ev"
146*6777b538SAndroid Build Coastguard Worker.Ft int
147*6777b538SAndroid Build Coastguard Worker.Fn "signal_pending" "struct event *ev" "struct timeval *tv"
148*6777b538SAndroid Build Coastguard Worker.Ft int
149*6777b538SAndroid Build Coastguard Worker.Fn "signal_initialized" "struct event *ev"
150*6777b538SAndroid Build Coastguard Worker.Ft "struct bufferevent *"
151*6777b538SAndroid Build Coastguard Worker.Fn "bufferevent_new" "int fd" "evbuffercb readcb" "evbuffercb writecb" "everrorcb" "void *cbarg"
152*6777b538SAndroid Build Coastguard Worker.Ft void
153*6777b538SAndroid Build Coastguard Worker.Fn "bufferevent_free" "struct bufferevent *bufev"
154*6777b538SAndroid Build Coastguard Worker.Ft int
155*6777b538SAndroid Build Coastguard Worker.Fn "bufferevent_write" "struct bufferevent *bufev" "void *data" "size_t size"
156*6777b538SAndroid Build Coastguard Worker.Ft int
157*6777b538SAndroid Build Coastguard Worker.Fn "bufferevent_write_buffer" "struct bufferevent *bufev" "struct evbuffer *buf"
158*6777b538SAndroid Build Coastguard Worker.Ft size_t
159*6777b538SAndroid Build Coastguard Worker.Fn "bufferevent_read" "struct bufferevent *bufev" "void *data" "size_t size"
160*6777b538SAndroid Build Coastguard Worker.Ft int
161*6777b538SAndroid Build Coastguard Worker.Fn "bufferevent_enable" "struct bufferevent *bufev" "short event"
162*6777b538SAndroid Build Coastguard Worker.Ft int
163*6777b538SAndroid Build Coastguard Worker.Fn "bufferevent_disable" "struct bufferevent *bufev" "short event"
164*6777b538SAndroid Build Coastguard Worker.Ft void
165*6777b538SAndroid Build Coastguard Worker.Fn "bufferevent_settimeout" "struct bufferevent *bufev" "int timeout_read" "int timeout_write"
166*6777b538SAndroid Build Coastguard Worker.Ft int
167*6777b538SAndroid Build Coastguard Worker.Fn "bufferevent_base_set" "struct event_base *base" "struct bufferevent *bufev"
168*6777b538SAndroid Build Coastguard Worker.Ft "struct evbuffer *"
169*6777b538SAndroid Build Coastguard Worker.Fn "evbuffer_new" "void"
170*6777b538SAndroid Build Coastguard Worker.Ft void
171*6777b538SAndroid Build Coastguard Worker.Fn "evbuffer_free" "struct evbuffer *buf"
172*6777b538SAndroid Build Coastguard Worker.Ft int
173*6777b538SAndroid Build Coastguard Worker.Fn "evbuffer_add" "struct evbuffer *buf" "const void *data" "size_t size"
174*6777b538SAndroid Build Coastguard Worker.Ft int
175*6777b538SAndroid Build Coastguard Worker.Fn "evbuffer_add_buffer" "struct evbuffer *dst" "struct evbuffer *src"
176*6777b538SAndroid Build Coastguard Worker.Ft int
177*6777b538SAndroid Build Coastguard Worker.Fn "evbuffer_add_printf" "struct evbuffer *buf" "const char *fmt" "..."
178*6777b538SAndroid Build Coastguard Worker.Ft int
179*6777b538SAndroid Build Coastguard Worker.Fn "evbuffer_add_vprintf" "struct evbuffer *buf" "const char *fmt" "va_list ap"
180*6777b538SAndroid Build Coastguard Worker.Ft void
181*6777b538SAndroid Build Coastguard Worker.Fn "evbuffer_drain" "struct evbuffer *buf" "size_t size"
182*6777b538SAndroid Build Coastguard Worker.Ft int
183*6777b538SAndroid Build Coastguard Worker.Fn "evbuffer_write" "struct evbuffer *buf" "int fd"
184*6777b538SAndroid Build Coastguard Worker.Ft int
185*6777b538SAndroid Build Coastguard Worker.Fn "evbuffer_read" "struct evbuffer *buf" "int fd" "int size"
186*6777b538SAndroid Build Coastguard Worker.Ft "u_char *"
187*6777b538SAndroid Build Coastguard Worker.Fn "evbuffer_find" "struct evbuffer *buf" "const u_char *data" "size_t size"
188*6777b538SAndroid Build Coastguard Worker.Ft "char *"
189*6777b538SAndroid Build Coastguard Worker.Fn "evbuffer_readline" "struct evbuffer *buf"
190*6777b538SAndroid Build Coastguard Worker.Ft "struct evhttp *"
191*6777b538SAndroid Build Coastguard Worker.Fn "evhttp_new" "struct event_base *base"
192*6777b538SAndroid Build Coastguard Worker.Ft int
193*6777b538SAndroid Build Coastguard Worker.Fn "evhttp_bind_socket" "struct evhttp *http" "const char *address" "u_short port"
194*6777b538SAndroid Build Coastguard Worker.Ft "void"
195*6777b538SAndroid Build Coastguard Worker.Fn "evhttp_free" "struct evhttp *http"
196*6777b538SAndroid Build Coastguard Worker.Ft int
197*6777b538SAndroid Build Coastguard Worker.Fa (*event_sigcb)(void) ;
198*6777b538SAndroid Build Coastguard Worker.Ft volatile sig_atomic_t
199*6777b538SAndroid Build Coastguard Worker.Fa event_gotsig ;
200*6777b538SAndroid Build Coastguard Worker.Sh DESCRIPTION
201*6777b538SAndroid Build Coastguard WorkerThe
202*6777b538SAndroid Build Coastguard Worker.Nm event
203*6777b538SAndroid Build Coastguard WorkerAPI provides a mechanism to execute a function when a specific event
204*6777b538SAndroid Build Coastguard Workeron a file descriptor occurs or after a given time has passed.
205*6777b538SAndroid Build Coastguard Worker.Pp
206*6777b538SAndroid Build Coastguard WorkerThe
207*6777b538SAndroid Build Coastguard Worker.Nm event
208*6777b538SAndroid Build Coastguard WorkerAPI needs to be initialized with
209*6777b538SAndroid Build Coastguard Worker.Fn event_init
210*6777b538SAndroid Build Coastguard Workerbefore it can be used.
211*6777b538SAndroid Build Coastguard Worker.Pp
212*6777b538SAndroid Build Coastguard WorkerIn order to process events, an application needs to call
213*6777b538SAndroid Build Coastguard Worker.Fn event_dispatch .
214*6777b538SAndroid Build Coastguard WorkerThis function only returns on error, and should replace the event core
215*6777b538SAndroid Build Coastguard Workerof the application program.
216*6777b538SAndroid Build Coastguard Worker.Pp
217*6777b538SAndroid Build Coastguard WorkerThe function
218*6777b538SAndroid Build Coastguard Worker.Fn event_set
219*6777b538SAndroid Build Coastguard Workerprepares the event structure
220*6777b538SAndroid Build Coastguard Worker.Fa ev
221*6777b538SAndroid Build Coastguard Workerto be used in future calls to
222*6777b538SAndroid Build Coastguard Worker.Fn event_add
223*6777b538SAndroid Build Coastguard Workerand
224*6777b538SAndroid Build Coastguard Worker.Fn event_del .
225*6777b538SAndroid Build Coastguard WorkerThe event will be prepared to call the function specified by the
226*6777b538SAndroid Build Coastguard Worker.Fa fn
227*6777b538SAndroid Build Coastguard Workerargument with an
228*6777b538SAndroid Build Coastguard Worker.Fa int
229*6777b538SAndroid Build Coastguard Workerargument indicating the file descriptor, a
230*6777b538SAndroid Build Coastguard Worker.Fa short
231*6777b538SAndroid Build Coastguard Workerargument indicating the type of event, and a
232*6777b538SAndroid Build Coastguard Worker.Fa void *
233*6777b538SAndroid Build Coastguard Workerargument given in the
234*6777b538SAndroid Build Coastguard Worker.Fa arg
235*6777b538SAndroid Build Coastguard Workerargument.
236*6777b538SAndroid Build Coastguard WorkerThe
237*6777b538SAndroid Build Coastguard Worker.Fa fd
238*6777b538SAndroid Build Coastguard Workerindicates the file descriptor that should be monitored for events.
239*6777b538SAndroid Build Coastguard WorkerThe events can be either
240*6777b538SAndroid Build Coastguard Worker.Va EV_READ ,
241*6777b538SAndroid Build Coastguard Worker.Va EV_WRITE ,
242*6777b538SAndroid Build Coastguard Workeror both,
243*6777b538SAndroid Build Coastguard Workerindicating that an application can read or write from the file descriptor
244*6777b538SAndroid Build Coastguard Workerrespectively without blocking.
245*6777b538SAndroid Build Coastguard Worker.Pp
246*6777b538SAndroid Build Coastguard WorkerThe function
247*6777b538SAndroid Build Coastguard Worker.Fa fn
248*6777b538SAndroid Build Coastguard Workerwill be called with the file descriptor that triggered the event and
249*6777b538SAndroid Build Coastguard Workerthe type of event which will be either
250*6777b538SAndroid Build Coastguard Worker.Va EV_TIMEOUT ,
251*6777b538SAndroid Build Coastguard Worker.Va EV_SIGNAL ,
252*6777b538SAndroid Build Coastguard Worker.Va EV_READ ,
253*6777b538SAndroid Build Coastguard Workeror
254*6777b538SAndroid Build Coastguard Worker.Va EV_WRITE .
255*6777b538SAndroid Build Coastguard WorkerAdditionally, an event which has registered interest in more than one of the
256*6777b538SAndroid Build Coastguard Workerpreceeding events, via bitwise-OR to
257*6777b538SAndroid Build Coastguard Worker.Fn event_set ,
258*6777b538SAndroid Build Coastguard Workercan provide its callback function with a bitwise-OR of more than one triggered
259*6777b538SAndroid Build Coastguard Workerevent.
260*6777b538SAndroid Build Coastguard WorkerThe additional flag
261*6777b538SAndroid Build Coastguard Worker.Va EV_PERSIST
262*6777b538SAndroid Build Coastguard Workermakes an
263*6777b538SAndroid Build Coastguard Worker.Fn event_add
264*6777b538SAndroid Build Coastguard Workerpersistent until
265*6777b538SAndroid Build Coastguard Worker.Fn event_del
266*6777b538SAndroid Build Coastguard Workerhas been called.
267*6777b538SAndroid Build Coastguard Worker.Pp
268*6777b538SAndroid Build Coastguard WorkerOnce initialized, the
269*6777b538SAndroid Build Coastguard Worker.Fa ev
270*6777b538SAndroid Build Coastguard Workerstructure can be used repeatedly with
271*6777b538SAndroid Build Coastguard Worker.Fn event_add
272*6777b538SAndroid Build Coastguard Workerand
273*6777b538SAndroid Build Coastguard Worker.Fn event_del
274*6777b538SAndroid Build Coastguard Workerand does not need to be reinitialized unless the function called and/or
275*6777b538SAndroid Build Coastguard Workerthe argument to it are to be changed.
276*6777b538SAndroid Build Coastguard WorkerHowever, when an
277*6777b538SAndroid Build Coastguard Worker.Fa ev
278*6777b538SAndroid Build Coastguard Workerstructure has been added to libevent using
279*6777b538SAndroid Build Coastguard Worker.Fn event_add
280*6777b538SAndroid Build Coastguard Workerthe structure must persist until the event occurs (assuming
281*6777b538SAndroid Build Coastguard Worker.Fa EV_PERSIST
282*6777b538SAndroid Build Coastguard Workeris not set) or is removed
283*6777b538SAndroid Build Coastguard Workerusing
284*6777b538SAndroid Build Coastguard Worker.Fn event_del .
285*6777b538SAndroid Build Coastguard WorkerYou may not reuse the same
286*6777b538SAndroid Build Coastguard Worker.Fa ev
287*6777b538SAndroid Build Coastguard Workerstructure for multiple monitored descriptors; each descriptor
288*6777b538SAndroid Build Coastguard Workerneeds its own
289*6777b538SAndroid Build Coastguard Worker.Fa ev .
290*6777b538SAndroid Build Coastguard Worker.Pp
291*6777b538SAndroid Build Coastguard WorkerThe function
292*6777b538SAndroid Build Coastguard Worker.Fn event_add
293*6777b538SAndroid Build Coastguard Workerschedules the execution of the
294*6777b538SAndroid Build Coastguard Worker.Fa ev
295*6777b538SAndroid Build Coastguard Workerevent when the event specified in
296*6777b538SAndroid Build Coastguard Worker.Fn event_set
297*6777b538SAndroid Build Coastguard Workeroccurs or in at least the time specified in the
298*6777b538SAndroid Build Coastguard Worker.Fa tv .
299*6777b538SAndroid Build Coastguard WorkerIf
300*6777b538SAndroid Build Coastguard Worker.Fa tv
301*6777b538SAndroid Build Coastguard Workeris
302*6777b538SAndroid Build Coastguard Worker.Dv NULL ,
303*6777b538SAndroid Build Coastguard Workerno timeout occurs and the function will only be called
304*6777b538SAndroid Build Coastguard Workerif a matching event occurs on the file descriptor.
305*6777b538SAndroid Build Coastguard WorkerThe event in the
306*6777b538SAndroid Build Coastguard Worker.Fa ev
307*6777b538SAndroid Build Coastguard Workerargument must be already initialized by
308*6777b538SAndroid Build Coastguard Worker.Fn event_set
309*6777b538SAndroid Build Coastguard Workerand may not be used in calls to
310*6777b538SAndroid Build Coastguard Worker.Fn event_set
311*6777b538SAndroid Build Coastguard Workeruntil it has timed out or been removed with
312*6777b538SAndroid Build Coastguard Worker.Fn event_del .
313*6777b538SAndroid Build Coastguard WorkerIf the event in the
314*6777b538SAndroid Build Coastguard Worker.Fa ev
315*6777b538SAndroid Build Coastguard Workerargument already has a scheduled timeout, the old timeout will be
316*6777b538SAndroid Build Coastguard Workerreplaced by the new one.
317*6777b538SAndroid Build Coastguard Worker.Pp
318*6777b538SAndroid Build Coastguard WorkerThe function
319*6777b538SAndroid Build Coastguard Worker.Fn event_del
320*6777b538SAndroid Build Coastguard Workerwill cancel the event in the argument
321*6777b538SAndroid Build Coastguard Worker.Fa ev .
322*6777b538SAndroid Build Coastguard WorkerIf the event has already executed or has never been added
323*6777b538SAndroid Build Coastguard Workerthe call will have no effect.
324*6777b538SAndroid Build Coastguard Worker.Pp
325*6777b538SAndroid Build Coastguard WorkerThe functions
326*6777b538SAndroid Build Coastguard Worker.Fn evtimer_set ,
327*6777b538SAndroid Build Coastguard Worker.Fn evtimer_add ,
328*6777b538SAndroid Build Coastguard Worker.Fn evtimer_del ,
329*6777b538SAndroid Build Coastguard Worker.Fn evtimer_initialized ,
330*6777b538SAndroid Build Coastguard Workerand
331*6777b538SAndroid Build Coastguard Worker.Fn evtimer_pending
332*6777b538SAndroid Build Coastguard Workerare abbreviations for common situations where only a timeout is required.
333*6777b538SAndroid Build Coastguard WorkerThe file descriptor passed will be \-1, and the event type will be
334*6777b538SAndroid Build Coastguard Worker.Va EV_TIMEOUT .
335*6777b538SAndroid Build Coastguard Worker.Pp
336*6777b538SAndroid Build Coastguard WorkerThe functions
337*6777b538SAndroid Build Coastguard Worker.Fn signal_set ,
338*6777b538SAndroid Build Coastguard Worker.Fn signal_add ,
339*6777b538SAndroid Build Coastguard Worker.Fn signal_del ,
340*6777b538SAndroid Build Coastguard Worker.Fn signal_initialized ,
341*6777b538SAndroid Build Coastguard Workerand
342*6777b538SAndroid Build Coastguard Worker.Fn signal_pending
343*6777b538SAndroid Build Coastguard Workerare abbreviations.
344*6777b538SAndroid Build Coastguard WorkerThe event type will be a persistent
345*6777b538SAndroid Build Coastguard Worker.Va EV_SIGNAL .
346*6777b538SAndroid Build Coastguard WorkerThat means
347*6777b538SAndroid Build Coastguard Worker.Fn signal_set
348*6777b538SAndroid Build Coastguard Workeradds
349*6777b538SAndroid Build Coastguard Worker.Va EV_PERSIST .
350*6777b538SAndroid Build Coastguard Worker.Pp
351*6777b538SAndroid Build Coastguard WorkerIn order to avoid races in signal handlers, the
352*6777b538SAndroid Build Coastguard Worker.Nm event
353*6777b538SAndroid Build Coastguard WorkerAPI provides two variables:
354*6777b538SAndroid Build Coastguard Worker.Va event_sigcb
355*6777b538SAndroid Build Coastguard Workerand
356*6777b538SAndroid Build Coastguard Worker.Va event_gotsig .
357*6777b538SAndroid Build Coastguard WorkerA signal handler
358*6777b538SAndroid Build Coastguard Workersets
359*6777b538SAndroid Build Coastguard Worker.Va event_gotsig
360*6777b538SAndroid Build Coastguard Workerto indicate that a signal has been received.
361*6777b538SAndroid Build Coastguard WorkerThe application sets
362*6777b538SAndroid Build Coastguard Worker.Va event_sigcb
363*6777b538SAndroid Build Coastguard Workerto a callback function.
364*6777b538SAndroid Build Coastguard WorkerAfter the signal handler sets
365*6777b538SAndroid Build Coastguard Worker.Va event_gotsig ,
366*6777b538SAndroid Build Coastguard Worker.Nm event_dispatch
367*6777b538SAndroid Build Coastguard Workerwill execute the callback function to process received signals.
368*6777b538SAndroid Build Coastguard WorkerThe callback returns 1 when no events are registered any more.
369*6777b538SAndroid Build Coastguard WorkerIt can return \-1 to indicate an error to the
370*6777b538SAndroid Build Coastguard Worker.Nm event
371*6777b538SAndroid Build Coastguard Workerlibrary, causing
372*6777b538SAndroid Build Coastguard Worker.Fn event_dispatch
373*6777b538SAndroid Build Coastguard Workerto terminate with
374*6777b538SAndroid Build Coastguard Worker.Va errno
375*6777b538SAndroid Build Coastguard Workerset to
376*6777b538SAndroid Build Coastguard Worker.Er EINTR .
377*6777b538SAndroid Build Coastguard Worker.Pp
378*6777b538SAndroid Build Coastguard WorkerThe function
379*6777b538SAndroid Build Coastguard Worker.Fn event_once
380*6777b538SAndroid Build Coastguard Workeris similar to
381*6777b538SAndroid Build Coastguard Worker.Fn event_set .
382*6777b538SAndroid Build Coastguard WorkerHowever, it schedules a callback to be called exactly once and does not
383*6777b538SAndroid Build Coastguard Workerrequire the caller to prepare an
384*6777b538SAndroid Build Coastguard Worker.Fa event
385*6777b538SAndroid Build Coastguard Workerstructure.
386*6777b538SAndroid Build Coastguard WorkerThis function supports
387*6777b538SAndroid Build Coastguard Worker.Fa EV_TIMEOUT ,
388*6777b538SAndroid Build Coastguard Worker.Fa EV_READ ,
389*6777b538SAndroid Build Coastguard Workerand
390*6777b538SAndroid Build Coastguard Worker.Fa EV_WRITE .
391*6777b538SAndroid Build Coastguard Worker.Pp
392*6777b538SAndroid Build Coastguard WorkerThe
393*6777b538SAndroid Build Coastguard Worker.Fn event_pending
394*6777b538SAndroid Build Coastguard Workerfunction can be used to check if the event specified by
395*6777b538SAndroid Build Coastguard Worker.Fa event
396*6777b538SAndroid Build Coastguard Workeris pending to run.
397*6777b538SAndroid Build Coastguard WorkerIf
398*6777b538SAndroid Build Coastguard Worker.Va EV_TIMEOUT
399*6777b538SAndroid Build Coastguard Workerwas specified and
400*6777b538SAndroid Build Coastguard Worker.Fa tv
401*6777b538SAndroid Build Coastguard Workeris not
402*6777b538SAndroid Build Coastguard Worker.Dv NULL ,
403*6777b538SAndroid Build Coastguard Workerthe expiration time of the event will be returned in
404*6777b538SAndroid Build Coastguard Worker.Fa tv .
405*6777b538SAndroid Build Coastguard Worker.Pp
406*6777b538SAndroid Build Coastguard WorkerThe
407*6777b538SAndroid Build Coastguard Worker.Fn event_initialized
408*6777b538SAndroid Build Coastguard Workermacro can be used to check if an event has been initialized.
409*6777b538SAndroid Build Coastguard Worker.Pp
410*6777b538SAndroid Build Coastguard WorkerThe
411*6777b538SAndroid Build Coastguard Worker.Nm event_loop
412*6777b538SAndroid Build Coastguard Workerfunction provides an interface for single pass execution of pending
413*6777b538SAndroid Build Coastguard Workerevents.
414*6777b538SAndroid Build Coastguard WorkerThe flags
415*6777b538SAndroid Build Coastguard Worker.Va EVLOOP_ONCE
416*6777b538SAndroid Build Coastguard Workerand
417*6777b538SAndroid Build Coastguard Worker.Va EVLOOP_NONBLOCK
418*6777b538SAndroid Build Coastguard Workerare recognized.
419*6777b538SAndroid Build Coastguard WorkerThe
420*6777b538SAndroid Build Coastguard Worker.Nm event_loopexit
421*6777b538SAndroid Build Coastguard Workerfunction exits from the event loop. The next
422*6777b538SAndroid Build Coastguard Worker.Fn event_loop
423*6777b538SAndroid Build Coastguard Workeriteration after the
424*6777b538SAndroid Build Coastguard Workergiven timer expires will complete normally (handling all queued events) then
425*6777b538SAndroid Build Coastguard Workerexit without blocking for events again. Subsequent invocations of
426*6777b538SAndroid Build Coastguard Worker.Fn event_loop
427*6777b538SAndroid Build Coastguard Workerwill proceed normally.
428*6777b538SAndroid Build Coastguard WorkerThe
429*6777b538SAndroid Build Coastguard Worker.Nm event_loopbreak
430*6777b538SAndroid Build Coastguard Workerfunction exits from the event loop immediately.
431*6777b538SAndroid Build Coastguard Worker.Fn event_loop
432*6777b538SAndroid Build Coastguard Workerwill abort after the next event is completed;
433*6777b538SAndroid Build Coastguard Worker.Fn event_loopbreak
434*6777b538SAndroid Build Coastguard Workeris typically invoked from this event's callback. This behavior is analogous
435*6777b538SAndroid Build Coastguard Workerto the "break;" statement. Subsequent invocations of
436*6777b538SAndroid Build Coastguard Worker.Fn event_loop
437*6777b538SAndroid Build Coastguard Workerwill proceed normally.
438*6777b538SAndroid Build Coastguard Worker.Pp
439*6777b538SAndroid Build Coastguard WorkerIt is the responsibility of the caller to provide these functions with
440*6777b538SAndroid Build Coastguard Workerpre-allocated event structures.
441*6777b538SAndroid Build Coastguard Worker.Pp
442*6777b538SAndroid Build Coastguard Worker.Sh EVENT PRIORITIES
443*6777b538SAndroid Build Coastguard WorkerBy default
444*6777b538SAndroid Build Coastguard Worker.Nm libevent
445*6777b538SAndroid Build Coastguard Workerschedules all active events with the same priority.
446*6777b538SAndroid Build Coastguard WorkerHowever, sometimes it is desirable to process some events with a higher
447*6777b538SAndroid Build Coastguard Workerpriority than others.
448*6777b538SAndroid Build Coastguard WorkerFor that reason,
449*6777b538SAndroid Build Coastguard Worker.Nm libevent
450*6777b538SAndroid Build Coastguard Workersupports strict priority queues.
451*6777b538SAndroid Build Coastguard WorkerActive events with a lower priority are always processed before events
452*6777b538SAndroid Build Coastguard Workerwith a higher priority.
453*6777b538SAndroid Build Coastguard Worker.Pp
454*6777b538SAndroid Build Coastguard WorkerThe number of different priorities can be set initially with the
455*6777b538SAndroid Build Coastguard Worker.Fn event_priority_init
456*6777b538SAndroid Build Coastguard Workerfunction.
457*6777b538SAndroid Build Coastguard WorkerThis function should be called before the first call to
458*6777b538SAndroid Build Coastguard Worker.Fn event_dispatch .
459*6777b538SAndroid Build Coastguard WorkerThe
460*6777b538SAndroid Build Coastguard Worker.Fn event_priority_set
461*6777b538SAndroid Build Coastguard Workerfunction can be used to assign a priority to an event.
462*6777b538SAndroid Build Coastguard WorkerBy default,
463*6777b538SAndroid Build Coastguard Worker.Nm libevent
464*6777b538SAndroid Build Coastguard Workerassigns the middle priority to all events unless their priority
465*6777b538SAndroid Build Coastguard Workeris explicitly set.
466*6777b538SAndroid Build Coastguard Worker.Sh THREAD SAFE EVENTS
467*6777b538SAndroid Build Coastguard Worker.Nm Libevent
468*6777b538SAndroid Build Coastguard Workerhas experimental support for thread-safe events.
469*6777b538SAndroid Build Coastguard WorkerWhen initializing the library via
470*6777b538SAndroid Build Coastguard Worker.Fn event_init ,
471*6777b538SAndroid Build Coastguard Workeran event base is returned.
472*6777b538SAndroid Build Coastguard WorkerThis event base can be used in conjunction with calls to
473*6777b538SAndroid Build Coastguard Worker.Fn event_base_set ,
474*6777b538SAndroid Build Coastguard Worker.Fn event_base_dispatch ,
475*6777b538SAndroid Build Coastguard Worker.Fn event_base_loop ,
476*6777b538SAndroid Build Coastguard Worker.Fn event_base_loopexit ,
477*6777b538SAndroid Build Coastguard Worker.Fn bufferevent_base_set
478*6777b538SAndroid Build Coastguard Workerand
479*6777b538SAndroid Build Coastguard Worker.Fn event_base_free .
480*6777b538SAndroid Build Coastguard Worker.Fn event_base_set
481*6777b538SAndroid Build Coastguard Workershould be called after preparing an event with
482*6777b538SAndroid Build Coastguard Worker.Fn event_set ,
483*6777b538SAndroid Build Coastguard Workeras
484*6777b538SAndroid Build Coastguard Worker.Fn event_set
485*6777b538SAndroid Build Coastguard Workerassigns the provided event to the most recently created event base.
486*6777b538SAndroid Build Coastguard Worker.Fn bufferevent_base_set
487*6777b538SAndroid Build Coastguard Workershould be called after preparing a bufferevent with
488*6777b538SAndroid Build Coastguard Worker.Fn bufferevent_new .
489*6777b538SAndroid Build Coastguard Worker.Fn event_base_free
490*6777b538SAndroid Build Coastguard Workershould be used to free memory associated with the event base
491*6777b538SAndroid Build Coastguard Workerwhen it is no longer needed.
492*6777b538SAndroid Build Coastguard Worker.Sh BUFFERED EVENTS
493*6777b538SAndroid Build Coastguard Worker.Nm libevent
494*6777b538SAndroid Build Coastguard Workerprovides an abstraction on top of the regular event callbacks.
495*6777b538SAndroid Build Coastguard WorkerThis abstraction is called a
496*6777b538SAndroid Build Coastguard Worker.Va "buffered event" .
497*6777b538SAndroid Build Coastguard WorkerA buffered event provides input and output buffers that get filled
498*6777b538SAndroid Build Coastguard Workerand drained automatically.
499*6777b538SAndroid Build Coastguard WorkerThe user of a buffered event no longer deals directly with the IO,
500*6777b538SAndroid Build Coastguard Workerbut instead is reading from input and writing to output buffers.
501*6777b538SAndroid Build Coastguard Worker.Pp
502*6777b538SAndroid Build Coastguard WorkerA new bufferevent is created by
503*6777b538SAndroid Build Coastguard Worker.Fn bufferevent_new .
504*6777b538SAndroid Build Coastguard WorkerThe parameter
505*6777b538SAndroid Build Coastguard Worker.Fa fd
506*6777b538SAndroid Build Coastguard Workerspecifies the file descriptor from which data is read and written to.
507*6777b538SAndroid Build Coastguard WorkerThis file descriptor is not allowed to be a
508*6777b538SAndroid Build Coastguard Worker.Xr pipe 2 .
509*6777b538SAndroid Build Coastguard WorkerThe next three parameters are callbacks.
510*6777b538SAndroid Build Coastguard WorkerThe read and write callback have the following form:
511*6777b538SAndroid Build Coastguard Worker.Ft void
512*6777b538SAndroid Build Coastguard Worker.Fn "(*cb)" "struct bufferevent *bufev" "void *arg" .
513*6777b538SAndroid Build Coastguard WorkerThe error callback has the following form:
514*6777b538SAndroid Build Coastguard Worker.Ft void
515*6777b538SAndroid Build Coastguard Worker.Fn "(*cb)" "struct bufferevent *bufev" "short what" "void *arg" .
516*6777b538SAndroid Build Coastguard WorkerThe argument is specified by the fourth parameter
517*6777b538SAndroid Build Coastguard Worker.Fa "cbarg" .
518*6777b538SAndroid Build Coastguard WorkerA
519*6777b538SAndroid Build Coastguard Worker.Fa bufferevent struct
520*6777b538SAndroid Build Coastguard Workerpointer is returned on success, NULL on error.
521*6777b538SAndroid Build Coastguard WorkerBoth the read and the write callback may be NULL.
522*6777b538SAndroid Build Coastguard WorkerThe error callback has to be always provided.
523*6777b538SAndroid Build Coastguard Worker.Pp
524*6777b538SAndroid Build Coastguard WorkerOnce initialized, the bufferevent structure can be used repeatedly with
525*6777b538SAndroid Build Coastguard Workerbufferevent_enable() and bufferevent_disable().
526*6777b538SAndroid Build Coastguard WorkerThe flags parameter can be a combination of
527*6777b538SAndroid Build Coastguard Worker.Va EV_READ
528*6777b538SAndroid Build Coastguard Workerand
529*6777b538SAndroid Build Coastguard Worker.Va EV_WRITE .
530*6777b538SAndroid Build Coastguard WorkerWhen read enabled the bufferevent will try to read from the file
531*6777b538SAndroid Build Coastguard Workerdescriptor and call the read callback.
532*6777b538SAndroid Build Coastguard WorkerThe write callback is executed
533*6777b538SAndroid Build Coastguard Workerwhenever the output buffer is drained below the write low watermark,
534*6777b538SAndroid Build Coastguard Workerwhich is
535*6777b538SAndroid Build Coastguard Worker.Va 0
536*6777b538SAndroid Build Coastguard Workerby default.
537*6777b538SAndroid Build Coastguard Worker.Pp
538*6777b538SAndroid Build Coastguard WorkerThe
539*6777b538SAndroid Build Coastguard Worker.Fn bufferevent_write
540*6777b538SAndroid Build Coastguard Workerfunction can be used to write data to the file descriptor.
541*6777b538SAndroid Build Coastguard WorkerThe data is appended to the output buffer and written to the descriptor
542*6777b538SAndroid Build Coastguard Workerautomatically as it becomes available for writing.
543*6777b538SAndroid Build Coastguard Worker.Fn bufferevent_write
544*6777b538SAndroid Build Coastguard Workerreturns 0 on success or \-1 on failure.
545*6777b538SAndroid Build Coastguard WorkerThe
546*6777b538SAndroid Build Coastguard Worker.Fn bufferevent_read
547*6777b538SAndroid Build Coastguard Workerfunction is used to read data from the input buffer,
548*6777b538SAndroid Build Coastguard Workerreturning the amount of data read.
549*6777b538SAndroid Build Coastguard Worker.Pp
550*6777b538SAndroid Build Coastguard WorkerIf multiple bases are in use, bufferevent_base_set() must be called before
551*6777b538SAndroid Build Coastguard Workerenabling the bufferevent for the first time.
552*6777b538SAndroid Build Coastguard Worker.Sh NON-BLOCKING HTTP SUPPORT
553*6777b538SAndroid Build Coastguard Worker.Nm libevent
554*6777b538SAndroid Build Coastguard Workerprovides a very thin HTTP layer that can be used both to host an HTTP
555*6777b538SAndroid Build Coastguard Workerserver and also to make HTTP requests.
556*6777b538SAndroid Build Coastguard WorkerAn HTTP server can be created by calling
557*6777b538SAndroid Build Coastguard Worker.Fn evhttp_new .
558*6777b538SAndroid Build Coastguard WorkerIt can be bound to any port and address with the
559*6777b538SAndroid Build Coastguard Worker.Fn evhttp_bind_socket
560*6777b538SAndroid Build Coastguard Workerfunction.
561*6777b538SAndroid Build Coastguard WorkerWhen the HTTP server is no longer used, it can be freed via
562*6777b538SAndroid Build Coastguard Worker.Fn evhttp_free .
563*6777b538SAndroid Build Coastguard Worker.Pp
564*6777b538SAndroid Build Coastguard WorkerTo be notified of HTTP requests, a user needs to register callbacks with the
565*6777b538SAndroid Build Coastguard WorkerHTTP server.
566*6777b538SAndroid Build Coastguard WorkerThis can be done by calling
567*6777b538SAndroid Build Coastguard Worker.Fn evhttp_set_cb .
568*6777b538SAndroid Build Coastguard WorkerThe second argument is the URI for which a callback is being registered.
569*6777b538SAndroid Build Coastguard WorkerThe corresponding callback will receive an
570*6777b538SAndroid Build Coastguard Worker.Va struct evhttp_request
571*6777b538SAndroid Build Coastguard Workerobject that contains all information about the request.
572*6777b538SAndroid Build Coastguard Worker.Pp
573*6777b538SAndroid Build Coastguard WorkerThis section does not document all the possible function calls; please
574*6777b538SAndroid Build Coastguard Workercheck
575*6777b538SAndroid Build Coastguard Worker.Va event.h
576*6777b538SAndroid Build Coastguard Workerfor the public interfaces.
577*6777b538SAndroid Build Coastguard Worker.Sh ADDITIONAL NOTES
578*6777b538SAndroid Build Coastguard WorkerIt is possible to disable support for
579*6777b538SAndroid Build Coastguard Worker.Va epoll , kqueue , devpoll , poll
580*6777b538SAndroid Build Coastguard Workeror
581*6777b538SAndroid Build Coastguard Worker.Va select
582*6777b538SAndroid Build Coastguard Workerby setting the environment variable
583*6777b538SAndroid Build Coastguard Worker.Va EVENT_NOEPOLL , EVENT_NOKQUEUE , EVENT_NODEVPOLL , EVENT_NOPOLL
584*6777b538SAndroid Build Coastguard Workeror
585*6777b538SAndroid Build Coastguard Worker.Va EVENT_NOSELECT ,
586*6777b538SAndroid Build Coastguard Workerrespectively.
587*6777b538SAndroid Build Coastguard WorkerBy setting the environment variable
588*6777b538SAndroid Build Coastguard Worker.Va EVENT_SHOW_METHOD ,
589*6777b538SAndroid Build Coastguard Worker.Nm libevent
590*6777b538SAndroid Build Coastguard Workerdisplays the kernel notification method that it uses.
591*6777b538SAndroid Build Coastguard Worker.Sh RETURN VALUES
592*6777b538SAndroid Build Coastguard WorkerUpon successful completion
593*6777b538SAndroid Build Coastguard Worker.Fn event_add
594*6777b538SAndroid Build Coastguard Workerand
595*6777b538SAndroid Build Coastguard Worker.Fn event_del
596*6777b538SAndroid Build Coastguard Workerreturn 0.
597*6777b538SAndroid Build Coastguard WorkerOtherwise, \-1 is returned and the global variable errno is
598*6777b538SAndroid Build Coastguard Workerset to indicate the error.
599*6777b538SAndroid Build Coastguard Worker.Sh SEE ALSO
600*6777b538SAndroid Build Coastguard Worker.Xr kqueue 2 ,
601*6777b538SAndroid Build Coastguard Worker.Xr poll 2 ,
602*6777b538SAndroid Build Coastguard Worker.Xr select 2 ,
603*6777b538SAndroid Build Coastguard Worker.Xr evdns 3 ,
604*6777b538SAndroid Build Coastguard Worker.Xr timeout 9
605*6777b538SAndroid Build Coastguard Worker.Sh HISTORY
606*6777b538SAndroid Build Coastguard WorkerThe
607*6777b538SAndroid Build Coastguard Worker.Nm event
608*6777b538SAndroid Build Coastguard WorkerAPI manpage is based on the
609*6777b538SAndroid Build Coastguard Worker.Xr timeout 9
610*6777b538SAndroid Build Coastguard Workermanpage by Artur Grabowski.
611*6777b538SAndroid Build Coastguard WorkerThe port of
612*6777b538SAndroid Build Coastguard Worker.Nm libevent
613*6777b538SAndroid Build Coastguard Workerto Windows is due to Michael A. Davis.
614*6777b538SAndroid Build Coastguard WorkerSupport for real-time signals is due to Taral.
615*6777b538SAndroid Build Coastguard Worker.Sh AUTHORS
616*6777b538SAndroid Build Coastguard WorkerThe
617*6777b538SAndroid Build Coastguard Worker.Nm event
618*6777b538SAndroid Build Coastguard Workerlibrary was written by Niels Provos.
619*6777b538SAndroid Build Coastguard Worker.Sh BUGS
620*6777b538SAndroid Build Coastguard WorkerThis documentation is neither complete nor authoritative.
621*6777b538SAndroid Build Coastguard WorkerIf you are in doubt about the usage of this API then
622*6777b538SAndroid Build Coastguard Workercheck the source code to find out how it works, write
623*6777b538SAndroid Build Coastguard Workerup the missing piece of documentation and send it to
624*6777b538SAndroid Build Coastguard Workerme for inclusion in this man page.
625