ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.3
Revision: 1.60
Committed: Mon Jan 28 12:23:02 2008 UTC (16 years, 3 months ago) by root
Branch: MAIN
CVS Tags: rel-3_0
Changes since 1.59: +365 -335 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.60 .\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
2 root 1.1 .\"
3     .\" Standard preamble:
4     .\" ========================================================================
5     .de Sh \" Subsection heading
6     .br
7     .if t .Sp
8     .ne 5
9     .PP
10     \fB\\$1\fR
11     .PP
12     ..
13     .de Sp \" Vertical space (when we can't use .PP)
14     .if t .sp .5v
15     .if n .sp
16     ..
17     .de Vb \" Begin verbatim text
18     .ft CW
19     .nf
20     .ne \\$1
21     ..
22     .de Ve \" End verbatim text
23     .ft R
24     .fi
25     ..
26     .\" Set up some character translations and predefined strings. \*(-- will
27     .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28 root 1.60 .\" double quote, and \*(R" will give a right double quote. \*(C+ will
29     .\" give a nicer C++. Capital omega is used to do unbreakable dashes and
30     .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
31     .\" nothing in troff, for use with C<>.
32     .tr \(*W-
33 root 1.1 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34     .ie n \{\
35     . ds -- \(*W-
36     . ds PI pi
37     . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38     . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39     . ds L" ""
40     . ds R" ""
41     . ds C` ""
42     . ds C' ""
43     'br\}
44     .el\{\
45     . ds -- \|\(em\|
46     . ds PI \(*p
47     . ds L" ``
48     . ds R" ''
49     'br\}
50     .\"
51 root 1.60 .\" Escape single quotes in literal strings from groff's Unicode transform.
52     .ie \n(.g .ds Aq \(aq
53     .el .ds Aq '
54     .\"
55 root 1.1 .\" If the F register is turned on, we'll generate index entries on stderr for
56     .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
57     .\" entries marked with X<> in POD. Of course, you'll have to process the
58     .\" output yourself in some meaningful fashion.
59 root 1.60 .ie \nF \{\
60 root 1.1 . de IX
61     . tm Index:\\$1\t\\n%\t"\\$2"
62     ..
63     . nr % 0
64     . rr F
65     .\}
66 root 1.60 .el \{\
67     . de IX
68     ..
69     .\}
70 root 1.1 .\"
71     .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
72     .\" Fear. Run. Save yourself. No user-serviceable parts.
73     . \" fudge factors for nroff and troff
74     .if n \{\
75     . ds #H 0
76     . ds #V .8m
77     . ds #F .3m
78     . ds #[ \f1
79     . ds #] \fP
80     .\}
81     .if t \{\
82     . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
83     . ds #V .6m
84     . ds #F 0
85     . ds #[ \&
86     . ds #] \&
87     .\}
88     . \" simple accents for nroff and troff
89     .if n \{\
90     . ds ' \&
91     . ds ` \&
92     . ds ^ \&
93     . ds , \&
94     . ds ~ ~
95     . ds /
96     .\}
97     .if t \{\
98     . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
99     . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
100     . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
101     . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
102     . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
103     . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
104     .\}
105     . \" troff and (daisy-wheel) nroff accents
106     .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
107     .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
108     .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
109     .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
110     .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
111     .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
112     .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
113     .ds ae a\h'-(\w'a'u*4/10)'e
114     .ds Ae A\h'-(\w'A'u*4/10)'E
115     . \" corrections for vroff
116     .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
117     .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
118     . \" for low resolution devices (crt and lpr)
119     .if \n(.H>23 .if \n(.V>19 \
120     \{\
121     . ds : e
122     . ds 8 ss
123     . ds o a
124     . ds d- d\h'-1'\(ga
125     . ds D- D\h'-1'\(hy
126     . ds th \o'bp'
127     . ds Th \o'LP'
128     . ds ae ae
129     . ds Ae AE
130     .\}
131     .rm #[ #] #H #V #F C
132     .\" ========================================================================
133     .\"
134 root 1.52 .IX Title "EV 1"
135 root 1.60 .TH EV 1 "2008-01-28" "perl v5.10.0" "User Contributed Perl Documentation"
136     .\" For nroff, turn off justification. Always turn off hyphenation; it makes
137     .\" way too many mistakes in technical documents.
138     .if n .ad l
139     .nh
140 root 1.1 .SH "NAME"
141     libev \- a high performance full\-featured event loop written in C
142     .SH "SYNOPSIS"
143     .IX Header "SYNOPSIS"
144 root 1.28 .Vb 1
145     \& #include <ev.h>
146     .Ve
147 root 1.59 .Sh "\s-1EXAMPLE\s0 \s-1PROGRAM\s0"
148     .IX Subsection "EXAMPLE PROGRAM"
149 root 1.28 .Vb 1
150 root 1.1 \& #include <ev.h>
151 root 1.60 \&
152 root 1.27 \& ev_io stdin_watcher;
153     \& ev_timer timeout_watcher;
154 root 1.60 \&
155 root 1.27 \& /* called when data readable on stdin */
156     \& static void
157     \& stdin_cb (EV_P_ struct ev_io *w, int revents)
158     \& {
159     \& /* puts ("stdin ready"); */
160     \& ev_io_stop (EV_A_ w); /* just a syntax example */
161     \& ev_unloop (EV_A_ EVUNLOOP_ALL); /* leave all loop calls */
162     \& }
163 root 1.60 \&
164 root 1.27 \& static void
165     \& timeout_cb (EV_P_ struct ev_timer *w, int revents)
166     \& {
167     \& /* puts ("timeout"); */
168     \& ev_unloop (EV_A_ EVUNLOOP_ONE); /* leave one loop call */
169     \& }
170 root 1.60 \&
171 root 1.27 \& int
172     \& main (void)
173     \& {
174     \& struct ev_loop *loop = ev_default_loop (0);
175 root 1.60 \&
176 root 1.27 \& /* initialise an io watcher, then start it */
177     \& ev_io_init (&stdin_watcher, stdin_cb, /*STDIN_FILENO*/ 0, EV_READ);
178     \& ev_io_start (loop, &stdin_watcher);
179 root 1.60 \&
180     \& /* simple non\-repeating 5.5 second timeout */
181 root 1.27 \& ev_timer_init (&timeout_watcher, timeout_cb, 5.5, 0.);
182     \& ev_timer_start (loop, &timeout_watcher);
183 root 1.60 \&
184 root 1.27 \& /* loop till timeout or data ready */
185     \& ev_loop (loop, 0);
186 root 1.60 \&
187 root 1.27 \& return 0;
188     \& }
189     .Ve
190 root 1.1 .SH "DESCRIPTION"
191     .IX Header "DESCRIPTION"
192 root 1.39 The newest version of this document is also available as a html-formatted
193     web page you might find easier to navigate when reading it for the first
194     time: <http://cvs.schmorp.de/libev/ev.html>.
195     .PP
196 root 1.1 Libev is an event loop: you register interest in certain events (such as a
197 root 1.54 file descriptor being readable or a timeout occurring), and it will manage
198 root 1.1 these event sources and provide your program with events.
199     .PP
200     To do this, it must take more or less complete control over your process
201     (or thread) by executing the \fIevent loop\fR handler, and will then
202     communicate events via a callback mechanism.
203     .PP
204     You register interest in certain events by registering so-called \fIevent
205     watchers\fR, which are relatively small C structures you initialise with the
206     details of the event, and then hand it over to libev by \fIstarting\fR the
207     watcher.
208 root 1.59 .Sh "\s-1FEATURES\s0"
209     .IX Subsection "FEATURES"
210 root 1.31 Libev supports \f(CW\*(C`select\*(C'\fR, \f(CW\*(C`poll\*(C'\fR, the Linux-specific \f(CW\*(C`epoll\*(C'\fR, the
211     BSD-specific \f(CW\*(C`kqueue\*(C'\fR and the Solaris-specific event port mechanisms
212     for file descriptor events (\f(CW\*(C`ev_io\*(C'\fR), the Linux \f(CW\*(C`inotify\*(C'\fR interface
213     (for \f(CW\*(C`ev_stat\*(C'\fR), relative timers (\f(CW\*(C`ev_timer\*(C'\fR), absolute timers
214     with customised rescheduling (\f(CW\*(C`ev_periodic\*(C'\fR), synchronous signals
215     (\f(CW\*(C`ev_signal\*(C'\fR), process status change events (\f(CW\*(C`ev_child\*(C'\fR), and event
216     watchers dealing with the event loop mechanism itself (\f(CW\*(C`ev_idle\*(C'\fR,
217 root 1.28 \&\f(CW\*(C`ev_embed\*(C'\fR, \f(CW\*(C`ev_prepare\*(C'\fR and \f(CW\*(C`ev_check\*(C'\fR watchers) as well as
218     file watchers (\f(CW\*(C`ev_stat\*(C'\fR) and even limited support for fork events
219     (\f(CW\*(C`ev_fork\*(C'\fR).
220     .PP
221     It also is quite fast (see this
222     benchmark comparing it to libevent
223     for example).
224 root 1.59 .Sh "\s-1CONVENTIONS\s0"
225     .IX Subsection "CONVENTIONS"
226 root 1.28 Libev is very configurable. In this manual the default configuration will
227     be described, which supports multiple event loops. For more info about
228     various configuration options please have a look at \fB\s-1EMBED\s0\fR section in
229     this manual. If libev was configured without support for multiple event
230     loops, then all functions taking an initial argument of name \f(CW\*(C`loop\*(C'\fR
231     (which is always of type \f(CW\*(C`struct ev_loop *\*(C'\fR) will not have this argument.
232 root 1.59 .Sh "\s-1TIME\s0 \s-1REPRESENTATION\s0"
233     .IX Subsection "TIME REPRESENTATION"
234 root 1.1 Libev represents time as a single floating point number, representing the
235     (fractional) number of seconds since the (\s-1POSIX\s0) epoch (somewhere near
236     the beginning of 1970, details are complicated, don't ask). This type is
237     called \f(CW\*(C`ev_tstamp\*(C'\fR, which is what you should use too. It usually aliases
238 root 1.9 to the \f(CW\*(C`double\*(C'\fR type in C, and when you need to do any calculations on
239 root 1.52 it, you should treat it as some floatingpoint value. Unlike the name
240     component \f(CW\*(C`stamp\*(C'\fR might indicate, it is also used for time differences
241     throughout libev.
242 root 1.1 .SH "GLOBAL FUNCTIONS"
243     .IX Header "GLOBAL FUNCTIONS"
244     These functions can be called anytime, even before initialising the
245     library in any way.
246     .IP "ev_tstamp ev_time ()" 4
247     .IX Item "ev_tstamp ev_time ()"
248 root 1.2 Returns the current time as libev would use it. Please note that the
249     \&\f(CW\*(C`ev_now\*(C'\fR function is usually faster and also often returns the timestamp
250     you actually want to know.
251 root 1.57 .IP "ev_sleep (ev_tstamp interval)" 4
252     .IX Item "ev_sleep (ev_tstamp interval)"
253 root 1.56 Sleep for the given interval: The current thread will be blocked until
254     either it is interrupted or the given time interval has passed. Basically
255     this is a subsecond-resolution \f(CW\*(C`sleep ()\*(C'\fR.
256 root 1.1 .IP "int ev_version_major ()" 4
257     .IX Item "int ev_version_major ()"
258     .PD 0
259     .IP "int ev_version_minor ()" 4
260     .IX Item "int ev_version_minor ()"
261     .PD
262 root 1.48 You can find out the major and minor \s-1ABI\s0 version numbers of the library
263 root 1.1 you linked against by calling the functions \f(CW\*(C`ev_version_major\*(C'\fR and
264     \&\f(CW\*(C`ev_version_minor\*(C'\fR. If you want, you can compare against the global
265     symbols \f(CW\*(C`EV_VERSION_MAJOR\*(C'\fR and \f(CW\*(C`EV_VERSION_MINOR\*(C'\fR, which specify the
266     version of the library your program was compiled against.
267     .Sp
268 root 1.48 These version numbers refer to the \s-1ABI\s0 version of the library, not the
269     release version.
270 root 1.47 .Sp
271 root 1.1 Usually, it's a good idea to terminate if the major versions mismatch,
272 root 1.47 as this indicates an incompatible change. Minor versions are usually
273 root 1.1 compatible to older versions, so a larger minor version alone is usually
274     not a problem.
275 root 1.9 .Sp
276 root 1.28 Example: Make sure we haven't accidentally been linked against the wrong
277     version.
278 root 1.9 .Sp
279     .Vb 3
280     \& assert (("libev version mismatch",
281     \& ev_version_major () == EV_VERSION_MAJOR
282     \& && ev_version_minor () >= EV_VERSION_MINOR));
283     .Ve
284 root 1.6 .IP "unsigned int ev_supported_backends ()" 4
285     .IX Item "unsigned int ev_supported_backends ()"
286     Return the set of all backends (i.e. their corresponding \f(CW\*(C`EV_BACKEND_*\*(C'\fR
287     value) compiled into this binary of libev (independent of their
288     availability on the system you are running on). See \f(CW\*(C`ev_default_loop\*(C'\fR for
289     a description of the set values.
290 root 1.9 .Sp
291     Example: make sure we have the epoll method, because yeah this is cool and
292     a must have and can we have a torrent of it please!!!11
293     .Sp
294     .Vb 2
295     \& assert (("sorry, no epoll, no sex",
296     \& ev_supported_backends () & EVBACKEND_EPOLL));
297     .Ve
298 root 1.6 .IP "unsigned int ev_recommended_backends ()" 4
299     .IX Item "unsigned int ev_recommended_backends ()"
300     Return the set of all backends compiled into this binary of libev and also
301     recommended for this platform. This set is often smaller than the one
302     returned by \f(CW\*(C`ev_supported_backends\*(C'\fR, as for example kqueue is broken on
303     most BSDs and will not be autodetected unless you explicitly request it
304     (assuming you know what you are doing). This is the set of backends that
305 root 1.8 libev will probe for if you specify no backends explicitly.
306 root 1.10 .IP "unsigned int ev_embeddable_backends ()" 4
307     .IX Item "unsigned int ev_embeddable_backends ()"
308     Returns the set of backends that are embeddable in other event loops. This
309 root 1.60 is the theoretical, all-platform, value. To find which backends
310 root 1.10 might be supported on the current system, you would need to look at
311     \&\f(CW\*(C`ev_embeddable_backends () & ev_supported_backends ()\*(C'\fR, likewise for
312     recommended ones.
313     .Sp
314     See the description of \f(CW\*(C`ev_embed\*(C'\fR watchers for more info.
315 root 1.32 .IP "ev_set_allocator (void *(*cb)(void *ptr, long size))" 4
316     .IX Item "ev_set_allocator (void *(*cb)(void *ptr, long size))"
317     Sets the allocation function to use (the prototype is similar \- the
318     semantics is identical \- to the realloc C function). It is used to
319     allocate and free memory (no surprises here). If it returns zero when
320     memory needs to be allocated, the library might abort or take some
321     potentially destructive action. The default is your system realloc
322     function.
323 root 1.1 .Sp
324     You could override this function in high-availability programs to, say,
325     free some memory if it cannot allocate memory, to use a special allocator,
326     or even to sleep a while and retry until some memory is available.
327 root 1.9 .Sp
328 root 1.28 Example: Replace the libev allocator with one that waits a bit and then
329     retries).
330 root 1.9 .Sp
331     .Vb 6
332     \& static void *
333 root 1.26 \& persistent_realloc (void *ptr, size_t size)
334 root 1.9 \& {
335     \& for (;;)
336     \& {
337     \& void *newptr = realloc (ptr, size);
338 root 1.60 \&
339 root 1.9 \& if (newptr)
340     \& return newptr;
341 root 1.60 \&
342 root 1.9 \& sleep (60);
343     \& }
344     \& }
345 root 1.60 \&
346 root 1.9 \& ...
347     \& ev_set_allocator (persistent_realloc);
348     .Ve
349 root 1.1 .IP "ev_set_syserr_cb (void (*cb)(const char *msg));" 4
350     .IX Item "ev_set_syserr_cb (void (*cb)(const char *msg));"
351     Set the callback function to call on a retryable syscall error (such
352     as failed select, poll, epoll_wait). The message is a printable string
353     indicating the system call or subsystem causing the problem. If this
354     callback is set, then libev will expect it to remedy the sitution, no
355     matter what, when it returns. That is, libev will generally retry the
356     requested operation, or, if the condition doesn't go away, do bad stuff
357     (such as abort).
358 root 1.9 .Sp
359 root 1.28 Example: This is basically the same thing that libev does internally, too.
360 root 1.9 .Sp
361     .Vb 6
362     \& static void
363     \& fatal_error (const char *msg)
364     \& {
365     \& perror (msg);
366     \& abort ();
367     \& }
368 root 1.60 \&
369 root 1.9 \& ...
370     \& ev_set_syserr_cb (fatal_error);
371     .Ve
372 root 1.1 .SH "FUNCTIONS CONTROLLING THE EVENT LOOP"
373     .IX Header "FUNCTIONS CONTROLLING THE EVENT LOOP"
374     An event loop is described by a \f(CW\*(C`struct ev_loop *\*(C'\fR. The library knows two
375     types of such loops, the \fIdefault\fR loop, which supports signals and child
376     events, and dynamically created loops which do not.
377     .PP
378     If you use threads, a common model is to run the default event loop
379     in your main thread (or in a separate thread) and for each thread you
380     create, you also create another event loop. Libev itself does no locking
381     whatsoever, so if you mix calls to the same event loop in different
382     threads, make sure you lock (this is usually a bad idea, though, even if
383     done correctly, because it's hideous and inefficient).
384     .IP "struct ev_loop *ev_default_loop (unsigned int flags)" 4
385     .IX Item "struct ev_loop *ev_default_loop (unsigned int flags)"
386     This will initialise the default event loop if it hasn't been initialised
387     yet and return it. If the default loop could not be initialised, returns
388     false. If it already was initialised it simply returns it (and ignores the
389 root 1.6 flags. If that is troubling you, check \f(CW\*(C`ev_backend ()\*(C'\fR afterwards).
390 root 1.1 .Sp
391     If you don't know what event loop to use, use the one returned from this
392     function.
393     .Sp
394 root 1.60 The default loop is the only loop that can handle \f(CW\*(C`ev_signal\*(C'\fR and
395     \&\f(CW\*(C`ev_child\*(C'\fR watchers, and to do this, it always registers a handler
396     for \f(CW\*(C`SIGCHLD\*(C'\fR. If this is a problem for your app you can either
397     create a dynamic loop with \f(CW\*(C`ev_loop_new\*(C'\fR that doesn't do that, or you
398     can simply overwrite the \f(CW\*(C`SIGCHLD\*(C'\fR signal handler \fIafter\fR calling
399     \&\f(CW\*(C`ev_default_init\*(C'\fR.
400     .Sp
401 root 1.1 The flags argument can be used to specify special behaviour or specific
402 root 1.8 backends to use, and is usually specified as \f(CW0\fR (or \f(CW\*(C`EVFLAG_AUTO\*(C'\fR).
403 root 1.1 .Sp
404 root 1.8 The following flags are supported:
405 root 1.1 .RS 4
406     .ie n .IP """EVFLAG_AUTO""" 4
407     .el .IP "\f(CWEVFLAG_AUTO\fR" 4
408     .IX Item "EVFLAG_AUTO"
409     The default flags value. Use this if you have no clue (it's the right
410     thing, believe me).
411     .ie n .IP """EVFLAG_NOENV""" 4
412     .el .IP "\f(CWEVFLAG_NOENV\fR" 4
413     .IX Item "EVFLAG_NOENV"
414     If this flag bit is ored into the flag value (or the program runs setuid
415     or setgid) then libev will \fInot\fR look at the environment variable
416     \&\f(CW\*(C`LIBEV_FLAGS\*(C'\fR. Otherwise (the default), this environment variable will
417     override the flags completely if it is found in the environment. This is
418     useful to try out specific backends to test their performance, or to work
419     around bugs.
420 root 1.35 .ie n .IP """EVFLAG_FORKCHECK""" 4
421     .el .IP "\f(CWEVFLAG_FORKCHECK\fR" 4
422     .IX Item "EVFLAG_FORKCHECK"
423     Instead of calling \f(CW\*(C`ev_default_fork\*(C'\fR or \f(CW\*(C`ev_loop_fork\*(C'\fR manually after
424     a fork, you can also make libev check for a fork in each iteration by
425     enabling this flag.
426     .Sp
427     This works by calling \f(CW\*(C`getpid ()\*(C'\fR on every iteration of the loop,
428     and thus this might slow down your event loop if you do a lot of loop
429 root 1.37 iterations and little real work, but is usually not noticeable (on my
430 root 1.35 Linux system for example, \f(CW\*(C`getpid\*(C'\fR is actually a simple 5\-insn sequence
431     without a syscall and thus \fIvery\fR fast, but my Linux system also has
432     \&\f(CW\*(C`pthread_atfork\*(C'\fR which is even faster).
433     .Sp
434     The big advantage of this flag is that you can forget about fork (and
435     forget about forgetting to tell libev about forking) when you use this
436     flag.
437     .Sp
438     This flag setting cannot be overriden or specified in the \f(CW\*(C`LIBEV_FLAGS\*(C'\fR
439     environment variable.
440 root 1.6 .ie n .IP """EVBACKEND_SELECT"" (value 1, portable select backend)" 4
441     .el .IP "\f(CWEVBACKEND_SELECT\fR (value 1, portable select backend)" 4
442     .IX Item "EVBACKEND_SELECT (value 1, portable select backend)"
443 root 1.3 This is your standard \fIselect\fR\|(2) backend. Not \fIcompletely\fR standard, as
444     libev tries to roll its own fd_set with no limits on the number of fds,
445     but if that fails, expect a fairly low limit on the number of fds when
446 root 1.58 using this backend. It doesn't scale too well (O(highest_fd)), but its
447 root 1.60 usually the fastest backend for a low number of (low-numbered :) fds.
448 root 1.58 .Sp
449     To get good performance out of this backend you need a high amount of
450     parallelity (most of the file descriptors should be busy). If you are
451     writing a server, you should \f(CW\*(C`accept ()\*(C'\fR in a loop to accept as many
452     connections as possible during one iteration. You might also want to have
453     a look at \f(CW\*(C`ev_set_io_collect_interval ()\*(C'\fR to increase the amount of
454     readyness notifications you get per iteration.
455 root 1.6 .ie n .IP """EVBACKEND_POLL"" (value 2, poll backend, available everywhere except on windows)" 4
456     .el .IP "\f(CWEVBACKEND_POLL\fR (value 2, poll backend, available everywhere except on windows)" 4
457     .IX Item "EVBACKEND_POLL (value 2, poll backend, available everywhere except on windows)"
458 root 1.58 And this is your standard \fIpoll\fR\|(2) backend. It's more complicated
459     than select, but handles sparse fds better and has no artificial
460     limit on the number of fds you can use (except it will slow down
461     considerably with a lot of inactive fds). It scales similarly to select,
462     i.e. O(total_fds). See the entry for \f(CW\*(C`EVBACKEND_SELECT\*(C'\fR, above, for
463     performance tips.
464 root 1.6 .ie n .IP """EVBACKEND_EPOLL"" (value 4, Linux)" 4
465     .el .IP "\f(CWEVBACKEND_EPOLL\fR (value 4, Linux)" 4
466     .IX Item "EVBACKEND_EPOLL (value 4, Linux)"
467 root 1.3 For few fds, this backend is a bit little slower than poll and select,
468 root 1.54 but it scales phenomenally better. While poll and select usually scale
469     like O(total_fds) where n is the total number of fds (or the highest fd),
470     epoll scales either O(1) or O(active_fds). The epoll design has a number
471     of shortcomings, such as silently dropping events in some hard-to-detect
472 root 1.56 cases and rewiring a syscall per fd change, no fork support and bad
473 root 1.58 support for dup.
474 root 1.3 .Sp
475 root 1.54 While stopping, setting and starting an I/O watcher in the same iteration
476     will result in some caching, there is still a syscall per such incident
477 root 1.3 (because the fd could point to a different file description now), so its
478 root 1.54 best to avoid that. Also, \f(CW\*(C`dup ()\*(C'\fR'ed file descriptors might not work
479     very well if you register events for both fds.
480 root 1.7 .Sp
481     Please note that epoll sometimes generates spurious notifications, so you
482     need to use non-blocking I/O or other means to avoid blocking when no data
483     (or space) is available.
484 root 1.58 .Sp
485     Best performance from this backend is achieved by not unregistering all
486     watchers for a file descriptor until it has been closed, if possible, i.e.
487     keep at least one watcher active per fd at all times.
488     .Sp
489     While nominally embeddeble in other event loops, this feature is broken in
490     all kernel versions tested so far.
491 root 1.6 .ie n .IP """EVBACKEND_KQUEUE"" (value 8, most \s-1BSD\s0 clones)" 4
492     .el .IP "\f(CWEVBACKEND_KQUEUE\fR (value 8, most \s-1BSD\s0 clones)" 4
493     .IX Item "EVBACKEND_KQUEUE (value 8, most BSD clones)"
494 root 1.3 Kqueue deserves special mention, as at the time of this writing, it
495 root 1.57 was broken on all BSDs except NetBSD (usually it doesn't work reliably
496     with anything but sockets and pipes, except on Darwin, where of course
497     it's completely useless). For this reason it's not being \*(L"autodetected\*(R"
498 root 1.8 unless you explicitly specify it explicitly in the flags (i.e. using
499 root 1.54 \&\f(CW\*(C`EVBACKEND_KQUEUE\*(C'\fR) or libev was compiled on a known-to-be-good (\-enough)
500     system like NetBSD.
501 root 1.3 .Sp
502 root 1.57 You still can embed kqueue into a normal poll or select backend and use it
503     only for sockets (after having made sure that sockets work with kqueue on
504     the target platform). See \f(CW\*(C`ev_embed\*(C'\fR watchers for more info.
505     .Sp
506 root 1.3 It scales in the same way as the epoll backend, but the interface to the
507 root 1.57 kernel is more efficient (which says nothing about its actual speed, of
508     course). While stopping, setting and starting an I/O watcher does never
509     cause an extra syscall as with \f(CW\*(C`EVBACKEND_EPOLL\*(C'\fR, it still adds up to
510     two event changes per incident, support for \f(CW\*(C`fork ()\*(C'\fR is very bad and it
511     drops fds silently in similarly hard-to-detect cases.
512 root 1.58 .Sp
513     This backend usually performs well under most conditions.
514     .Sp
515     While nominally embeddable in other event loops, this doesn't work
516     everywhere, so you might need to test for this. And since it is broken
517     almost everywhere, you should only use it when you have a lot of sockets
518     (for which it usually works), by embedding it into another event loop
519     (e.g. \f(CW\*(C`EVBACKEND_SELECT\*(C'\fR or \f(CW\*(C`EVBACKEND_POLL\*(C'\fR) and using it only for
520     sockets.
521 root 1.6 .ie n .IP """EVBACKEND_DEVPOLL"" (value 16, Solaris 8)" 4
522     .el .IP "\f(CWEVBACKEND_DEVPOLL\fR (value 16, Solaris 8)" 4
523     .IX Item "EVBACKEND_DEVPOLL (value 16, Solaris 8)"
524 root 1.58 This is not implemented yet (and might never be, unless you send me an
525     implementation). According to reports, \f(CW\*(C`/dev/poll\*(C'\fR only supports sockets
526     and is not embeddable, which would limit the usefulness of this backend
527     immensely.
528 root 1.6 .ie n .IP """EVBACKEND_PORT"" (value 32, Solaris 10)" 4
529     .el .IP "\f(CWEVBACKEND_PORT\fR (value 32, Solaris 10)" 4
530     .IX Item "EVBACKEND_PORT (value 32, Solaris 10)"
531 root 1.54 This uses the Solaris 10 event port mechanism. As with everything on Solaris,
532 root 1.3 it's really slow, but it still scales very well (O(active_fds)).
533 root 1.7 .Sp
534 root 1.54 Please note that solaris event ports can deliver a lot of spurious
535 root 1.7 notifications, so you need to use non-blocking I/O or other means to avoid
536     blocking when no data (or space) is available.
537 root 1.58 .Sp
538     While this backend scales well, it requires one system call per active
539     file descriptor per loop iteration. For small and medium numbers of file
540     descriptors a \*(L"slow\*(R" \f(CW\*(C`EVBACKEND_SELECT\*(C'\fR or \f(CW\*(C`EVBACKEND_POLL\*(C'\fR backend
541     might perform better.
542 root 1.60 .Sp
543     On the positive side, ignoring the spurious readyness notifications, this
544     backend actually performed to specification in all tests and is fully
545     embeddable, which is a rare feat among the OS-specific backends.
546 root 1.6 .ie n .IP """EVBACKEND_ALL""" 4
547     .el .IP "\f(CWEVBACKEND_ALL\fR" 4
548     .IX Item "EVBACKEND_ALL"
549 root 1.4 Try all backends (even potentially broken ones that wouldn't be tried
550     with \f(CW\*(C`EVFLAG_AUTO\*(C'\fR). Since this is a mask, you can do stuff such as
551 root 1.6 \&\f(CW\*(C`EVBACKEND_ALL & ~EVBACKEND_KQUEUE\*(C'\fR.
552 root 1.58 .Sp
553     It is definitely not recommended to use this flag.
554 root 1.1 .RE
555     .RS 4
556 root 1.3 .Sp
557     If one or more of these are ored into the flags value, then only these
558 root 1.60 backends will be tried (in the reverse order as listed here). If none are
559     specified, all backends in \f(CW\*(C`ev_recommended_backends ()\*(C'\fR will be tried.
560 root 1.8 .Sp
561     The most typical usage is like this:
562     .Sp
563     .Vb 2
564     \& if (!ev_default_loop (0))
565     \& fatal ("could not initialise libev, bad $LIBEV_FLAGS in environment?");
566     .Ve
567     .Sp
568     Restrict libev to the select and poll backends, and do not allow
569     environment settings to be taken into account:
570     .Sp
571     .Vb 1
572     \& ev_default_loop (EVBACKEND_POLL | EVBACKEND_SELECT | EVFLAG_NOENV);
573     .Ve
574     .Sp
575     Use whatever libev has to offer, but make sure that kqueue is used if
576     available (warning, breaks stuff, best use only with your own private
577     event loop and only if you know the \s-1OS\s0 supports your types of fds):
578     .Sp
579     .Vb 1
580     \& ev_default_loop (ev_recommended_backends () | EVBACKEND_KQUEUE);
581     .Ve
582 root 1.1 .RE
583     .IP "struct ev_loop *ev_loop_new (unsigned int flags)" 4
584     .IX Item "struct ev_loop *ev_loop_new (unsigned int flags)"
585     Similar to \f(CW\*(C`ev_default_loop\*(C'\fR, but always creates a new event loop that is
586     always distinct from the default loop. Unlike the default loop, it cannot
587     handle signal and child watchers, and attempts to do so will be greeted by
588     undefined behaviour (or a failed assertion if assertions are enabled).
589 root 1.9 .Sp
590 root 1.28 Example: Try to create a event loop that uses epoll and nothing else.
591 root 1.9 .Sp
592     .Vb 3
593     \& struct ev_loop *epoller = ev_loop_new (EVBACKEND_EPOLL | EVFLAG_NOENV);
594     \& if (!epoller)
595     \& fatal ("no epoll found here, maybe it hides under your chair");
596     .Ve
597 root 1.1 .IP "ev_default_destroy ()" 4
598     .IX Item "ev_default_destroy ()"
599     Destroys the default loop again (frees all memory and kernel state
600 root 1.12 etc.). None of the active event watchers will be stopped in the normal
601     sense, so e.g. \f(CW\*(C`ev_is_active\*(C'\fR might still return true. It is your
602     responsibility to either stop all watchers cleanly yoursef \fIbefore\fR
603     calling this function, or cope with the fact afterwards (which is usually
604 root 1.52 the easiest thing, you can just ignore the watchers and/or \f(CW\*(C`free ()\*(C'\fR them
605 root 1.12 for example).
606 root 1.52 .Sp
607 root 1.54 Note that certain global state, such as signal state, will not be freed by
608 root 1.52 this function, and related watchers (such as signal and child watchers)
609     would need to be stopped manually.
610     .Sp
611     In general it is not advisable to call this function except in the
612     rare occasion where you really need to free e.g. the signal handling
613     pipe fds. If you need dynamically allocated loops it is better to use
614     \&\f(CW\*(C`ev_loop_new\*(C'\fR and \f(CW\*(C`ev_loop_destroy\*(C'\fR).
615 root 1.1 .IP "ev_loop_destroy (loop)" 4
616     .IX Item "ev_loop_destroy (loop)"
617     Like \f(CW\*(C`ev_default_destroy\*(C'\fR, but destroys an event loop created by an
618     earlier call to \f(CW\*(C`ev_loop_new\*(C'\fR.
619     .IP "ev_default_fork ()" 4
620     .IX Item "ev_default_fork ()"
621 root 1.60 This function sets a flag that causes subsequent \f(CW\*(C`ev_loop\*(C'\fR iterations
622     to reinitialise the kernel state for backends that have one. Despite the
623     name, you can call it anytime, but it makes most sense after forking, in
624     the child process (or both child and parent, but that again makes little
625     sense). You \fImust\fR call it in the child before using any of the libev
626     functions, and it will only take effect at the next \f(CW\*(C`ev_loop\*(C'\fR iteration.
627     .Sp
628     On the other hand, you only need to call this function in the child
629     process if and only if you want to use the event library in the child. If
630     you just fork+exec, you don't have to call it at all.
631 root 1.1 .Sp
632     The function itself is quite fast and it's usually not a problem to call
633     it just in case after a fork. To make this easy, the function will fit in
634     quite nicely into a call to \f(CW\*(C`pthread_atfork\*(C'\fR:
635     .Sp
636     .Vb 1
637     \& pthread_atfork (0, 0, ev_default_fork);
638     .Ve
639     .IP "ev_loop_fork (loop)" 4
640     .IX Item "ev_loop_fork (loop)"
641     Like \f(CW\*(C`ev_default_fork\*(C'\fR, but acts on an event loop created by
642     \&\f(CW\*(C`ev_loop_new\*(C'\fR. Yes, you have to call this on every allocated event loop
643     after fork, and how you do this is entirely your own problem.
644 root 1.37 .IP "unsigned int ev_loop_count (loop)" 4
645     .IX Item "unsigned int ev_loop_count (loop)"
646     Returns the count of loop iterations for the loop, which is identical to
647     the number of times libev did poll for new events. It starts at \f(CW0\fR and
648     happily wraps around with enough iterations.
649     .Sp
650     This value can sometimes be useful as a generation counter of sorts (it
651     \&\*(L"ticks\*(R" the number of loop iterations), as it roughly corresponds with
652     \&\f(CW\*(C`ev_prepare\*(C'\fR and \f(CW\*(C`ev_check\*(C'\fR calls.
653 root 1.6 .IP "unsigned int ev_backend (loop)" 4
654     .IX Item "unsigned int ev_backend (loop)"
655     Returns one of the \f(CW\*(C`EVBACKEND_*\*(C'\fR flags indicating the event backend in
656 root 1.1 use.
657     .IP "ev_tstamp ev_now (loop)" 4
658     .IX Item "ev_tstamp ev_now (loop)"
659     Returns the current \*(L"event loop time\*(R", which is the time the event loop
660 root 1.9 received events and started processing them. This timestamp does not
661     change as long as callbacks are being processed, and this is also the base
662     time used for relative timers. You can treat it as the timestamp of the
663 root 1.54 event occurring (or more correctly, libev finding out about it).
664 root 1.1 .IP "ev_loop (loop, int flags)" 4
665     .IX Item "ev_loop (loop, int flags)"
666     Finally, this is it, the event handler. This function usually is called
667     after you initialised all your watchers and you want to start handling
668     events.
669     .Sp
670 root 1.8 If the flags argument is specified as \f(CW0\fR, it will not return until
671     either no event watchers are active anymore or \f(CW\*(C`ev_unloop\*(C'\fR was called.
672 root 1.1 .Sp
673 root 1.9 Please note that an explicit \f(CW\*(C`ev_unloop\*(C'\fR is usually better than
674     relying on all watchers to be stopped when deciding when a program has
675     finished (especially in interactive programs), but having a program that
676     automatically loops as long as it has to and no longer by virtue of
677     relying on its watchers stopping correctly is a thing of beauty.
678     .Sp
679 root 1.1 A flags value of \f(CW\*(C`EVLOOP_NONBLOCK\*(C'\fR will look for new events, will handle
680     those events and any outstanding ones, but will not block your process in
681     case there are no events and will return after one iteration of the loop.
682     .Sp
683     A flags value of \f(CW\*(C`EVLOOP_ONESHOT\*(C'\fR will look for new events (waiting if
684     neccessary) and will handle those and any outstanding ones. It will block
685     your process until at least one new event arrives, and will return after
686 root 1.8 one iteration of the loop. This is useful if you are waiting for some
687     external event in conjunction with something not expressible using other
688     libev watchers. However, a pair of \f(CW\*(C`ev_prepare\*(C'\fR/\f(CW\*(C`ev_check\*(C'\fR watchers is
689     usually a better approach for this kind of thing.
690     .Sp
691     Here are the gory details of what \f(CW\*(C`ev_loop\*(C'\fR does:
692     .Sp
693 root 1.60 .Vb 10
694     \& \- Before the first iteration, call any pending watchers.
695     \& * If EVFLAG_FORKCHECK was used, check for a fork.
696     \& \- If a fork was detected, queue and call all fork watchers.
697     \& \- Queue and call all prepare watchers.
698     \& \- If we have been forked, recreate the kernel state.
699     \& \- Update the kernel state with all outstanding changes.
700     \& \- Update the "event loop time".
701     \& \- Calculate for how long to sleep or block, if at all
702     \& (active idle watchers, EVLOOP_NONBLOCK or not having
703     \& any active watchers at all will result in not sleeping).
704     \& \- Sleep if the I/O and timer collect interval say so.
705     \& \- Block the process, waiting for any events.
706     \& \- Queue all outstanding I/O (fd) events.
707     \& \- Update the "event loop time" and do time jump handling.
708     \& \- Queue all outstanding timers.
709     \& \- Queue all outstanding periodics.
710     \& \- If no events are pending now, queue all idle watchers.
711     \& \- Queue all check watchers.
712     \& \- Call all queued watchers in reverse order (i.e. check watchers first).
713 root 1.8 \& Signals and child watchers are implemented as I/O watchers, and will
714     \& be handled here by queueing them when their watcher gets executed.
715 root 1.60 \& \- If ev_unloop has been called, or EVLOOP_ONESHOT or EVLOOP_NONBLOCK
716     \& were used, or there are no active watchers, return, otherwise
717     \& continue with step *.
718 root 1.2 .Ve
719 root 1.9 .Sp
720 root 1.60 Example: Queue some jobs and then loop until no events are outstanding
721 root 1.9 anymore.
722     .Sp
723     .Vb 4
724     \& ... queue jobs here, make sure they register event watchers as long
725     \& ... as they still have work to do (even an idle watcher will do..)
726     \& ev_loop (my_loop, 0);
727     \& ... jobs done. yeah!
728     .Ve
729 root 1.1 .IP "ev_unloop (loop, how)" 4
730     .IX Item "ev_unloop (loop, how)"
731     Can be used to make a call to \f(CW\*(C`ev_loop\*(C'\fR return early (but only after it
732     has processed all outstanding events). The \f(CW\*(C`how\*(C'\fR argument must be either
733     \&\f(CW\*(C`EVUNLOOP_ONE\*(C'\fR, which will make the innermost \f(CW\*(C`ev_loop\*(C'\fR call return, or
734     \&\f(CW\*(C`EVUNLOOP_ALL\*(C'\fR, which will make all nested \f(CW\*(C`ev_loop\*(C'\fR calls return.
735 root 1.60 .Sp
736     This \*(L"unloop state\*(R" will be cleared when entering \f(CW\*(C`ev_loop\*(C'\fR again.
737 root 1.1 .IP "ev_ref (loop)" 4
738     .IX Item "ev_ref (loop)"
739     .PD 0
740     .IP "ev_unref (loop)" 4
741     .IX Item "ev_unref (loop)"
742     .PD
743     Ref/unref can be used to add or remove a reference count on the event
744     loop: Every watcher keeps one reference, and as long as the reference
745     count is nonzero, \f(CW\*(C`ev_loop\*(C'\fR will not return on its own. If you have
746     a watcher you never unregister that should not keep \f(CW\*(C`ev_loop\*(C'\fR from
747     returning, \fIev_unref()\fR after starting, and \fIev_ref()\fR before stopping it. For
748     example, libev itself uses this for its internal signal pipe: It is not
749     visible to the libev user and should not keep \f(CW\*(C`ev_loop\*(C'\fR from exiting if
750     no event watchers registered by it are active. It is also an excellent
751     way to do this for generic recurring timers or from within third-party
752 root 1.60 libraries. Just remember to \fIunref after start\fR and \fIref before stop\fR
753     (but only if the watcher wasn't active before, or was active before,
754     respectively).
755 root 1.9 .Sp
756 root 1.28 Example: Create a signal watcher, but keep it from keeping \f(CW\*(C`ev_loop\*(C'\fR
757 root 1.9 running when nothing else is active.
758     .Sp
759     .Vb 4
760 root 1.28 \& struct ev_signal exitsig;
761 root 1.9 \& ev_signal_init (&exitsig, sig_cb, SIGINT);
762 root 1.28 \& ev_signal_start (loop, &exitsig);
763     \& evf_unref (loop);
764 root 1.9 .Ve
765     .Sp
766 root 1.28 Example: For some weird reason, unregister the above signal handler again.
767 root 1.9 .Sp
768     .Vb 2
769 root 1.28 \& ev_ref (loop);
770     \& ev_signal_stop (loop, &exitsig);
771 root 1.9 .Ve
772 root 1.57 .IP "ev_set_io_collect_interval (loop, ev_tstamp interval)" 4
773     .IX Item "ev_set_io_collect_interval (loop, ev_tstamp interval)"
774 root 1.56 .PD 0
775 root 1.57 .IP "ev_set_timeout_collect_interval (loop, ev_tstamp interval)" 4
776     .IX Item "ev_set_timeout_collect_interval (loop, ev_tstamp interval)"
777 root 1.56 .PD
778     These advanced functions influence the time that libev will spend waiting
779     for events. Both are by default \f(CW0\fR, meaning that libev will try to
780     invoke timer/periodic callbacks and I/O callbacks with minimum latency.
781     .Sp
782     Setting these to a higher value (the \f(CW\*(C`interval\*(C'\fR \fImust\fR be >= \f(CW0\fR)
783     allows libev to delay invocation of I/O and timer/periodic callbacks to
784     increase efficiency of loop iterations.
785     .Sp
786     The background is that sometimes your program runs just fast enough to
787     handle one (or very few) event(s) per loop iteration. While this makes
788     the program responsive, it also wastes a lot of \s-1CPU\s0 time to poll for new
789     events, especially with backends like \f(CW\*(C`select ()\*(C'\fR which have a high
790     overhead for the actual polling but can deliver many events at once.
791     .Sp
792     By setting a higher \fIio collect interval\fR you allow libev to spend more
793     time collecting I/O events, so you can handle more events per iteration,
794     at the cost of increasing latency. Timeouts (both \f(CW\*(C`ev_periodic\*(C'\fR and
795 root 1.58 \&\f(CW\*(C`ev_timer\*(C'\fR) will be not affected. Setting this to a non-null value will
796 root 1.57 introduce an additional \f(CW\*(C`ev_sleep ()\*(C'\fR call into most loop iterations.
797 root 1.56 .Sp
798     Likewise, by setting a higher \fItimeout collect interval\fR you allow libev
799     to spend more time collecting timeouts, at the expense of increased
800     latency (the watcher callback will be called later). \f(CW\*(C`ev_io\*(C'\fR watchers
801 root 1.57 will not be affected. Setting this to a non-null value will not introduce
802     any overhead in libev.
803 root 1.56 .Sp
804 root 1.57 Many (busy) programs can usually benefit by setting the io collect
805     interval to a value near \f(CW0.1\fR or so, which is often enough for
806     interactive servers (of course not for games), likewise for timeouts. It
807     usually doesn't make much sense to set it to a lower value than \f(CW0.01\fR,
808     as this approsaches the timing granularity of most systems.
809 root 1.1 .SH "ANATOMY OF A WATCHER"
810     .IX Header "ANATOMY OF A WATCHER"
811     A watcher is a structure that you create and register to record your
812     interest in some event. For instance, if you want to wait for \s-1STDIN\s0 to
813     become readable, you would create an \f(CW\*(C`ev_io\*(C'\fR watcher for that:
814     .PP
815     .Vb 5
816     \& static void my_cb (struct ev_loop *loop, struct ev_io *w, int revents)
817     \& {
818     \& ev_io_stop (w);
819     \& ev_unloop (loop, EVUNLOOP_ALL);
820     \& }
821 root 1.60 \&
822 root 1.1 \& struct ev_loop *loop = ev_default_loop (0);
823     \& struct ev_io stdin_watcher;
824     \& ev_init (&stdin_watcher, my_cb);
825     \& ev_io_set (&stdin_watcher, STDIN_FILENO, EV_READ);
826     \& ev_io_start (loop, &stdin_watcher);
827     \& ev_loop (loop, 0);
828     .Ve
829     .PP
830     As you can see, you are responsible for allocating the memory for your
831     watcher structures (and it is usually a bad idea to do this on the stack,
832     although this can sometimes be quite valid).
833     .PP
834     Each watcher structure must be initialised by a call to \f(CW\*(C`ev_init
835     (watcher *, callback)\*(C'\fR, which expects a callback to be provided. This
836     callback gets invoked each time the event occurs (or, in the case of io
837     watchers, each time the event loop detects that the file descriptor given
838     is readable and/or writable).
839     .PP
840     Each watcher type has its own \f(CW\*(C`ev_<type>_set (watcher *, ...)\*(C'\fR macro
841     with arguments specific to this watcher type. There is also a macro
842     to combine initialisation and setting in one call: \f(CW\*(C`ev_<type>_init
843     (watcher *, callback, ...)\*(C'\fR.
844     .PP
845     To make the watcher actually watch out for events, you have to start it
846     with a watcher-specific start function (\f(CW\*(C`ev_<type>_start (loop, watcher
847     *)\*(C'\fR), and you can stop watching for events at any time by calling the
848     corresponding stop function (\f(CW\*(C`ev_<type>_stop (loop, watcher *)\*(C'\fR.
849     .PP
850     As long as your watcher is active (has been started but not stopped) you
851     must not touch the values stored in it. Most specifically you must never
852 root 1.11 reinitialise it or call its \f(CW\*(C`set\*(C'\fR macro.
853 root 1.1 .PP
854     Each and every callback receives the event loop pointer as first, the
855     registered watcher structure as second, and a bitset of received events as
856     third argument.
857     .PP
858     The received events usually include a single bit per event type received
859     (you can receive multiple events at the same time). The possible bit masks
860     are:
861     .ie n .IP """EV_READ""" 4
862     .el .IP "\f(CWEV_READ\fR" 4
863     .IX Item "EV_READ"
864     .PD 0
865     .ie n .IP """EV_WRITE""" 4
866     .el .IP "\f(CWEV_WRITE\fR" 4
867     .IX Item "EV_WRITE"
868     .PD
869     The file descriptor in the \f(CW\*(C`ev_io\*(C'\fR watcher has become readable and/or
870     writable.
871     .ie n .IP """EV_TIMEOUT""" 4
872     .el .IP "\f(CWEV_TIMEOUT\fR" 4
873     .IX Item "EV_TIMEOUT"
874     The \f(CW\*(C`ev_timer\*(C'\fR watcher has timed out.
875     .ie n .IP """EV_PERIODIC""" 4
876     .el .IP "\f(CWEV_PERIODIC\fR" 4
877     .IX Item "EV_PERIODIC"
878     The \f(CW\*(C`ev_periodic\*(C'\fR watcher has timed out.
879     .ie n .IP """EV_SIGNAL""" 4
880     .el .IP "\f(CWEV_SIGNAL\fR" 4
881     .IX Item "EV_SIGNAL"
882     The signal specified in the \f(CW\*(C`ev_signal\*(C'\fR watcher has been received by a thread.
883     .ie n .IP """EV_CHILD""" 4
884     .el .IP "\f(CWEV_CHILD\fR" 4
885     .IX Item "EV_CHILD"
886     The pid specified in the \f(CW\*(C`ev_child\*(C'\fR watcher has received a status change.
887 root 1.22 .ie n .IP """EV_STAT""" 4
888     .el .IP "\f(CWEV_STAT\fR" 4
889     .IX Item "EV_STAT"
890     The path specified in the \f(CW\*(C`ev_stat\*(C'\fR watcher changed its attributes somehow.
891 root 1.1 .ie n .IP """EV_IDLE""" 4
892     .el .IP "\f(CWEV_IDLE\fR" 4
893     .IX Item "EV_IDLE"
894     The \f(CW\*(C`ev_idle\*(C'\fR watcher has determined that you have nothing better to do.
895     .ie n .IP """EV_PREPARE""" 4
896     .el .IP "\f(CWEV_PREPARE\fR" 4
897     .IX Item "EV_PREPARE"
898     .PD 0
899     .ie n .IP """EV_CHECK""" 4
900     .el .IP "\f(CWEV_CHECK\fR" 4
901     .IX Item "EV_CHECK"
902     .PD
903     All \f(CW\*(C`ev_prepare\*(C'\fR watchers are invoked just \fIbefore\fR \f(CW\*(C`ev_loop\*(C'\fR starts
904     to gather new events, and all \f(CW\*(C`ev_check\*(C'\fR watchers are invoked just after
905     \&\f(CW\*(C`ev_loop\*(C'\fR has gathered them, but before it invokes any callbacks for any
906     received events. Callbacks of both watcher types can start and stop as
907     many watchers as they want, and all of them will be taken into account
908     (for example, a \f(CW\*(C`ev_prepare\*(C'\fR watcher might start an idle watcher to keep
909     \&\f(CW\*(C`ev_loop\*(C'\fR from blocking).
910 root 1.24 .ie n .IP """EV_EMBED""" 4
911     .el .IP "\f(CWEV_EMBED\fR" 4
912     .IX Item "EV_EMBED"
913     The embedded event loop specified in the \f(CW\*(C`ev_embed\*(C'\fR watcher needs attention.
914     .ie n .IP """EV_FORK""" 4
915     .el .IP "\f(CWEV_FORK\fR" 4
916     .IX Item "EV_FORK"
917     The event loop has been resumed in the child process after fork (see
918     \&\f(CW\*(C`ev_fork\*(C'\fR).
919 root 1.1 .ie n .IP """EV_ERROR""" 4
920     .el .IP "\f(CWEV_ERROR\fR" 4
921     .IX Item "EV_ERROR"
922     An unspecified error has occured, the watcher has been stopped. This might
923     happen because the watcher could not be properly started because libev
924     ran out of memory, a file descriptor was found to be closed or any other
925     problem. You best act on it by reporting the problem and somehow coping
926     with the watcher being stopped.
927     .Sp
928     Libev will usually signal a few \*(L"dummy\*(R" events together with an error,
929     for example it might indicate that a fd is readable or writable, and if
930     your callbacks is well-written it can just attempt the operation and cope
931     with the error from \fIread()\fR or \fIwrite()\fR. This will not work in multithreaded
932     programs, though, so beware.
933 root 1.17 .Sh "\s-1GENERIC\s0 \s-1WATCHER\s0 \s-1FUNCTIONS\s0"
934     .IX Subsection "GENERIC WATCHER FUNCTIONS"
935 root 1.11 In the following description, \f(CW\*(C`TYPE\*(C'\fR stands for the watcher type,
936     e.g. \f(CW\*(C`timer\*(C'\fR for \f(CW\*(C`ev_timer\*(C'\fR watchers and \f(CW\*(C`io\*(C'\fR for \f(CW\*(C`ev_io\*(C'\fR watchers.
937     .ie n .IP """ev_init"" (ev_TYPE *watcher, callback)" 4
938     .el .IP "\f(CWev_init\fR (ev_TYPE *watcher, callback)" 4
939     .IX Item "ev_init (ev_TYPE *watcher, callback)"
940     This macro initialises the generic portion of a watcher. The contents
941     of the watcher object can be arbitrary (so \f(CW\*(C`malloc\*(C'\fR will do). Only
942     the generic parts of the watcher are initialised, you \fIneed\fR to call
943     the type-specific \f(CW\*(C`ev_TYPE_set\*(C'\fR macro afterwards to initialise the
944     type-specific parts. For each type there is also a \f(CW\*(C`ev_TYPE_init\*(C'\fR macro
945     which rolls both calls into one.
946     .Sp
947     You can reinitialise a watcher at any time as long as it has been stopped
948     (or never started) and there are no pending events outstanding.
949     .Sp
950 root 1.17 The callback is always of type \f(CW\*(C`void (*)(ev_loop *loop, ev_TYPE *watcher,
951 root 1.11 int revents)\*(C'\fR.
952     .ie n .IP """ev_TYPE_set"" (ev_TYPE *, [args])" 4
953     .el .IP "\f(CWev_TYPE_set\fR (ev_TYPE *, [args])" 4
954     .IX Item "ev_TYPE_set (ev_TYPE *, [args])"
955     This macro initialises the type-specific parts of a watcher. You need to
956     call \f(CW\*(C`ev_init\*(C'\fR at least once before you call this macro, but you can
957     call \f(CW\*(C`ev_TYPE_set\*(C'\fR any number of times. You must not, however, call this
958     macro on a watcher that is active (it can be pending, however, which is a
959     difference to the \f(CW\*(C`ev_init\*(C'\fR macro).
960     .Sp
961     Although some watcher types do not have type-specific arguments
962     (e.g. \f(CW\*(C`ev_prepare\*(C'\fR) you still need to call its \f(CW\*(C`set\*(C'\fR macro.
963     .ie n .IP """ev_TYPE_init"" (ev_TYPE *watcher, callback, [args])" 4
964     .el .IP "\f(CWev_TYPE_init\fR (ev_TYPE *watcher, callback, [args])" 4
965     .IX Item "ev_TYPE_init (ev_TYPE *watcher, callback, [args])"
966     This convinience macro rolls both \f(CW\*(C`ev_init\*(C'\fR and \f(CW\*(C`ev_TYPE_set\*(C'\fR macro
967     calls into a single call. This is the most convinient method to initialise
968     a watcher. The same limitations apply, of course.
969     .ie n .IP """ev_TYPE_start"" (loop *, ev_TYPE *watcher)" 4
970     .el .IP "\f(CWev_TYPE_start\fR (loop *, ev_TYPE *watcher)" 4
971     .IX Item "ev_TYPE_start (loop *, ev_TYPE *watcher)"
972     Starts (activates) the given watcher. Only active watchers will receive
973     events. If the watcher is already active nothing will happen.
974     .ie n .IP """ev_TYPE_stop"" (loop *, ev_TYPE *watcher)" 4
975     .el .IP "\f(CWev_TYPE_stop\fR (loop *, ev_TYPE *watcher)" 4
976     .IX Item "ev_TYPE_stop (loop *, ev_TYPE *watcher)"
977     Stops the given watcher again (if active) and clears the pending
978     status. It is possible that stopped watchers are pending (for example,
979     non-repeating timers are being stopped when they become pending), but
980     \&\f(CW\*(C`ev_TYPE_stop\*(C'\fR ensures that the watcher is neither active nor pending. If
981     you want to free or reuse the memory used by the watcher it is therefore a
982     good idea to always call its \f(CW\*(C`ev_TYPE_stop\*(C'\fR function.
983     .IP "bool ev_is_active (ev_TYPE *watcher)" 4
984     .IX Item "bool ev_is_active (ev_TYPE *watcher)"
985     Returns a true value iff the watcher is active (i.e. it has been started
986     and not yet been stopped). As long as a watcher is active you must not modify
987     it.
988     .IP "bool ev_is_pending (ev_TYPE *watcher)" 4
989     .IX Item "bool ev_is_pending (ev_TYPE *watcher)"
990     Returns a true value iff the watcher is pending, (i.e. it has outstanding
991     events but its callback has not yet been invoked). As long as a watcher
992     is pending (but not active) you must not call an init function on it (but
993 root 1.43 \&\f(CW\*(C`ev_TYPE_set\*(C'\fR is safe), you must not change its priority, and you must
994     make sure the watcher is available to libev (e.g. you cannot \f(CW\*(C`free ()\*(C'\fR
995     it).
996 root 1.29 .IP "callback ev_cb (ev_TYPE *watcher)" 4
997     .IX Item "callback ev_cb (ev_TYPE *watcher)"
998 root 1.11 Returns the callback currently set on the watcher.
999     .IP "ev_cb_set (ev_TYPE *watcher, callback)" 4
1000     .IX Item "ev_cb_set (ev_TYPE *watcher, callback)"
1001     Change the callback. You can change the callback at virtually any time
1002     (modulo threads).
1003 root 1.37 .IP "ev_set_priority (ev_TYPE *watcher, priority)" 4
1004     .IX Item "ev_set_priority (ev_TYPE *watcher, priority)"
1005     .PD 0
1006     .IP "int ev_priority (ev_TYPE *watcher)" 4
1007     .IX Item "int ev_priority (ev_TYPE *watcher)"
1008     .PD
1009     Set and query the priority of the watcher. The priority is a small
1010     integer between \f(CW\*(C`EV_MAXPRI\*(C'\fR (default: \f(CW2\fR) and \f(CW\*(C`EV_MINPRI\*(C'\fR
1011     (default: \f(CW\*(C`\-2\*(C'\fR). Pending watchers with higher priority will be invoked
1012     before watchers with lower priority, but priority will not keep watchers
1013     from being executed (except for \f(CW\*(C`ev_idle\*(C'\fR watchers).
1014     .Sp
1015     This means that priorities are \fIonly\fR used for ordering callback
1016     invocation after new events have been received. This is useful, for
1017     example, to reduce latency after idling, or more often, to bind two
1018     watchers on the same event and make sure one is called first.
1019     .Sp
1020     If you need to suppress invocation when higher priority events are pending
1021     you need to look at \f(CW\*(C`ev_idle\*(C'\fR watchers, which provide this functionality.
1022     .Sp
1023 root 1.43 You \fImust not\fR change the priority of a watcher as long as it is active or
1024     pending.
1025     .Sp
1026 root 1.37 The default priority used by watchers when no priority has been set is
1027     always \f(CW0\fR, which is supposed to not be too high and not be too low :).
1028     .Sp
1029     Setting a priority outside the range of \f(CW\*(C`EV_MINPRI\*(C'\fR to \f(CW\*(C`EV_MAXPRI\*(C'\fR is
1030     fine, as long as you do not mind that the priority value you query might
1031     or might not have been adjusted to be within valid range.
1032 root 1.43 .IP "ev_invoke (loop, ev_TYPE *watcher, int revents)" 4
1033     .IX Item "ev_invoke (loop, ev_TYPE *watcher, int revents)"
1034     Invoke the \f(CW\*(C`watcher\*(C'\fR with the given \f(CW\*(C`loop\*(C'\fR and \f(CW\*(C`revents\*(C'\fR. Neither
1035     \&\f(CW\*(C`loop\*(C'\fR nor \f(CW\*(C`revents\*(C'\fR need to be valid as long as the watcher callback
1036     can deal with that fact.
1037     .IP "int ev_clear_pending (loop, ev_TYPE *watcher)" 4
1038     .IX Item "int ev_clear_pending (loop, ev_TYPE *watcher)"
1039     If the watcher is pending, this function returns clears its pending status
1040     and returns its \f(CW\*(C`revents\*(C'\fR bitset (as if its callback was invoked). If the
1041     watcher isn't pending it does nothing and returns \f(CW0\fR.
1042 root 1.1 .Sh "\s-1ASSOCIATING\s0 \s-1CUSTOM\s0 \s-1DATA\s0 \s-1WITH\s0 A \s-1WATCHER\s0"
1043     .IX Subsection "ASSOCIATING CUSTOM DATA WITH A WATCHER"
1044     Each watcher has, by default, a member \f(CW\*(C`void *data\*(C'\fR that you can change
1045     and read at any time, libev will completely ignore it. This can be used
1046     to associate arbitrary data with your watcher. If you need more data and
1047     don't want to allocate memory and store a pointer to it in that data
1048     member, you can also \*(L"subclass\*(R" the watcher type and provide your own
1049     data:
1050     .PP
1051     .Vb 7
1052     \& struct my_io
1053     \& {
1054     \& struct ev_io io;
1055     \& int otherfd;
1056     \& void *somedata;
1057     \& struct whatever *mostinteresting;
1058     \& }
1059     .Ve
1060     .PP
1061     And since your callback will be called with a pointer to the watcher, you
1062     can cast it back to your own type:
1063     .PP
1064     .Vb 5
1065     \& static void my_cb (struct ev_loop *loop, struct ev_io *w_, int revents)
1066     \& {
1067     \& struct my_io *w = (struct my_io *)w_;
1068     \& ...
1069     \& }
1070     .Ve
1071     .PP
1072 root 1.29 More interesting and less C\-conformant ways of casting your callback type
1073     instead have been omitted.
1074     .PP
1075     Another common scenario is having some data structure with multiple
1076     watchers:
1077     .PP
1078     .Vb 6
1079     \& struct my_biggy
1080     \& {
1081     \& int some_data;
1082     \& ev_timer t1;
1083     \& ev_timer t2;
1084     \& }
1085     .Ve
1086     .PP
1087     In this case getting the pointer to \f(CW\*(C`my_biggy\*(C'\fR is a bit more complicated,
1088     you need to use \f(CW\*(C`offsetof\*(C'\fR:
1089     .PP
1090     .Vb 1
1091     \& #include <stddef.h>
1092 root 1.60 \&
1093 root 1.29 \& static void
1094     \& t1_cb (EV_P_ struct ev_timer *w, int revents)
1095     \& {
1096     \& struct my_biggy big = (struct my_biggy *
1097 root 1.60 \& (((char *)w) \- offsetof (struct my_biggy, t1));
1098 root 1.29 \& }
1099 root 1.60 \&
1100 root 1.29 \& static void
1101     \& t2_cb (EV_P_ struct ev_timer *w, int revents)
1102     \& {
1103     \& struct my_biggy big = (struct my_biggy *
1104 root 1.60 \& (((char *)w) \- offsetof (struct my_biggy, t2));
1105 root 1.29 \& }
1106     .Ve
1107 root 1.1 .SH "WATCHER TYPES"
1108     .IX Header "WATCHER TYPES"
1109     This section describes each watcher in detail, but will not repeat
1110 root 1.22 information given in the last section. Any initialisation/set macros,
1111     functions and members specific to the watcher type are explained.
1112     .PP
1113     Members are additionally marked with either \fI[read\-only]\fR, meaning that,
1114     while the watcher is active, you can look at the member and expect some
1115     sensible content, but you must not modify it (you can modify it while the
1116     watcher is stopped to your hearts content), or \fI[read\-write]\fR, which
1117     means you can expect it to have some sensible content while the watcher
1118     is active, but you can also modify it. Modifying it may not do something
1119     sensible or take immediate effect (or do anything at all), but libev will
1120     not crash or malfunction in any way.
1121 root 1.17 .ie n .Sh """ev_io"" \- is this file descriptor readable or writable?"
1122     .el .Sh "\f(CWev_io\fP \- is this file descriptor readable or writable?"
1123     .IX Subsection "ev_io - is this file descriptor readable or writable?"
1124 root 1.1 I/O watchers check whether a file descriptor is readable or writable
1125 root 1.17 in each iteration of the event loop, or, more precisely, when reading
1126     would not block the process and writing would at least be able to write
1127     some data. This behaviour is called level-triggering because you keep
1128     receiving events as long as the condition persists. Remember you can stop
1129     the watcher if you don't want to act on the event and neither want to
1130     receive future events.
1131 root 1.1 .PP
1132     In general you can register as many read and/or write event watchers per
1133     fd as you want (as long as you don't confuse yourself). Setting all file
1134     descriptors to non-blocking mode is also usually a good idea (but not
1135     required if you know what you are doing).
1136     .PP
1137     If you must do this, then force the use of a known-to-be-good backend
1138 root 1.6 (at the time of this writing, this includes only \f(CW\*(C`EVBACKEND_SELECT\*(C'\fR and
1139     \&\f(CW\*(C`EVBACKEND_POLL\*(C'\fR).
1140 root 1.17 .PP
1141     Another thing you have to watch out for is that it is quite easy to
1142     receive \*(L"spurious\*(R" readyness notifications, that is your callback might
1143     be called with \f(CW\*(C`EV_READ\*(C'\fR but a subsequent \f(CW\*(C`read\*(C'\fR(2) will actually block
1144     because there is no data. Not only are some backends known to create a
1145     lot of those (for example solaris ports), it is very easy to get into
1146     this situation even with a relatively standard program structure. Thus
1147     it is best to always use non-blocking I/O: An extra \f(CW\*(C`read\*(C'\fR(2) returning
1148     \&\f(CW\*(C`EAGAIN\*(C'\fR is far preferable to a program hanging until some data arrives.
1149     .PP
1150     If you cannot run the fd in non-blocking mode (for example you should not
1151     play around with an Xlib connection), then you have to seperately re-test
1152 root 1.38 whether a file descriptor is really ready with a known-to-be good interface
1153 root 1.17 such as poll (fortunately in our Xlib example, Xlib already does this on
1154     its own, so its quite safe to use).
1155 root 1.49 .PP
1156     \fIThe special problem of disappearing file descriptors\fR
1157     .IX Subsection "The special problem of disappearing file descriptors"
1158     .PP
1159 root 1.54 Some backends (e.g. kqueue, epoll) need to be told about closing a file
1160 root 1.49 descriptor (either by calling \f(CW\*(C`close\*(C'\fR explicitly or by any other means,
1161     such as \f(CW\*(C`dup\*(C'\fR). The reason is that you register interest in some file
1162     descriptor, but when it goes away, the operating system will silently drop
1163     this interest. If another file descriptor with the same number then is
1164     registered with libev, there is no efficient way to see that this is, in
1165     fact, a different file descriptor.
1166     .PP
1167     To avoid having to explicitly tell libev about such cases, libev follows
1168     the following policy: Each time \f(CW\*(C`ev_io_set\*(C'\fR is being called, libev
1169     will assume that this is potentially a new file descriptor, otherwise
1170     it is assumed that the file descriptor stays the same. That means that
1171     you \fIhave\fR to call \f(CW\*(C`ev_io_set\*(C'\fR (or \f(CW\*(C`ev_io_init\*(C'\fR) when you change the
1172     descriptor even if the file descriptor number itself did not change.
1173     .PP
1174     This is how one would do it normally anyway, the important point is that
1175     the libev application should not optimise around libev but should leave
1176     optimisations to libev.
1177 root 1.50 .PP
1178 root 1.55 \fIThe special problem of dup'ed file descriptors\fR
1179     .IX Subsection "The special problem of dup'ed file descriptors"
1180 root 1.54 .PP
1181     Some backends (e.g. epoll), cannot register events for file descriptors,
1182 root 1.59 but only events for the underlying file descriptions. That means when you
1183     have \f(CW\*(C`dup ()\*(C'\fR'ed file descriptors or weirder constellations, and register
1184     events for them, only one file descriptor might actually receive events.
1185 root 1.54 .PP
1186 root 1.59 There is no workaround possible except not registering events
1187     for potentially \f(CW\*(C`dup ()\*(C'\fR'ed file descriptors, or to resort to
1188 root 1.54 \&\f(CW\*(C`EVBACKEND_SELECT\*(C'\fR or \f(CW\*(C`EVBACKEND_POLL\*(C'\fR.
1189     .PP
1190     \fIThe special problem of fork\fR
1191     .IX Subsection "The special problem of fork"
1192     .PP
1193     Some backends (epoll, kqueue) do not support \f(CW\*(C`fork ()\*(C'\fR at all or exhibit
1194     useless behaviour. Libev fully supports fork, but needs to be told about
1195     it in the child.
1196     .PP
1197     To support fork in your programs, you either have to call
1198     \&\f(CW\*(C`ev_default_fork ()\*(C'\fR or \f(CW\*(C`ev_loop_fork ()\*(C'\fR after a fork in the child,
1199     enable \f(CW\*(C`EVFLAG_FORKCHECK\*(C'\fR, or resort to \f(CW\*(C`EVBACKEND_SELECT\*(C'\fR or
1200     \&\f(CW\*(C`EVBACKEND_POLL\*(C'\fR.
1201     .PP
1202 root 1.50 \fIWatcher-Specific Functions\fR
1203     .IX Subsection "Watcher-Specific Functions"
1204 root 1.1 .IP "ev_io_init (ev_io *, callback, int fd, int events)" 4
1205     .IX Item "ev_io_init (ev_io *, callback, int fd, int events)"
1206     .PD 0
1207     .IP "ev_io_set (ev_io *, int fd, int events)" 4
1208     .IX Item "ev_io_set (ev_io *, int fd, int events)"
1209     .PD
1210 root 1.17 Configures an \f(CW\*(C`ev_io\*(C'\fR watcher. The \f(CW\*(C`fd\*(C'\fR is the file descriptor to
1211     rceeive events for and events is either \f(CW\*(C`EV_READ\*(C'\fR, \f(CW\*(C`EV_WRITE\*(C'\fR or
1212     \&\f(CW\*(C`EV_READ | EV_WRITE\*(C'\fR to receive the given events.
1213 root 1.22 .IP "int fd [read\-only]" 4
1214     .IX Item "int fd [read-only]"
1215     The file descriptor being watched.
1216     .IP "int events [read\-only]" 4
1217     .IX Item "int events [read-only]"
1218     The events being watched.
1219 root 1.9 .PP
1220 root 1.60 \fIExamples\fR
1221     .IX Subsection "Examples"
1222     .PP
1223 root 1.28 Example: Call \f(CW\*(C`stdin_readable_cb\*(C'\fR when \s-1STDIN_FILENO\s0 has become, well
1224 root 1.60 readable, but only once. Since it is likely line-buffered, you could
1225 root 1.28 attempt to read a whole line in the callback.
1226 root 1.9 .PP
1227     .Vb 6
1228     \& static void
1229     \& stdin_readable_cb (struct ev_loop *loop, struct ev_io *w, int revents)
1230     \& {
1231     \& ev_io_stop (loop, w);
1232 root 1.60 \& .. read from stdin here (or from w\->fd) and haqndle any I/O errors
1233 root 1.9 \& }
1234 root 1.60 \&
1235 root 1.9 \& ...
1236     \& struct ev_loop *loop = ev_default_init (0);
1237     \& struct ev_io stdin_readable;
1238     \& ev_io_init (&stdin_readable, stdin_readable_cb, STDIN_FILENO, EV_READ);
1239     \& ev_io_start (loop, &stdin_readable);
1240     \& ev_loop (loop, 0);
1241     .Ve
1242 root 1.17 .ie n .Sh """ev_timer"" \- relative and optionally repeating timeouts"
1243     .el .Sh "\f(CWev_timer\fP \- relative and optionally repeating timeouts"
1244     .IX Subsection "ev_timer - relative and optionally repeating timeouts"
1245 root 1.1 Timer watchers are simple relative timers that generate an event after a
1246     given time, and optionally repeating in regular intervals after that.
1247     .PP
1248     The timers are based on real time, that is, if you register an event that
1249     times out after an hour and you reset your system clock to last years
1250     time, it will still time out after (roughly) and hour. \*(L"Roughly\*(R" because
1251 root 1.2 detecting time jumps is hard, and some inaccuracies are unavoidable (the
1252 root 1.1 monotonic clock option helps a lot here).
1253     .PP
1254     The relative timeouts are calculated relative to the \f(CW\*(C`ev_now ()\*(C'\fR
1255     time. This is usually the right thing as this timestamp refers to the time
1256 root 1.2 of the event triggering whatever timeout you are modifying/starting. If
1257     you suspect event processing to be delayed and you \fIneed\fR to base the timeout
1258 root 1.1 on the current time, use something like this to adjust for this:
1259     .PP
1260     .Vb 1
1261 root 1.60 \& ev_timer_set (&timer, after + ev_now () \- ev_time (), 0.);
1262 root 1.1 .Ve
1263 root 1.2 .PP
1264     The callback is guarenteed to be invoked only when its timeout has passed,
1265     but if multiple timers become ready during the same loop iteration then
1266     order of execution is undefined.
1267 root 1.50 .PP
1268     \fIWatcher-Specific Functions and Data Members\fR
1269     .IX Subsection "Watcher-Specific Functions and Data Members"
1270 root 1.1 .IP "ev_timer_init (ev_timer *, callback, ev_tstamp after, ev_tstamp repeat)" 4
1271     .IX Item "ev_timer_init (ev_timer *, callback, ev_tstamp after, ev_tstamp repeat)"
1272     .PD 0
1273     .IP "ev_timer_set (ev_timer *, ev_tstamp after, ev_tstamp repeat)" 4
1274     .IX Item "ev_timer_set (ev_timer *, ev_tstamp after, ev_tstamp repeat)"
1275     .PD
1276     Configure the timer to trigger after \f(CW\*(C`after\*(C'\fR seconds. If \f(CW\*(C`repeat\*(C'\fR is
1277     \&\f(CW0.\fR, then it will automatically be stopped. If it is positive, then the
1278     timer will automatically be configured to trigger again \f(CW\*(C`repeat\*(C'\fR seconds
1279     later, again, and again, until stopped manually.
1280     .Sp
1281     The timer itself will do a best-effort at avoiding drift, that is, if you
1282     configure a timer to trigger every 10 seconds, then it will trigger at
1283     exactly 10 second intervals. If, however, your program cannot keep up with
1284     the timer (because it takes longer than those 10 seconds to do stuff) the
1285     timer will not fire more than once per event loop iteration.
1286     .IP "ev_timer_again (loop)" 4
1287     .IX Item "ev_timer_again (loop)"
1288     This will act as if the timer timed out and restart it again if it is
1289     repeating. The exact semantics are:
1290     .Sp
1291 root 1.34 If the timer is pending, its pending status is cleared.
1292 root 1.1 .Sp
1293 root 1.34 If the timer is started but nonrepeating, stop it (as if it timed out).
1294     .Sp
1295     If the timer is repeating, either start it if necessary (with the
1296     \&\f(CW\*(C`repeat\*(C'\fR value), or reset the running timer to the \f(CW\*(C`repeat\*(C'\fR value.
1297 root 1.1 .Sp
1298     This sounds a bit complicated, but here is a useful and typical
1299 root 1.34 example: Imagine you have a tcp connection and you want a so-called idle
1300     timeout, that is, you want to be called when there have been, say, 60
1301     seconds of inactivity on the socket. The easiest way to do this is to
1302     configure an \f(CW\*(C`ev_timer\*(C'\fR with a \f(CW\*(C`repeat\*(C'\fR value of \f(CW60\fR and then call
1303 root 1.22 \&\f(CW\*(C`ev_timer_again\*(C'\fR each time you successfully read or write some data. If
1304     you go into an idle state where you do not expect data to travel on the
1305 root 1.34 socket, you can \f(CW\*(C`ev_timer_stop\*(C'\fR the timer, and \f(CW\*(C`ev_timer_again\*(C'\fR will
1306     automatically restart it if need be.
1307 root 1.22 .Sp
1308 root 1.34 That means you can ignore the \f(CW\*(C`after\*(C'\fR value and \f(CW\*(C`ev_timer_start\*(C'\fR
1309     altogether and only ever use the \f(CW\*(C`repeat\*(C'\fR value and \f(CW\*(C`ev_timer_again\*(C'\fR:
1310 root 1.22 .Sp
1311     .Vb 8
1312     \& ev_timer_init (timer, callback, 0., 5.);
1313     \& ev_timer_again (loop, timer);
1314     \& ...
1315 root 1.60 \& timer\->again = 17.;
1316 root 1.22 \& ev_timer_again (loop, timer);
1317     \& ...
1318 root 1.60 \& timer\->again = 10.;
1319 root 1.22 \& ev_timer_again (loop, timer);
1320     .Ve
1321     .Sp
1322 root 1.34 This is more slightly efficient then stopping/starting the timer each time
1323     you want to modify its timeout value.
1324 root 1.22 .IP "ev_tstamp repeat [read\-write]" 4
1325     .IX Item "ev_tstamp repeat [read-write]"
1326     The current \f(CW\*(C`repeat\*(C'\fR value. Will be used each time the watcher times out
1327     or \f(CW\*(C`ev_timer_again\*(C'\fR is called and determines the next timeout (if any),
1328     which is also when any modifications are taken into account.
1329 root 1.9 .PP
1330 root 1.60 \fIExamples\fR
1331     .IX Subsection "Examples"
1332     .PP
1333 root 1.28 Example: Create a timer that fires after 60 seconds.
1334 root 1.9 .PP
1335     .Vb 5
1336     \& static void
1337     \& one_minute_cb (struct ev_loop *loop, struct ev_timer *w, int revents)
1338     \& {
1339     \& .. one minute over, w is actually stopped right here
1340     \& }
1341 root 1.60 \&
1342 root 1.9 \& struct ev_timer mytimer;
1343     \& ev_timer_init (&mytimer, one_minute_cb, 60., 0.);
1344     \& ev_timer_start (loop, &mytimer);
1345     .Ve
1346     .PP
1347 root 1.28 Example: Create a timeout timer that times out after 10 seconds of
1348 root 1.9 inactivity.
1349     .PP
1350     .Vb 5
1351     \& static void
1352     \& timeout_cb (struct ev_loop *loop, struct ev_timer *w, int revents)
1353     \& {
1354     \& .. ten seconds without any activity
1355     \& }
1356 root 1.60 \&
1357 root 1.9 \& struct ev_timer mytimer;
1358     \& ev_timer_init (&mytimer, timeout_cb, 0., 10.); /* note, only repeat used */
1359     \& ev_timer_again (&mytimer); /* start timer */
1360     \& ev_loop (loop, 0);
1361 root 1.60 \&
1362 root 1.9 \& // and in some piece of code that gets executed on any "activity":
1363     \& // reset the timeout to start ticking again at 10 seconds
1364     \& ev_timer_again (&mytimer);
1365     .Ve
1366 root 1.17 .ie n .Sh """ev_periodic"" \- to cron or not to cron?"
1367     .el .Sh "\f(CWev_periodic\fP \- to cron or not to cron?"
1368     .IX Subsection "ev_periodic - to cron or not to cron?"
1369 root 1.1 Periodic watchers are also timers of a kind, but they are very versatile
1370     (and unfortunately a bit complex).
1371     .PP
1372     Unlike \f(CW\*(C`ev_timer\*(C'\fR's, they are not based on real time (or relative time)
1373     but on wallclock time (absolute time). You can tell a periodic watcher
1374     to trigger \*(L"at\*(R" some specific point in time. For example, if you tell a
1375 root 1.13 periodic watcher to trigger in 10 seconds (by specifiying e.g. \f(CW\*(C`ev_now ()
1376     + 10.\*(C'\fR) and then reset your system clock to the last year, then it will
1377 root 1.1 take a year to trigger the event (unlike an \f(CW\*(C`ev_timer\*(C'\fR, which would trigger
1378 root 1.46 roughly 10 seconds later).
1379 root 1.1 .PP
1380     They can also be used to implement vastly more complex timers, such as
1381 root 1.46 triggering an event on each midnight, local time or other, complicated,
1382     rules.
1383 root 1.2 .PP
1384     As with timers, the callback is guarenteed to be invoked only when the
1385     time (\f(CW\*(C`at\*(C'\fR) has been passed, but if multiple periodic timers become ready
1386     during the same loop iteration then order of execution is undefined.
1387 root 1.50 .PP
1388     \fIWatcher-Specific Functions and Data Members\fR
1389     .IX Subsection "Watcher-Specific Functions and Data Members"
1390 root 1.1 .IP "ev_periodic_init (ev_periodic *, callback, ev_tstamp at, ev_tstamp interval, reschedule_cb)" 4
1391     .IX Item "ev_periodic_init (ev_periodic *, callback, ev_tstamp at, ev_tstamp interval, reschedule_cb)"
1392     .PD 0
1393     .IP "ev_periodic_set (ev_periodic *, ev_tstamp after, ev_tstamp repeat, reschedule_cb)" 4
1394     .IX Item "ev_periodic_set (ev_periodic *, ev_tstamp after, ev_tstamp repeat, reschedule_cb)"
1395     .PD
1396     Lots of arguments, lets sort it out... There are basically three modes of
1397     operation, and we will explain them from simplest to complex:
1398     .RS 4
1399 root 1.60 .IP "\(bu" 4
1400     absolute timer (at = time, interval = reschedule_cb = 0)
1401     .Sp
1402 root 1.1 In this configuration the watcher triggers an event at the wallclock time
1403     \&\f(CW\*(C`at\*(C'\fR and doesn't repeat. It will not adjust when a time jump occurs,
1404     that is, if it is to be run at January 1st 2011 then it will run when the
1405     system time reaches or surpasses this time.
1406 root 1.60 .IP "\(bu" 4
1407     non-repeating interval timer (at = offset, interval > 0, reschedule_cb = 0)
1408     .Sp
1409 root 1.1 In this mode the watcher will always be scheduled to time out at the next
1410 root 1.46 \&\f(CW\*(C`at + N * interval\*(C'\fR time (for some integer N, which can also be negative)
1411     and then repeat, regardless of any time jumps.
1412 root 1.1 .Sp
1413     This can be used to create timers that do not drift with respect to system
1414     time:
1415     .Sp
1416     .Vb 1
1417     \& ev_periodic_set (&periodic, 0., 3600., 0);
1418     .Ve
1419     .Sp
1420     This doesn't mean there will always be 3600 seconds in between triggers,
1421     but only that the the callback will be called when the system time shows a
1422     full hour (\s-1UTC\s0), or more correctly, when the system time is evenly divisible
1423     by 3600.
1424     .Sp
1425     Another way to think about it (for the mathematically inclined) is that
1426     \&\f(CW\*(C`ev_periodic\*(C'\fR will try to run the callback in this mode at the next possible
1427     time where \f(CW\*(C`time = at (mod interval)\*(C'\fR, regardless of any time jumps.
1428 root 1.46 .Sp
1429     For numerical stability it is preferable that the \f(CW\*(C`at\*(C'\fR value is near
1430     \&\f(CW\*(C`ev_now ()\*(C'\fR (the current time), but there is no range requirement for
1431     this value.
1432 root 1.60 .IP "\(bu" 4
1433     manual reschedule mode (at and interval ignored, reschedule_cb = callback)
1434     .Sp
1435 root 1.1 In this mode the values for \f(CW\*(C`interval\*(C'\fR and \f(CW\*(C`at\*(C'\fR are both being
1436     ignored. Instead, each time the periodic watcher gets scheduled, the
1437     reschedule callback will be called with the watcher as first, and the
1438     current time as second argument.
1439     .Sp
1440     \&\s-1NOTE:\s0 \fIThis callback \s-1MUST\s0 \s-1NOT\s0 stop or destroy any periodic watcher,
1441     ever, or make any event loop modifications\fR. If you need to stop it,
1442     return \f(CW\*(C`now + 1e30\*(C'\fR (or so, fudge fudge) and stop it afterwards (e.g. by
1443 root 1.46 starting an \f(CW\*(C`ev_prepare\*(C'\fR watcher, which is legal).
1444 root 1.1 .Sp
1445     Its prototype is \f(CW\*(C`ev_tstamp (*reschedule_cb)(struct ev_periodic *w,
1446     ev_tstamp now)\*(C'\fR, e.g.:
1447     .Sp
1448     .Vb 4
1449     \& static ev_tstamp my_rescheduler (struct ev_periodic *w, ev_tstamp now)
1450     \& {
1451     \& return now + 60.;
1452     \& }
1453     .Ve
1454     .Sp
1455     It must return the next time to trigger, based on the passed time value
1456     (that is, the lowest time value larger than to the second argument). It
1457     will usually be called just before the callback will be triggered, but
1458     might be called at other times, too.
1459     .Sp
1460     \&\s-1NOTE:\s0 \fIThis callback must always return a time that is later than the
1461     passed \f(CI\*(C`now\*(C'\fI value\fR. Not even \f(CW\*(C`now\*(C'\fR itself will do, it \fImust\fR be larger.
1462     .Sp
1463     This can be used to create very complex timers, such as a timer that
1464     triggers on each midnight, local time. To do this, you would calculate the
1465     next midnight after \f(CW\*(C`now\*(C'\fR and return the timestamp value for this. How
1466     you do this is, again, up to you (but it is not trivial, which is the main
1467     reason I omitted it as an example).
1468     .RE
1469     .RS 4
1470     .RE
1471     .IP "ev_periodic_again (loop, ev_periodic *)" 4
1472     .IX Item "ev_periodic_again (loop, ev_periodic *)"
1473     Simply stops and restarts the periodic watcher again. This is only useful
1474     when you changed some parameters or the reschedule callback would return
1475     a different time than the last time it was called (e.g. in a crond like
1476     program when the crontabs have changed).
1477 root 1.46 .IP "ev_tstamp offset [read\-write]" 4
1478     .IX Item "ev_tstamp offset [read-write]"
1479     When repeating, this contains the offset value, otherwise this is the
1480     absolute point in time (the \f(CW\*(C`at\*(C'\fR value passed to \f(CW\*(C`ev_periodic_set\*(C'\fR).
1481     .Sp
1482     Can be modified any time, but changes only take effect when the periodic
1483     timer fires or \f(CW\*(C`ev_periodic_again\*(C'\fR is being called.
1484 root 1.22 .IP "ev_tstamp interval [read\-write]" 4
1485     .IX Item "ev_tstamp interval [read-write]"
1486     The current interval value. Can be modified any time, but changes only
1487     take effect when the periodic timer fires or \f(CW\*(C`ev_periodic_again\*(C'\fR is being
1488     called.
1489     .IP "ev_tstamp (*reschedule_cb)(struct ev_periodic *w, ev_tstamp now) [read\-write]" 4
1490     .IX Item "ev_tstamp (*reschedule_cb)(struct ev_periodic *w, ev_tstamp now) [read-write]"
1491     The current reschedule callback, or \f(CW0\fR, if this functionality is
1492     switched off. Can be changed any time, but changes only take effect when
1493     the periodic timer fires or \f(CW\*(C`ev_periodic_again\*(C'\fR is being called.
1494 root 1.52 .IP "ev_tstamp at [read\-only]" 4
1495     .IX Item "ev_tstamp at [read-only]"
1496     When active, contains the absolute time that the watcher is supposed to
1497     trigger next.
1498 root 1.9 .PP
1499 root 1.60 \fIExamples\fR
1500     .IX Subsection "Examples"
1501     .PP
1502 root 1.28 Example: Call a callback every hour, or, more precisely, whenever the
1503 root 1.9 system clock is divisible by 3600. The callback invocation times have
1504     potentially a lot of jittering, but good long-term stability.
1505     .PP
1506     .Vb 5
1507     \& static void
1508     \& clock_cb (struct ev_loop *loop, struct ev_io *w, int revents)
1509     \& {
1510     \& ... its now a full hour (UTC, or TAI or whatever your clock follows)
1511     \& }
1512 root 1.60 \&
1513 root 1.9 \& struct ev_periodic hourly_tick;
1514     \& ev_periodic_init (&hourly_tick, clock_cb, 0., 3600., 0);
1515     \& ev_periodic_start (loop, &hourly_tick);
1516     .Ve
1517     .PP
1518 root 1.28 Example: The same as above, but use a reschedule callback to do it:
1519 root 1.9 .PP
1520     .Vb 1
1521     \& #include <math.h>
1522 root 1.60 \&
1523 root 1.9 \& static ev_tstamp
1524     \& my_scheduler_cb (struct ev_periodic *w, ev_tstamp now)
1525     \& {
1526     \& return fmod (now, 3600.) + 3600.;
1527     \& }
1528 root 1.60 \&
1529 root 1.9 \& ev_periodic_init (&hourly_tick, clock_cb, 0., 0., my_scheduler_cb);
1530     .Ve
1531     .PP
1532 root 1.28 Example: Call a callback every hour, starting now:
1533 root 1.9 .PP
1534     .Vb 4
1535     \& struct ev_periodic hourly_tick;
1536     \& ev_periodic_init (&hourly_tick, clock_cb,
1537     \& fmod (ev_now (loop), 3600.), 3600., 0);
1538     \& ev_periodic_start (loop, &hourly_tick);
1539     .Ve
1540 root 1.17 .ie n .Sh """ev_signal"" \- signal me when a signal gets signalled!"
1541     .el .Sh "\f(CWev_signal\fP \- signal me when a signal gets signalled!"
1542     .IX Subsection "ev_signal - signal me when a signal gets signalled!"
1543 root 1.1 Signal watchers will trigger an event when the process receives a specific
1544     signal one or more times. Even though signals are very asynchronous, libev
1545     will try it's best to deliver signals synchronously, i.e. as part of the
1546     normal event processing, like any other event.
1547     .PP
1548     You can configure as many watchers as you like per signal. Only when the
1549     first watcher gets started will libev actually register a signal watcher
1550     with the kernel (thus it coexists with your own signal handlers as long
1551     as you don't register any with libev). Similarly, when the last signal
1552     watcher for a signal is stopped libev will reset the signal handler to
1553     \&\s-1SIG_DFL\s0 (regardless of what it was set to before).
1554 root 1.50 .PP
1555     \fIWatcher-Specific Functions and Data Members\fR
1556     .IX Subsection "Watcher-Specific Functions and Data Members"
1557 root 1.1 .IP "ev_signal_init (ev_signal *, callback, int signum)" 4
1558     .IX Item "ev_signal_init (ev_signal *, callback, int signum)"
1559     .PD 0
1560     .IP "ev_signal_set (ev_signal *, int signum)" 4
1561     .IX Item "ev_signal_set (ev_signal *, int signum)"
1562     .PD
1563     Configures the watcher to trigger on the given signal number (usually one
1564     of the \f(CW\*(C`SIGxxx\*(C'\fR constants).
1565 root 1.22 .IP "int signum [read\-only]" 4
1566     .IX Item "int signum [read-only]"
1567     The signal the watcher watches out for.
1568 root 1.17 .ie n .Sh """ev_child"" \- watch out for process status changes"
1569     .el .Sh "\f(CWev_child\fP \- watch out for process status changes"
1570     .IX Subsection "ev_child - watch out for process status changes"
1571 root 1.1 Child watchers trigger when your process receives a \s-1SIGCHLD\s0 in response to
1572     some child status changes (most typically when a child of yours dies).
1573 root 1.50 .PP
1574     \fIWatcher-Specific Functions and Data Members\fR
1575     .IX Subsection "Watcher-Specific Functions and Data Members"
1576 root 1.60 .IP "ev_child_init (ev_child *, callback, int pid, int trace)" 4
1577     .IX Item "ev_child_init (ev_child *, callback, int pid, int trace)"
1578 root 1.1 .PD 0
1579 root 1.60 .IP "ev_child_set (ev_child *, int pid, int trace)" 4
1580     .IX Item "ev_child_set (ev_child *, int pid, int trace)"
1581 root 1.1 .PD
1582     Configures the watcher to wait for status changes of process \f(CW\*(C`pid\*(C'\fR (or
1583     \&\fIany\fR process if \f(CW\*(C`pid\*(C'\fR is specified as \f(CW0\fR). The callback can look
1584     at the \f(CW\*(C`rstatus\*(C'\fR member of the \f(CW\*(C`ev_child\*(C'\fR watcher structure to see
1585     the status word (use the macros from \f(CW\*(C`sys/wait.h\*(C'\fR and see your systems
1586     \&\f(CW\*(C`waitpid\*(C'\fR documentation). The \f(CW\*(C`rpid\*(C'\fR member contains the pid of the
1587 root 1.60 process causing the status change. \f(CW\*(C`trace\*(C'\fR must be either \f(CW0\fR (only
1588     activate the watcher when the process terminates) or \f(CW1\fR (additionally
1589     activate the watcher when the process is stopped or continued).
1590 root 1.22 .IP "int pid [read\-only]" 4
1591     .IX Item "int pid [read-only]"
1592     The process id this watcher watches out for, or \f(CW0\fR, meaning any process id.
1593     .IP "int rpid [read\-write]" 4
1594     .IX Item "int rpid [read-write]"
1595     The process id that detected a status change.
1596     .IP "int rstatus [read\-write]" 4
1597     .IX Item "int rstatus [read-write]"
1598     The process exit/trace status caused by \f(CW\*(C`rpid\*(C'\fR (see your systems
1599     \&\f(CW\*(C`waitpid\*(C'\fR and \f(CW\*(C`sys/wait.h\*(C'\fR documentation for details).
1600 root 1.9 .PP
1601 root 1.60 \fIExamples\fR
1602     .IX Subsection "Examples"
1603     .PP
1604 root 1.28 Example: Try to exit cleanly on \s-1SIGINT\s0 and \s-1SIGTERM\s0.
1605 root 1.9 .PP
1606     .Vb 5
1607     \& static void
1608     \& sigint_cb (struct ev_loop *loop, struct ev_signal *w, int revents)
1609     \& {
1610     \& ev_unloop (loop, EVUNLOOP_ALL);
1611     \& }
1612 root 1.60 \&
1613 root 1.9 \& struct ev_signal signal_watcher;
1614     \& ev_signal_init (&signal_watcher, sigint_cb, SIGINT);
1615     \& ev_signal_start (loop, &sigint_cb);
1616     .Ve
1617 root 1.22 .ie n .Sh """ev_stat"" \- did the file attributes just change?"
1618     .el .Sh "\f(CWev_stat\fP \- did the file attributes just change?"
1619     .IX Subsection "ev_stat - did the file attributes just change?"
1620     This watches a filesystem path for attribute changes. That is, it calls
1621     \&\f(CW\*(C`stat\*(C'\fR regularly (or when the \s-1OS\s0 says it changed) and sees if it changed
1622     compared to the last time, invoking the callback if it did.
1623     .PP
1624     The path does not need to exist: changing from \*(L"path exists\*(R" to \*(L"path does
1625     not exist\*(R" is a status change like any other. The condition \*(L"path does
1626     not exist\*(R" is signified by the \f(CW\*(C`st_nlink\*(C'\fR field being zero (which is
1627     otherwise always forced to be at least one) and all the other fields of
1628     the stat buffer having unspecified contents.
1629     .PP
1630 root 1.33 The path \fIshould\fR be absolute and \fImust not\fR end in a slash. If it is
1631     relative and your working directory changes, the behaviour is undefined.
1632     .PP
1633 root 1.22 Since there is no standard to do this, the portable implementation simply
1634 root 1.30 calls \f(CW\*(C`stat (2)\*(C'\fR regularly on the path to see if it changed somehow. You
1635 root 1.22 can specify a recommended polling interval for this case. If you specify
1636     a polling interval of \f(CW0\fR (highly recommended!) then a \fIsuitable,
1637     unspecified default\fR value will be used (which you can expect to be around
1638     five seconds, although this might change dynamically). Libev will also
1639     impose a minimum interval which is currently around \f(CW0.1\fR, but thats
1640     usually overkill.
1641     .PP
1642     This watcher type is not meant for massive numbers of stat watchers,
1643     as even with OS-supported change notifications, this can be
1644 root 1.60 resource-intensive.
1645 root 1.22 .PP
1646 root 1.30 At the time of this writing, only the Linux inotify interface is
1647     implemented (implementing kqueue support is left as an exercise for the
1648     reader). Inotify will be used to give hints only and should not change the
1649     semantics of \f(CW\*(C`ev_stat\*(C'\fR watchers, which means that libev sometimes needs
1650     to fall back to regular polling again even with inotify, but changes are
1651     usually detected immediately, and if the file exists there will be no
1652     polling.
1653 root 1.50 .PP
1654 root 1.59 \fIInotify\fR
1655     .IX Subsection "Inotify"
1656     .PP
1657     When \f(CW\*(C`inotify (7)\*(C'\fR support has been compiled into libev (generally only
1658     available on Linux) and present at runtime, it will be used to speed up
1659     change detection where possible. The inotify descriptor will be created lazily
1660     when the first \f(CW\*(C`ev_stat\*(C'\fR watcher is being started.
1661     .PP
1662     Inotify presense does not change the semantics of \f(CW\*(C`ev_stat\*(C'\fR watchers
1663     except that changes might be detected earlier, and in some cases, to avoid
1664     making regular \f(CW\*(C`stat\*(C'\fR calls. Even in the presense of inotify support
1665     there are many cases where libev has to resort to regular \f(CW\*(C`stat\*(C'\fR polling.
1666     .PP
1667     (There is no support for kqueue, as apparently it cannot be used to
1668     implement this functionality, due to the requirement of having a file
1669     descriptor open on the object at all times).
1670     .PP
1671     \fIThe special problem of stat time resolution\fR
1672     .IX Subsection "The special problem of stat time resolution"
1673     .PP
1674     The \f(CW\*(C`stat ()\*(C'\fR syscall only supports full-second resolution portably, and
1675     even on systems where the resolution is higher, many filesystems still
1676     only support whole seconds.
1677     .PP
1678     That means that, if the time is the only thing that changes, you might
1679     miss updates: on the first update, \f(CW\*(C`ev_stat\*(C'\fR detects a change and calls
1680     your callback, which does something. When there is another update within
1681     the same second, \f(CW\*(C`ev_stat\*(C'\fR will be unable to detect it.
1682     .PP
1683     The solution to this is to delay acting on a change for a second (or till
1684     the next second boundary), using a roughly one-second delay \f(CW\*(C`ev_timer\*(C'\fR
1685     (\f(CW\*(C`ev_timer_set (w, 0., 1.01); ev_timer_again (loop, w)\*(C'\fR). The \f(CW.01\fR
1686     is added to work around small timing inconsistencies of some operating
1687     systems.
1688     .PP
1689 root 1.50 \fIWatcher-Specific Functions and Data Members\fR
1690     .IX Subsection "Watcher-Specific Functions and Data Members"
1691 root 1.22 .IP "ev_stat_init (ev_stat *, callback, const char *path, ev_tstamp interval)" 4
1692     .IX Item "ev_stat_init (ev_stat *, callback, const char *path, ev_tstamp interval)"
1693     .PD 0
1694     .IP "ev_stat_set (ev_stat *, const char *path, ev_tstamp interval)" 4
1695     .IX Item "ev_stat_set (ev_stat *, const char *path, ev_tstamp interval)"
1696     .PD
1697     Configures the watcher to wait for status changes of the given
1698     \&\f(CW\*(C`path\*(C'\fR. The \f(CW\*(C`interval\*(C'\fR is a hint on how quickly a change is expected to
1699     be detected and should normally be specified as \f(CW0\fR to let libev choose
1700     a suitable value. The memory pointed to by \f(CW\*(C`path\*(C'\fR must point to the same
1701     path for as long as the watcher is active.
1702     .Sp
1703     The callback will be receive \f(CW\*(C`EV_STAT\*(C'\fR when a change was detected,
1704     relative to the attributes at the time the watcher was started (or the
1705     last change was detected).
1706     .IP "ev_stat_stat (ev_stat *)" 4
1707     .IX Item "ev_stat_stat (ev_stat *)"
1708     Updates the stat buffer immediately with new values. If you change the
1709     watched path in your callback, you could call this fucntion to avoid
1710     detecting this change (while introducing a race condition). Can also be
1711     useful simply to find out the new values.
1712     .IP "ev_statdata attr [read\-only]" 4
1713     .IX Item "ev_statdata attr [read-only]"
1714     The most-recently detected attributes of the file. Although the type is of
1715     \&\f(CW\*(C`ev_statdata\*(C'\fR, this is usually the (or one of the) \f(CW\*(C`struct stat\*(C'\fR types
1716     suitable for your system. If the \f(CW\*(C`st_nlink\*(C'\fR member is \f(CW0\fR, then there
1717     was some error while \f(CW\*(C`stat\*(C'\fRing the file.
1718     .IP "ev_statdata prev [read\-only]" 4
1719     .IX Item "ev_statdata prev [read-only]"
1720     The previous attributes of the file. The callback gets invoked whenever
1721     \&\f(CW\*(C`prev\*(C'\fR != \f(CW\*(C`attr\*(C'\fR.
1722     .IP "ev_tstamp interval [read\-only]" 4
1723     .IX Item "ev_tstamp interval [read-only]"
1724     The specified interval.
1725     .IP "const char *path [read\-only]" 4
1726     .IX Item "const char *path [read-only]"
1727     The filesystem path that is being watched.
1728     .PP
1729 root 1.59 \fIExamples\fR
1730     .IX Subsection "Examples"
1731     .PP
1732 root 1.22 Example: Watch \f(CW\*(C`/etc/passwd\*(C'\fR for attribute changes.
1733     .PP
1734 root 1.60 .Vb 10
1735 root 1.22 \& static void
1736     \& passwd_cb (struct ev_loop *loop, ev_stat *w, int revents)
1737     \& {
1738     \& /* /etc/passwd changed in some way */
1739 root 1.60 \& if (w\->attr.st_nlink)
1740 root 1.22 \& {
1741 root 1.60 \& printf ("passwd current size %ld\en", (long)w\->attr.st_size);
1742     \& printf ("passwd current atime %ld\en", (long)w\->attr.st_mtime);
1743     \& printf ("passwd current mtime %ld\en", (long)w\->attr.st_mtime);
1744 root 1.22 \& }
1745     \& else
1746     \& /* you shalt not abuse printf for puts */
1747     \& puts ("wow, /etc/passwd is not there, expect problems. "
1748     \& "if this is windows, they already arrived\en");
1749     \& }
1750 root 1.60 \&
1751 root 1.22 \& ...
1752     \& ev_stat passwd;
1753 root 1.60 \&
1754 root 1.59 \& ev_stat_init (&passwd, passwd_cb, "/etc/passwd", 0.);
1755 root 1.22 \& ev_stat_start (loop, &passwd);
1756     .Ve
1757 root 1.59 .PP
1758     Example: Like above, but additionally use a one-second delay so we do not
1759     miss updates (however, frequent updates will delay processing, too, so
1760     one might do the work both on \f(CW\*(C`ev_stat\*(C'\fR callback invocation \fIand\fR on
1761     \&\f(CW\*(C`ev_timer\*(C'\fR callback invocation).
1762     .PP
1763     .Vb 2
1764     \& static ev_stat passwd;
1765     \& static ev_timer timer;
1766 root 1.60 \&
1767 root 1.59 \& static void
1768     \& timer_cb (EV_P_ ev_timer *w, int revents)
1769     \& {
1770     \& ev_timer_stop (EV_A_ w);
1771 root 1.60 \&
1772     \& /* now it\*(Aqs one second after the most recent passwd change */
1773 root 1.59 \& }
1774 root 1.60 \&
1775 root 1.59 \& static void
1776     \& stat_cb (EV_P_ ev_stat *w, int revents)
1777     \& {
1778 root 1.60 \& /* reset the one\-second timer */
1779 root 1.59 \& ev_timer_again (EV_A_ &timer);
1780     \& }
1781 root 1.60 \&
1782 root 1.59 \& ...
1783     \& ev_stat_init (&passwd, stat_cb, "/etc/passwd", 0.);
1784     \& ev_stat_start (loop, &passwd);
1785     \& ev_timer_init (&timer, timer_cb, 0., 1.01);
1786     .Ve
1787 root 1.17 .ie n .Sh """ev_idle"" \- when you've got nothing better to do..."
1788     .el .Sh "\f(CWev_idle\fP \- when you've got nothing better to do..."
1789     .IX Subsection "ev_idle - when you've got nothing better to do..."
1790 root 1.37 Idle watchers trigger events when no other events of the same or higher
1791     priority are pending (prepare, check and other idle watchers do not
1792     count).
1793     .PP
1794     That is, as long as your process is busy handling sockets or timeouts
1795     (or even signals, imagine) of the same or higher priority it will not be
1796     triggered. But when your process is idle (or only lower-priority watchers
1797     are pending), the idle watchers are being called once per event loop
1798     iteration \- until stopped, that is, or your process receives more events
1799     and becomes busy again with higher priority stuff.
1800 root 1.1 .PP
1801     The most noteworthy effect is that as long as any idle watchers are
1802     active, the process will not block when waiting for new events.
1803     .PP
1804     Apart from keeping your process non-blocking (which is a useful
1805     effect on its own sometimes), idle watchers are a good place to do
1806 root 1.60 \&\*(L"pseudo-background processing\*(R", or delay processing stuff to after the
1807 root 1.1 event loop has handled all outstanding events.
1808 root 1.50 .PP
1809     \fIWatcher-Specific Functions and Data Members\fR
1810     .IX Subsection "Watcher-Specific Functions and Data Members"
1811 root 1.1 .IP "ev_idle_init (ev_signal *, callback)" 4
1812     .IX Item "ev_idle_init (ev_signal *, callback)"
1813     Initialises and configures the idle watcher \- it has no parameters of any
1814     kind. There is a \f(CW\*(C`ev_idle_set\*(C'\fR macro, but using it is utterly pointless,
1815     believe me.
1816 root 1.9 .PP
1817 root 1.60 \fIExamples\fR
1818     .IX Subsection "Examples"
1819     .PP
1820 root 1.28 Example: Dynamically allocate an \f(CW\*(C`ev_idle\*(C'\fR watcher, start it, and in the
1821     callback, free it. Also, use no error checking, as usual.
1822 root 1.9 .PP
1823     .Vb 7
1824     \& static void
1825     \& idle_cb (struct ev_loop *loop, struct ev_idle *w, int revents)
1826     \& {
1827     \& free (w);
1828     \& // now do something you wanted to do when the program has
1829 root 1.60 \& // no longer anything immediate to do.
1830 root 1.9 \& }
1831 root 1.60 \&
1832 root 1.9 \& struct ev_idle *idle_watcher = malloc (sizeof (struct ev_idle));
1833     \& ev_idle_init (idle_watcher, idle_cb);
1834     \& ev_idle_start (loop, idle_cb);
1835     .Ve
1836 root 1.17 .ie n .Sh """ev_prepare""\fP and \f(CW""ev_check"" \- customise your event loop!"
1837     .el .Sh "\f(CWev_prepare\fP and \f(CWev_check\fP \- customise your event loop!"
1838     .IX Subsection "ev_prepare and ev_check - customise your event loop!"
1839 root 1.1 Prepare and check watchers are usually (but not always) used in tandem:
1840     prepare watchers get invoked before the process blocks and check watchers
1841     afterwards.
1842     .PP
1843 root 1.20 You \fImust not\fR call \f(CW\*(C`ev_loop\*(C'\fR or similar functions that enter
1844     the current event loop from either \f(CW\*(C`ev_prepare\*(C'\fR or \f(CW\*(C`ev_check\*(C'\fR
1845     watchers. Other loops than the current one are fine, however. The
1846     rationale behind this is that you do not need to check for recursion in
1847     those watchers, i.e. the sequence will always be \f(CW\*(C`ev_prepare\*(C'\fR, blocking,
1848     \&\f(CW\*(C`ev_check\*(C'\fR so if you have one watcher of each kind they will always be
1849     called in pairs bracketing the blocking call.
1850     .PP
1851 root 1.10 Their main purpose is to integrate other event mechanisms into libev and
1852     their use is somewhat advanced. This could be used, for example, to track
1853     variable changes, implement your own watchers, integrate net-snmp or a
1854 root 1.20 coroutine library and lots more. They are also occasionally useful if
1855     you cache some data and want to flush it before blocking (for example,
1856     in X programs you might want to do an \f(CW\*(C`XFlush ()\*(C'\fR in an \f(CW\*(C`ev_prepare\*(C'\fR
1857     watcher).
1858 root 1.1 .PP
1859     This is done by examining in each prepare call which file descriptors need
1860     to be watched by the other library, registering \f(CW\*(C`ev_io\*(C'\fR watchers for
1861     them and starting an \f(CW\*(C`ev_timer\*(C'\fR watcher for any timeouts (many libraries
1862     provide just this functionality). Then, in the check watcher you check for
1863     any events that occured (by checking the pending status of all watchers
1864     and stopping them) and call back into the library. The I/O and timer
1865     callbacks will never actually be called (but must be valid nevertheless,
1866     because you never know, you know?).
1867     .PP
1868     As another example, the Perl Coro module uses these hooks to integrate
1869     coroutines into libev programs, by yielding to other active coroutines
1870     during each prepare and only letting the process block if no coroutines
1871     are ready to run (it's actually more complicated: it only runs coroutines
1872     with priority higher than or equal to the event loop and one coroutine
1873     of lower priority, but only once, using idle watchers to keep the event
1874     loop from blocking if lower-priority coroutines are active, thus mapping
1875     low-priority coroutines to idle/background tasks).
1876 root 1.45 .PP
1877     It is recommended to give \f(CW\*(C`ev_check\*(C'\fR watchers highest (\f(CW\*(C`EV_MAXPRI\*(C'\fR)
1878     priority, to ensure that they are being run before any other watchers
1879     after the poll. Also, \f(CW\*(C`ev_check\*(C'\fR watchers (and \f(CW\*(C`ev_prepare\*(C'\fR watchers,
1880     too) should not activate (\*(L"feed\*(R") events into libev. While libev fully
1881 root 1.57 supports this, they will be called before other \f(CW\*(C`ev_check\*(C'\fR watchers
1882     did their job. As \f(CW\*(C`ev_check\*(C'\fR watchers are often used to embed other
1883 root 1.60 (non-libev) event loops those other event loops might be in an unusable
1884 root 1.57 state until their \f(CW\*(C`ev_check\*(C'\fR watcher ran (always remind yourself to
1885     coexist peacefully with others).
1886 root 1.50 .PP
1887     \fIWatcher-Specific Functions and Data Members\fR
1888     .IX Subsection "Watcher-Specific Functions and Data Members"
1889 root 1.1 .IP "ev_prepare_init (ev_prepare *, callback)" 4
1890     .IX Item "ev_prepare_init (ev_prepare *, callback)"
1891     .PD 0
1892     .IP "ev_check_init (ev_check *, callback)" 4
1893     .IX Item "ev_check_init (ev_check *, callback)"
1894     .PD
1895     Initialises and configures the prepare or check watcher \- they have no
1896     parameters of any kind. There are \f(CW\*(C`ev_prepare_set\*(C'\fR and \f(CW\*(C`ev_check_set\*(C'\fR
1897     macros, but using them is utterly, utterly and completely pointless.
1898 root 1.9 .PP
1899 root 1.60 \fIExamples\fR
1900     .IX Subsection "Examples"
1901     .PP
1902 root 1.44 There are a number of principal ways to embed other event loops or modules
1903     into libev. Here are some ideas on how to include libadns into libev
1904     (there is a Perl module named \f(CW\*(C`EV::ADNS\*(C'\fR that does this, which you could
1905     use for an actually working example. Another Perl module named \f(CW\*(C`EV::Glib\*(C'\fR
1906     embeds a Glib main context into libev, and finally, \f(CW\*(C`Glib::EV\*(C'\fR embeds \s-1EV\s0
1907     into the Glib event loop).
1908     .PP
1909     Method 1: Add \s-1IO\s0 watchers and a timeout watcher in a prepare handler,
1910     and in a check watcher, destroy them and call into libadns. What follows
1911     is pseudo-code only of course. This requires you to either use a low
1912     priority for the check watcher or use \f(CW\*(C`ev_clear_pending\*(C'\fR explicitly, as
1913     the callbacks for the IO/timeout watchers might not have been called yet.
1914 root 1.20 .PP
1915     .Vb 2
1916     \& static ev_io iow [nfd];
1917     \& static ev_timer tw;
1918 root 1.60 \&
1919 root 1.20 \& static void
1920     \& io_cb (ev_loop *loop, ev_io *w, int revents)
1921     \& {
1922     \& }
1923 root 1.60 \&
1924 root 1.20 \& // create io watchers for each fd and a timer before blocking
1925     \& static void
1926     \& adns_prepare_cb (ev_loop *loop, ev_prepare *w, int revents)
1927     \& {
1928 root 1.37 \& int timeout = 3600000;
1929     \& struct pollfd fds [nfd];
1930 root 1.20 \& // actual code will need to loop here and realloc etc.
1931     \& adns_beforepoll (ads, fds, &nfd, &timeout, timeval_from (ev_time ()));
1932 root 1.60 \&
1933     \& /* the callback is illegal, but won\*(Aqt be called as we stop during check */
1934     \& ev_timer_init (&tw, 0, timeout * 1e\-3);
1935 root 1.20 \& ev_timer_start (loop, &tw);
1936 root 1.60 \&
1937 root 1.44 \& // create one ev_io per pollfd
1938 root 1.20 \& for (int i = 0; i < nfd; ++i)
1939     \& {
1940     \& ev_io_init (iow + i, io_cb, fds [i].fd,
1941     \& ((fds [i].events & POLLIN ? EV_READ : 0)
1942     \& | (fds [i].events & POLLOUT ? EV_WRITE : 0)));
1943 root 1.60 \&
1944 root 1.20 \& fds [i].revents = 0;
1945     \& ev_io_start (loop, iow + i);
1946     \& }
1947     \& }
1948 root 1.60 \&
1949 root 1.20 \& // stop all watchers after blocking
1950     \& static void
1951     \& adns_check_cb (ev_loop *loop, ev_check *w, int revents)
1952     \& {
1953     \& ev_timer_stop (loop, &tw);
1954 root 1.60 \&
1955 root 1.20 \& for (int i = 0; i < nfd; ++i)
1956 root 1.44 \& {
1957     \& // set the relevant poll flags
1958     \& // could also call adns_processreadable etc. here
1959     \& struct pollfd *fd = fds + i;
1960     \& int revents = ev_clear_pending (iow + i);
1961 root 1.60 \& if (revents & EV_READ ) fd\->revents |= fd\->events & POLLIN;
1962     \& if (revents & EV_WRITE) fd\->revents |= fd\->events & POLLOUT;
1963     \&
1964 root 1.44 \& // now stop the watcher
1965     \& ev_io_stop (loop, iow + i);
1966     \& }
1967 root 1.60 \&
1968 root 1.20 \& adns_afterpoll (adns, fds, nfd, timeval_from (ev_now (loop));
1969     \& }
1970     .Ve
1971 root 1.44 .PP
1972     Method 2: This would be just like method 1, but you run \f(CW\*(C`adns_afterpoll\*(C'\fR
1973     in the prepare watcher and would dispose of the check watcher.
1974     .PP
1975     Method 3: If the module to be embedded supports explicit event
1976     notification (adns does), you can also make use of the actual watcher
1977     callbacks, and only destroy/create the watchers in the prepare watcher.
1978     .PP
1979     .Vb 5
1980     \& static void
1981     \& timer_cb (EV_P_ ev_timer *w, int revents)
1982     \& {
1983 root 1.60 \& adns_state ads = (adns_state)w\->data;
1984 root 1.44 \& update_now (EV_A);
1985 root 1.60 \&
1986 root 1.44 \& adns_processtimeouts (ads, &tv_now);
1987     \& }
1988 root 1.60 \&
1989 root 1.44 \& static void
1990     \& io_cb (EV_P_ ev_io *w, int revents)
1991     \& {
1992 root 1.60 \& adns_state ads = (adns_state)w\->data;
1993 root 1.44 \& update_now (EV_A);
1994 root 1.60 \&
1995     \& if (revents & EV_READ ) adns_processreadable (ads, w\->fd, &tv_now);
1996     \& if (revents & EV_WRITE) adns_processwriteable (ads, w\->fd, &tv_now);
1997 root 1.44 \& }
1998 root 1.60 \&
1999 root 1.44 \& // do not ever call adns_afterpoll
2000     .Ve
2001     .PP
2002     Method 4: Do not use a prepare or check watcher because the module you
2003     want to embed is too inflexible to support it. Instead, youc na override
2004     their poll function. The drawback with this solution is that the main
2005     loop is now no longer controllable by \s-1EV\s0. The \f(CW\*(C`Glib::EV\*(C'\fR module does
2006     this.
2007     .PP
2008     .Vb 4
2009     \& static gint
2010     \& event_poll_func (GPollFD *fds, guint nfds, gint timeout)
2011     \& {
2012     \& int got_events = 0;
2013 root 1.60 \&
2014 root 1.44 \& for (n = 0; n < nfds; ++n)
2015     \& // create/start io watcher that sets the relevant bits in fds[n] and increment got_events
2016 root 1.60 \&
2017 root 1.44 \& if (timeout >= 0)
2018     \& // create/start timer
2019 root 1.60 \&
2020 root 1.44 \& // poll
2021     \& ev_loop (EV_A_ 0);
2022 root 1.60 \&
2023 root 1.44 \& // stop timer again
2024     \& if (timeout >= 0)
2025     \& ev_timer_stop (EV_A_ &to);
2026 root 1.60 \&
2027     \& // stop io watchers again \- their callbacks should have set
2028 root 1.44 \& for (n = 0; n < nfds; ++n)
2029     \& ev_io_stop (EV_A_ iow [n]);
2030 root 1.60 \&
2031 root 1.44 \& return got_events;
2032     \& }
2033     .Ve
2034 root 1.17 .ie n .Sh """ev_embed"" \- when one backend isn't enough..."
2035     .el .Sh "\f(CWev_embed\fP \- when one backend isn't enough..."
2036     .IX Subsection "ev_embed - when one backend isn't enough..."
2037 root 1.10 This is a rather advanced watcher type that lets you embed one event loop
2038 root 1.11 into another (currently only \f(CW\*(C`ev_io\*(C'\fR events are supported in the embedded
2039     loop, other types of watchers might be handled in a delayed or incorrect
2040 root 1.57 fashion and must not be used).
2041 root 1.10 .PP
2042     There are primarily two reasons you would want that: work around bugs and
2043     prioritise I/O.
2044     .PP
2045     As an example for a bug workaround, the kqueue backend might only support
2046     sockets on some platform, so it is unusable as generic backend, but you
2047     still want to make use of it because you have many sockets and it scales
2048     so nicely. In this case, you would create a kqueue-based loop and embed it
2049     into your default loop (which might use e.g. poll). Overall operation will
2050     be a bit slower because first libev has to poll and then call kevent, but
2051     at least you can use both at what they are best.
2052     .PP
2053     As for prioritising I/O: rarely you have the case where some fds have
2054     to be watched and handled very quickly (with low latency), and even
2055     priorities and idle watchers might have too much overhead. In this case
2056     you would put all the high priority stuff in one loop and all the rest in
2057     a second one, and embed the second one in the first.
2058     .PP
2059 root 1.11 As long as the watcher is active, the callback will be invoked every time
2060     there might be events pending in the embedded loop. The callback must then
2061     call \f(CW\*(C`ev_embed_sweep (mainloop, watcher)\*(C'\fR to make a single sweep and invoke
2062     their callbacks (you could also start an idle watcher to give the embedded
2063     loop strictly lower priority for example). You can also set the callback
2064     to \f(CW0\fR, in which case the embed watcher will automatically execute the
2065     embedded loop sweep.
2066     .PP
2067 root 1.10 As long as the watcher is started it will automatically handle events. The
2068     callback will be invoked whenever some events have been handled. You can
2069     set the callback to \f(CW0\fR to avoid having to specify one if you are not
2070     interested in that.
2071     .PP
2072     Also, there have not currently been made special provisions for forking:
2073     when you fork, you not only have to call \f(CW\*(C`ev_loop_fork\*(C'\fR on both loops,
2074     but you will also have to stop and restart any \f(CW\*(C`ev_embed\*(C'\fR watchers
2075     yourself.
2076     .PP
2077     Unfortunately, not all backends are embeddable, only the ones returned by
2078     \&\f(CW\*(C`ev_embeddable_backends\*(C'\fR are, which, unfortunately, does not include any
2079     portable one.
2080     .PP
2081     So when you want to use this feature you will always have to be prepared
2082     that you cannot get an embeddable loop. The recommended way to get around
2083     this is to have a separate variables for your embeddable loop, try to
2084 root 1.60 create it, and if that fails, use the normal loop for everything.
2085 root 1.50 .PP
2086     \fIWatcher-Specific Functions and Data Members\fR
2087     .IX Subsection "Watcher-Specific Functions and Data Members"
2088 root 1.11 .IP "ev_embed_init (ev_embed *, callback, struct ev_loop *embedded_loop)" 4
2089     .IX Item "ev_embed_init (ev_embed *, callback, struct ev_loop *embedded_loop)"
2090 root 1.10 .PD 0
2091 root 1.11 .IP "ev_embed_set (ev_embed *, callback, struct ev_loop *embedded_loop)" 4
2092     .IX Item "ev_embed_set (ev_embed *, callback, struct ev_loop *embedded_loop)"
2093 root 1.10 .PD
2094 root 1.11 Configures the watcher to embed the given loop, which must be
2095     embeddable. If the callback is \f(CW0\fR, then \f(CW\*(C`ev_embed_sweep\*(C'\fR will be
2096     invoked automatically, otherwise it is the responsibility of the callback
2097     to invoke it (it will continue to be called until the sweep has been done,
2098     if you do not want thta, you need to temporarily stop the embed watcher).
2099     .IP "ev_embed_sweep (loop, ev_embed *)" 4
2100     .IX Item "ev_embed_sweep (loop, ev_embed *)"
2101     Make a single, non-blocking sweep over the embedded loop. This works
2102     similarly to \f(CW\*(C`ev_loop (embedded_loop, EVLOOP_NONBLOCK)\*(C'\fR, but in the most
2103     apropriate way for embedded loops.
2104 root 1.54 .IP "struct ev_loop *other [read\-only]" 4
2105     .IX Item "struct ev_loop *other [read-only]"
2106 root 1.22 The embedded event loop.
2107 root 1.60 .PP
2108     \fIExamples\fR
2109     .IX Subsection "Examples"
2110     .PP
2111     Example: Try to get an embeddable event loop and embed it into the default
2112     event loop. If that is not possible, use the default loop. The default
2113     loop is stored in \f(CW\*(C`loop_hi\*(C'\fR, while the mebeddable loop is stored in
2114     \&\f(CW\*(C`loop_lo\*(C'\fR (which is \f(CW\*(C`loop_hi\*(C'\fR in the acse no embeddable loop can be
2115     used).
2116     .PP
2117     .Vb 3
2118     \& struct ev_loop *loop_hi = ev_default_init (0);
2119     \& struct ev_loop *loop_lo = 0;
2120     \& struct ev_embed embed;
2121     \&
2122     \& // see if there is a chance of getting one that works
2123     \& // (remember that a flags value of 0 means autodetection)
2124     \& loop_lo = ev_embeddable_backends () & ev_recommended_backends ()
2125     \& ? ev_loop_new (ev_embeddable_backends () & ev_recommended_backends ())
2126     \& : 0;
2127     \&
2128     \& // if we got one, then embed it, otherwise default to loop_hi
2129     \& if (loop_lo)
2130     \& {
2131     \& ev_embed_init (&embed, 0, loop_lo);
2132     \& ev_embed_start (loop_hi, &embed);
2133     \& }
2134     \& else
2135     \& loop_lo = loop_hi;
2136     .Ve
2137     .PP
2138     Example: Check if kqueue is available but not recommended and create
2139     a kqueue backend for use with sockets (which usually work with any
2140     kqueue implementation). Store the kqueue/socket\-only event loop in
2141     \&\f(CW\*(C`loop_socket\*(C'\fR. (One might optionally use \f(CW\*(C`EVFLAG_NOENV\*(C'\fR, too).
2142     .PP
2143     .Vb 3
2144     \& struct ev_loop *loop = ev_default_init (0);
2145     \& struct ev_loop *loop_socket = 0;
2146     \& struct ev_embed embed;
2147     \&
2148     \& if (ev_supported_backends () & ~ev_recommended_backends () & EVBACKEND_KQUEUE)
2149     \& if ((loop_socket = ev_loop_new (EVBACKEND_KQUEUE))
2150     \& {
2151     \& ev_embed_init (&embed, 0, loop_socket);
2152     \& ev_embed_start (loop, &embed);
2153     \& }
2154     \&
2155     \& if (!loop_socket)
2156     \& loop_socket = loop;
2157     \&
2158     \& // now use loop_socket for all sockets, and loop for everything else
2159     .Ve
2160 root 1.24 .ie n .Sh """ev_fork"" \- the audacity to resume the event loop after a fork"
2161     .el .Sh "\f(CWev_fork\fP \- the audacity to resume the event loop after a fork"
2162     .IX Subsection "ev_fork - the audacity to resume the event loop after a fork"
2163     Fork watchers are called when a \f(CW\*(C`fork ()\*(C'\fR was detected (usually because
2164     whoever is a good citizen cared to tell libev about it by calling
2165     \&\f(CW\*(C`ev_default_fork\*(C'\fR or \f(CW\*(C`ev_loop_fork\*(C'\fR). The invocation is done before the
2166     event loop blocks next and before \f(CW\*(C`ev_check\*(C'\fR watchers are being called,
2167     and only in the child after the fork. If whoever good citizen calling
2168     \&\f(CW\*(C`ev_default_fork\*(C'\fR cheats and calls it in the wrong process, the fork
2169     handlers will be invoked, too, of course.
2170 root 1.51 .PP
2171     \fIWatcher-Specific Functions and Data Members\fR
2172     .IX Subsection "Watcher-Specific Functions and Data Members"
2173 root 1.24 .IP "ev_fork_init (ev_signal *, callback)" 4
2174     .IX Item "ev_fork_init (ev_signal *, callback)"
2175     Initialises and configures the fork watcher \- it has no parameters of any
2176     kind. There is a \f(CW\*(C`ev_fork_set\*(C'\fR macro, but using it is utterly pointless,
2177     believe me.
2178 root 1.1 .SH "OTHER FUNCTIONS"
2179     .IX Header "OTHER FUNCTIONS"
2180     There are some other functions of possible interest. Described. Here. Now.
2181     .IP "ev_once (loop, int fd, int events, ev_tstamp timeout, callback)" 4
2182     .IX Item "ev_once (loop, int fd, int events, ev_tstamp timeout, callback)"
2183     This function combines a simple timer and an I/O watcher, calls your
2184     callback on whichever event happens first and automatically stop both
2185     watchers. This is useful if you want to wait for a single event on an fd
2186     or timeout without having to allocate/configure/start/stop/free one or
2187     more watchers yourself.
2188     .Sp
2189     If \f(CW\*(C`fd\*(C'\fR is less than 0, then no I/O watcher will be started and events
2190     is being ignored. Otherwise, an \f(CW\*(C`ev_io\*(C'\fR watcher for the given \f(CW\*(C`fd\*(C'\fR and
2191     \&\f(CW\*(C`events\*(C'\fR set will be craeted and started.
2192     .Sp
2193     If \f(CW\*(C`timeout\*(C'\fR is less than 0, then no timeout watcher will be
2194     started. Otherwise an \f(CW\*(C`ev_timer\*(C'\fR watcher with after = \f(CW\*(C`timeout\*(C'\fR (and
2195     repeat = 0) will be started. While \f(CW0\fR is a valid timeout, it is of
2196     dubious value.
2197     .Sp
2198     The callback has the type \f(CW\*(C`void (*cb)(int revents, void *arg)\*(C'\fR and gets
2199     passed an \f(CW\*(C`revents\*(C'\fR set like normal event callbacks (a combination of
2200     \&\f(CW\*(C`EV_ERROR\*(C'\fR, \f(CW\*(C`EV_READ\*(C'\fR, \f(CW\*(C`EV_WRITE\*(C'\fR or \f(CW\*(C`EV_TIMEOUT\*(C'\fR) and the \f(CW\*(C`arg\*(C'\fR
2201     value passed to \f(CW\*(C`ev_once\*(C'\fR:
2202     .Sp
2203     .Vb 7
2204     \& static void stdin_ready (int revents, void *arg)
2205     \& {
2206     \& if (revents & EV_TIMEOUT)
2207     \& /* doh, nothing entered */;
2208     \& else if (revents & EV_READ)
2209     \& /* stdin might have data for us, joy! */;
2210     \& }
2211 root 1.60 \&
2212 root 1.1 \& ev_once (STDIN_FILENO, EV_READ, 10., stdin_ready, 0);
2213     .Ve
2214 root 1.11 .IP "ev_feed_event (ev_loop *, watcher *, int revents)" 4
2215     .IX Item "ev_feed_event (ev_loop *, watcher *, int revents)"
2216 root 1.1 Feeds the given event set into the event loop, as if the specified event
2217     had happened for the specified watcher (which must be a pointer to an
2218     initialised but not necessarily started event watcher).
2219 root 1.11 .IP "ev_feed_fd_event (ev_loop *, int fd, int revents)" 4
2220     .IX Item "ev_feed_fd_event (ev_loop *, int fd, int revents)"
2221 root 1.1 Feed an event on the given fd, as if a file descriptor backend detected
2222     the given events it.
2223 root 1.11 .IP "ev_feed_signal_event (ev_loop *loop, int signum)" 4
2224     .IX Item "ev_feed_signal_event (ev_loop *loop, int signum)"
2225     Feed an event as if the given signal occured (\f(CW\*(C`loop\*(C'\fR must be the default
2226     loop!).
2227 root 1.1 .SH "LIBEVENT EMULATION"
2228     .IX Header "LIBEVENT EMULATION"
2229     Libev offers a compatibility emulation layer for libevent. It cannot
2230     emulate the internals of libevent, so here are some usage hints:
2231 root 1.60 .IP "\(bu" 4
2232     Use it by including <event.h>, as usual.
2233     .IP "\(bu" 4
2234     The following members are fully supported: ev_base, ev_callback,
2235     ev_arg, ev_fd, ev_res, ev_events.
2236     .IP "\(bu" 4
2237     Avoid using ev_flags and the EVLIST_*\-macros, while it is
2238     maintained by libev, it does not work exactly the same way as in libevent (consider
2239     it a private \s-1API\s0).
2240     .IP "\(bu" 4
2241     Priorities are not currently supported. Initialising priorities
2242     will fail and all watchers will have the same priority, even though there
2243     is an ev_pri field.
2244     .IP "\(bu" 4
2245     Other members are not supported.
2246     .IP "\(bu" 4
2247     The libev emulation is \fInot\fR \s-1ABI\s0 compatible to libevent, you need
2248     to use the libev header file and library.
2249 root 1.1 .SH "\*(C+ SUPPORT"
2250     .IX Header " SUPPORT"
2251 root 1.13 Libev comes with some simplistic wrapper classes for \*(C+ that mainly allow
2252     you to use some convinience methods to start/stop watchers and also change
2253     the callback model to a model using method callbacks on objects.
2254     .PP
2255     To use it,
2256     .PP
2257     .Vb 1
2258     \& #include <ev++.h>
2259     .Ve
2260     .PP
2261 root 1.41 This automatically includes \fIev.h\fR and puts all of its definitions (many
2262     of them macros) into the global namespace. All \*(C+ specific things are
2263     put into the \f(CW\*(C`ev\*(C'\fR namespace. It should support all the same embedding
2264     options as \fIev.h\fR, most notably \f(CW\*(C`EV_MULTIPLICITY\*(C'\fR.
2265     .PP
2266 root 1.42 Care has been taken to keep the overhead low. The only data member the \*(C+
2267     classes add (compared to plain C\-style watchers) is the event loop pointer
2268     that the watcher is associated with (or no additional members at all if
2269     you disable \f(CW\*(C`EV_MULTIPLICITY\*(C'\fR when embedding libev).
2270 root 1.41 .PP
2271 root 1.42 Currently, functions, and static and non-static member functions can be
2272 root 1.41 used as callbacks. Other types should be easy to add as long as they only
2273     need one additional pointer for context. If you need support for other
2274     types of functors please contact the author (preferably after implementing
2275     it).
2276 root 1.13 .PP
2277     Here is a list of things available in the \f(CW\*(C`ev\*(C'\fR namespace:
2278     .ie n .IP """ev::READ""\fR, \f(CW""ev::WRITE"" etc." 4
2279     .el .IP "\f(CWev::READ\fR, \f(CWev::WRITE\fR etc." 4
2280     .IX Item "ev::READ, ev::WRITE etc."
2281     These are just enum values with the same values as the \f(CW\*(C`EV_READ\*(C'\fR etc.
2282     macros from \fIev.h\fR.
2283     .ie n .IP """ev::tstamp""\fR, \f(CW""ev::now""" 4
2284     .el .IP "\f(CWev::tstamp\fR, \f(CWev::now\fR" 4
2285     .IX Item "ev::tstamp, ev::now"
2286     Aliases to the same types/functions as with the \f(CW\*(C`ev_\*(C'\fR prefix.
2287     .ie n .IP """ev::io""\fR, \f(CW""ev::timer""\fR, \f(CW""ev::periodic""\fR, \f(CW""ev::idle""\fR, \f(CW""ev::sig"" etc." 4
2288     .el .IP "\f(CWev::io\fR, \f(CWev::timer\fR, \f(CWev::periodic\fR, \f(CWev::idle\fR, \f(CWev::sig\fR etc." 4
2289     .IX Item "ev::io, ev::timer, ev::periodic, ev::idle, ev::sig etc."
2290     For each \f(CW\*(C`ev_TYPE\*(C'\fR watcher in \fIev.h\fR there is a corresponding class of
2291     the same name in the \f(CW\*(C`ev\*(C'\fR namespace, with the exception of \f(CW\*(C`ev_signal\*(C'\fR
2292     which is called \f(CW\*(C`ev::sig\*(C'\fR to avoid clashes with the \f(CW\*(C`signal\*(C'\fR macro
2293     defines by many implementations.
2294     .Sp
2295     All of those classes have these methods:
2296     .RS 4
2297 root 1.41 .IP "ev::TYPE::TYPE ()" 4
2298     .IX Item "ev::TYPE::TYPE ()"
2299 root 1.13 .PD 0
2300 root 1.41 .IP "ev::TYPE::TYPE (struct ev_loop *)" 4
2301     .IX Item "ev::TYPE::TYPE (struct ev_loop *)"
2302 root 1.13 .IP "ev::TYPE::~TYPE" 4
2303     .IX Item "ev::TYPE::~TYPE"
2304     .PD
2305 root 1.41 The constructor (optionally) takes an event loop to associate the watcher
2306     with. If it is omitted, it will use \f(CW\*(C`EV_DEFAULT\*(C'\fR.
2307     .Sp
2308     The constructor calls \f(CW\*(C`ev_init\*(C'\fR for you, which means you have to call the
2309     \&\f(CW\*(C`set\*(C'\fR method before starting it.
2310     .Sp
2311     It will not set a callback, however: You have to call the templated \f(CW\*(C`set\*(C'\fR
2312     method to set a callback before you can start the watcher.
2313     .Sp
2314     (The reason why you have to use a method is a limitation in \*(C+ which does
2315     not allow explicit template arguments for constructors).
2316 root 1.13 .Sp
2317     The destructor automatically stops the watcher if it is active.
2318 root 1.41 .IP "w\->set<class, &class::method> (object *)" 4
2319     .IX Item "w->set<class, &class::method> (object *)"
2320     This method sets the callback method to call. The method has to have a
2321     signature of \f(CW\*(C`void (*)(ev_TYPE &, int)\*(C'\fR, it receives the watcher as
2322     first argument and the \f(CW\*(C`revents\*(C'\fR as second. The object must be given as
2323     parameter and is stored in the \f(CW\*(C`data\*(C'\fR member of the watcher.
2324     .Sp
2325     This method synthesizes efficient thunking code to call your method from
2326     the C callback that libev requires. If your compiler can inline your
2327     callback (i.e. it is visible to it at the place of the \f(CW\*(C`set\*(C'\fR call and
2328     your compiler is good :), then the method will be fully inlined into the
2329     thunking function, making it as fast as a direct C callback.
2330     .Sp
2331     Example: simple class declaration and watcher initialisation
2332     .Sp
2333     .Vb 4
2334     \& struct myclass
2335     \& {
2336     \& void io_cb (ev::io &w, int revents) { }
2337     \& }
2338 root 1.60 \&
2339 root 1.41 \& myclass obj;
2340     \& ev::io iow;
2341     \& iow.set <myclass, &myclass::io_cb> (&obj);
2342     .Ve
2343 root 1.43 .IP "w\->set<function> (void *data = 0)" 4
2344     .IX Item "w->set<function> (void *data = 0)"
2345 root 1.41 Also sets a callback, but uses a static method or plain function as
2346     callback. The optional \f(CW\*(C`data\*(C'\fR argument will be stored in the watcher's
2347     \&\f(CW\*(C`data\*(C'\fR member and is free for you to use.
2348     .Sp
2349 root 1.43 The prototype of the \f(CW\*(C`function\*(C'\fR must be \f(CW\*(C`void (*)(ev::TYPE &w, int)\*(C'\fR.
2350     .Sp
2351 root 1.41 See the method\-\f(CW\*(C`set\*(C'\fR above for more details.
2352 root 1.43 .Sp
2353     Example:
2354     .Sp
2355     .Vb 2
2356     \& static void io_cb (ev::io &w, int revents) { }
2357     \& iow.set <io_cb> ();
2358     .Ve
2359 root 1.13 .IP "w\->set (struct ev_loop *)" 4
2360     .IX Item "w->set (struct ev_loop *)"
2361     Associates a different \f(CW\*(C`struct ev_loop\*(C'\fR with this watcher. You can only
2362     do this when the watcher is inactive (and not pending either).
2363     .IP "w\->set ([args])" 4
2364     .IX Item "w->set ([args])"
2365     Basically the same as \f(CW\*(C`ev_TYPE_set\*(C'\fR, with the same args. Must be
2366 root 1.41 called at least once. Unlike the C counterpart, an active watcher gets
2367     automatically stopped and restarted when reconfiguring it with this
2368     method.
2369 root 1.13 .IP "w\->start ()" 4
2370     .IX Item "w->start ()"
2371 root 1.41 Starts the watcher. Note that there is no \f(CW\*(C`loop\*(C'\fR argument, as the
2372     constructor already stores the event loop.
2373 root 1.13 .IP "w\->stop ()" 4
2374     .IX Item "w->stop ()"
2375     Stops the watcher if it is active. Again, no \f(CW\*(C`loop\*(C'\fR argument.
2376 root 1.52 .ie n .IP "w\->again () (""ev::timer""\fR, \f(CW""ev::periodic"" only)" 4
2377     .el .IP "w\->again () (\f(CWev::timer\fR, \f(CWev::periodic\fR only)" 4
2378     .IX Item "w->again () (ev::timer, ev::periodic only)"
2379 root 1.13 For \f(CW\*(C`ev::timer\*(C'\fR and \f(CW\*(C`ev::periodic\*(C'\fR, this invokes the corresponding
2380     \&\f(CW\*(C`ev_TYPE_again\*(C'\fR function.
2381 root 1.52 .ie n .IP "w\->sweep () (""ev::embed"" only)" 4
2382     .el .IP "w\->sweep () (\f(CWev::embed\fR only)" 4
2383     .IX Item "w->sweep () (ev::embed only)"
2384 root 1.13 Invokes \f(CW\*(C`ev_embed_sweep\*(C'\fR.
2385 root 1.52 .ie n .IP "w\->update () (""ev::stat"" only)" 4
2386     .el .IP "w\->update () (\f(CWev::stat\fR only)" 4
2387     .IX Item "w->update () (ev::stat only)"
2388 root 1.23 Invokes \f(CW\*(C`ev_stat_stat\*(C'\fR.
2389 root 1.13 .RE
2390     .RS 4
2391     .RE
2392     .PP
2393     Example: Define a class with an \s-1IO\s0 and idle watcher, start one of them in
2394     the constructor.
2395     .PP
2396     .Vb 4
2397     \& class myclass
2398     \& {
2399 root 1.60 \& ev::io io; void io_cb (ev::io &w, int revents);
2400     \& ev:idle idle void idle_cb (ev::idle &w, int revents);
2401     \&
2402     \& myclass (int fd)
2403     \& {
2404     \& io .set <myclass, &myclass::io_cb > (this);
2405     \& idle.set <myclass, &myclass::idle_cb> (this);
2406     \&
2407     \& io.start (fd, ev::READ);
2408     \& }
2409     \& };
2410 root 1.13 .Ve
2411 root 1.24 .SH "MACRO MAGIC"
2412     .IX Header "MACRO MAGIC"
2413 root 1.52 Libev can be compiled with a variety of options, the most fundamantal
2414     of which is \f(CW\*(C`EV_MULTIPLICITY\*(C'\fR. This option determines whether (most)
2415     functions and callbacks have an initial \f(CW\*(C`struct ev_loop *\*(C'\fR argument.
2416 root 1.24 .PP
2417     To make it easier to write programs that cope with either variant, the
2418     following macros are defined:
2419     .ie n .IP """EV_A""\fR, \f(CW""EV_A_""" 4
2420     .el .IP "\f(CWEV_A\fR, \f(CWEV_A_\fR" 4
2421     .IX Item "EV_A, EV_A_"
2422     This provides the loop \fIargument\fR for functions, if one is required (\*(L"ev
2423     loop argument\*(R"). The \f(CW\*(C`EV_A\*(C'\fR form is used when this is the sole argument,
2424     \&\f(CW\*(C`EV_A_\*(C'\fR is used when other arguments are following. Example:
2425     .Sp
2426     .Vb 3
2427     \& ev_unref (EV_A);
2428     \& ev_timer_add (EV_A_ watcher);
2429     \& ev_loop (EV_A_ 0);
2430     .Ve
2431     .Sp
2432     It assumes the variable \f(CW\*(C`loop\*(C'\fR of type \f(CW\*(C`struct ev_loop *\*(C'\fR is in scope,
2433     which is often provided by the following macro.
2434     .ie n .IP """EV_P""\fR, \f(CW""EV_P_""" 4
2435     .el .IP "\f(CWEV_P\fR, \f(CWEV_P_\fR" 4
2436     .IX Item "EV_P, EV_P_"
2437     This provides the loop \fIparameter\fR for functions, if one is required (\*(L"ev
2438     loop parameter\*(R"). The \f(CW\*(C`EV_P\*(C'\fR form is used when this is the sole parameter,
2439     \&\f(CW\*(C`EV_P_\*(C'\fR is used when other parameters are following. Example:
2440     .Sp
2441     .Vb 2
2442     \& // this is how ev_unref is being declared
2443     \& static void ev_unref (EV_P);
2444 root 1.60 \&
2445 root 1.24 \& // this is how you can declare your typical callback
2446     \& static void cb (EV_P_ ev_timer *w, int revents)
2447     .Ve
2448     .Sp
2449     It declares a parameter \f(CW\*(C`loop\*(C'\fR of type \f(CW\*(C`struct ev_loop *\*(C'\fR, quite
2450     suitable for use with \f(CW\*(C`EV_A\*(C'\fR.
2451     .ie n .IP """EV_DEFAULT""\fR, \f(CW""EV_DEFAULT_""" 4
2452     .el .IP "\f(CWEV_DEFAULT\fR, \f(CWEV_DEFAULT_\fR" 4
2453     .IX Item "EV_DEFAULT, EV_DEFAULT_"
2454     Similar to the other two macros, this gives you the value of the default
2455     loop, if multiple loops are supported (\*(L"ev loop default\*(R").
2456     .PP
2457 root 1.36 Example: Declare and initialise a check watcher, utilising the above
2458 root 1.38 macros so it will work regardless of whether multiple loops are supported
2459 root 1.36 or not.
2460 root 1.24 .PP
2461     .Vb 5
2462     \& static void
2463     \& check_cb (EV_P_ ev_timer *w, int revents)
2464     \& {
2465     \& ev_check_stop (EV_A_ w);
2466     \& }
2467 root 1.60 \&
2468 root 1.24 \& ev_check check;
2469     \& ev_check_init (&check, check_cb);
2470     \& ev_check_start (EV_DEFAULT_ &check);
2471     \& ev_loop (EV_DEFAULT_ 0);
2472     .Ve
2473 root 1.14 .SH "EMBEDDING"
2474     .IX Header "EMBEDDING"
2475     Libev can (and often is) directly embedded into host
2476     applications. Examples of applications that embed it include the Deliantra
2477     Game Server, the \s-1EV\s0 perl module, the \s-1GNU\s0 Virtual Private Ethernet (gvpe)
2478 root 1.60 and rxvt-unicode.
2479 root 1.14 .PP
2480 root 1.54 The goal is to enable you to just copy the necessary files into your
2481 root 1.14 source directory without having to change even a single line in them, so
2482     you can easily upgrade by simply copying (or having a checked-out copy of
2483     libev somewhere in your source tree).
2484     .Sh "\s-1FILESETS\s0"
2485     .IX Subsection "FILESETS"
2486     Depending on what features you need you need to include one or more sets of files
2487     in your app.
2488     .PP
2489     \fI\s-1CORE\s0 \s-1EVENT\s0 \s-1LOOP\s0\fR
2490     .IX Subsection "CORE EVENT LOOP"
2491     .PP
2492     To include only the libev core (all the \f(CW\*(C`ev_*\*(C'\fR functions), with manual
2493     configuration (no autoconf):
2494     .PP
2495     .Vb 2
2496     \& #define EV_STANDALONE 1
2497     \& #include "ev.c"
2498     .Ve
2499     .PP
2500     This will automatically include \fIev.h\fR, too, and should be done in a
2501     single C source file only to provide the function implementations. To use
2502     it, do the same for \fIev.h\fR in all files wishing to use this \s-1API\s0 (best
2503     done by writing a wrapper around \fIev.h\fR that you can include instead and
2504     where you can put other configuration options):
2505     .PP
2506     .Vb 2
2507     \& #define EV_STANDALONE 1
2508     \& #include "ev.h"
2509     .Ve
2510     .PP
2511     Both header files and implementation files can be compiled with a \*(C+
2512     compiler (at least, thats a stated goal, and breakage will be treated
2513     as a bug).
2514     .PP
2515     You need the following files in your source tree, or in a directory
2516     in your include path (e.g. in libev/ when using \-Ilibev):
2517     .PP
2518     .Vb 4
2519     \& ev.h
2520     \& ev.c
2521     \& ev_vars.h
2522     \& ev_wrap.h
2523 root 1.60 \&
2524 root 1.14 \& ev_win32.c required on win32 platforms only
2525 root 1.60 \&
2526 root 1.36 \& ev_select.c only when select backend is enabled (which is enabled by default)
2527 root 1.14 \& ev_poll.c only when poll backend is enabled (disabled by default)
2528     \& ev_epoll.c only when the epoll backend is enabled (disabled by default)
2529     \& ev_kqueue.c only when the kqueue backend is enabled (disabled by default)
2530     \& ev_port.c only when the solaris port backend is enabled (disabled by default)
2531     .Ve
2532     .PP
2533     \&\fIev.c\fR includes the backend files directly when enabled, so you only need
2534 root 1.18 to compile this single file.
2535 root 1.14 .PP
2536     \fI\s-1LIBEVENT\s0 \s-1COMPATIBILITY\s0 \s-1API\s0\fR
2537     .IX Subsection "LIBEVENT COMPATIBILITY API"
2538     .PP
2539     To include the libevent compatibility \s-1API\s0, also include:
2540     .PP
2541     .Vb 1
2542     \& #include "event.c"
2543     .Ve
2544     .PP
2545     in the file including \fIev.c\fR, and:
2546     .PP
2547     .Vb 1
2548     \& #include "event.h"
2549     .Ve
2550     .PP
2551     in the files that want to use the libevent \s-1API\s0. This also includes \fIev.h\fR.
2552     .PP
2553     You need the following additional files for this:
2554     .PP
2555     .Vb 2
2556     \& event.h
2557     \& event.c
2558     .Ve
2559     .PP
2560     \fI\s-1AUTOCONF\s0 \s-1SUPPORT\s0\fR
2561     .IX Subsection "AUTOCONF SUPPORT"
2562     .PP
2563     Instead of using \f(CW\*(C`EV_STANDALONE=1\*(C'\fR and providing your config in
2564     whatever way you want, you can also \f(CW\*(C`m4_include([libev.m4])\*(C'\fR in your
2565 root 1.18 \&\fIconfigure.ac\fR and leave \f(CW\*(C`EV_STANDALONE\*(C'\fR undefined. \fIev.c\fR will then
2566     include \fIconfig.h\fR and configure itself accordingly.
2567 root 1.14 .PP
2568     For this of course you need the m4 file:
2569     .PP
2570     .Vb 1
2571     \& libev.m4
2572     .Ve
2573     .Sh "\s-1PREPROCESSOR\s0 \s-1SYMBOLS/MACROS\s0"
2574     .IX Subsection "PREPROCESSOR SYMBOLS/MACROS"
2575     Libev can be configured via a variety of preprocessor symbols you have to define
2576     before including any of its files. The default is not to build for multiplicity
2577     and only include the select backend.
2578     .IP "\s-1EV_STANDALONE\s0" 4
2579     .IX Item "EV_STANDALONE"
2580     Must always be \f(CW1\fR if you do not use autoconf configuration, which
2581     keeps libev from including \fIconfig.h\fR, and it also defines dummy
2582     implementations for some libevent functions (such as logging, which is not
2583     supported). It will also not define any of the structs usually found in
2584     \&\fIevent.h\fR that are not directly supported by the libev core alone.
2585     .IP "\s-1EV_USE_MONOTONIC\s0" 4
2586     .IX Item "EV_USE_MONOTONIC"
2587     If defined to be \f(CW1\fR, libev will try to detect the availability of the
2588     monotonic clock option at both compiletime and runtime. Otherwise no use
2589     of the monotonic clock option will be attempted. If you enable this, you
2590     usually have to link against librt or something similar. Enabling it when
2591 root 1.54 the functionality isn't available is safe, though, although you have
2592 root 1.14 to make sure you link against any libraries where the \f(CW\*(C`clock_gettime\*(C'\fR
2593     function is hiding in (often \fI\-lrt\fR).
2594     .IP "\s-1EV_USE_REALTIME\s0" 4
2595     .IX Item "EV_USE_REALTIME"
2596     If defined to be \f(CW1\fR, libev will try to detect the availability of the
2597     realtime clock option at compiletime (and assume its availability at
2598     runtime if successful). Otherwise no use of the realtime clock option will
2599     be attempted. This effectively replaces \f(CW\*(C`gettimeofday\*(C'\fR by \f(CW\*(C`clock_get
2600 root 1.54 (CLOCK_REALTIME, ...)\*(C'\fR and will not normally affect correctness. See the
2601     note about libraries in the description of \f(CW\*(C`EV_USE_MONOTONIC\*(C'\fR, though.
2602 root 1.56 .IP "\s-1EV_USE_NANOSLEEP\s0" 4
2603     .IX Item "EV_USE_NANOSLEEP"
2604     If defined to be \f(CW1\fR, libev will assume that \f(CW\*(C`nanosleep ()\*(C'\fR is available
2605     and will use it for delays. Otherwise it will use \f(CW\*(C`select ()\*(C'\fR.
2606 root 1.14 .IP "\s-1EV_USE_SELECT\s0" 4
2607     .IX Item "EV_USE_SELECT"
2608     If undefined or defined to be \f(CW1\fR, libev will compile in support for the
2609     \&\f(CW\*(C`select\*(C'\fR(2) backend. No attempt at autodetection will be done: if no
2610     other method takes over, select will be it. Otherwise the select backend
2611     will not be compiled in.
2612     .IP "\s-1EV_SELECT_USE_FD_SET\s0" 4
2613     .IX Item "EV_SELECT_USE_FD_SET"
2614     If defined to \f(CW1\fR, then the select backend will use the system \f(CW\*(C`fd_set\*(C'\fR
2615     structure. This is useful if libev doesn't compile due to a missing
2616     \&\f(CW\*(C`NFDBITS\*(C'\fR or \f(CW\*(C`fd_mask\*(C'\fR definition or it misguesses the bitset layout on
2617     exotic systems. This usually limits the range of file descriptors to some
2618     low limit such as 1024 or might have other limitations (winsocket only
2619     allows 64 sockets). The \f(CW\*(C`FD_SETSIZE\*(C'\fR macro, set before compilation, might
2620     influence the size of the \f(CW\*(C`fd_set\*(C'\fR used.
2621     .IP "\s-1EV_SELECT_IS_WINSOCKET\s0" 4
2622     .IX Item "EV_SELECT_IS_WINSOCKET"
2623     When defined to \f(CW1\fR, the select backend will assume that
2624     select/socket/connect etc. don't understand file descriptors but
2625     wants osf handles on win32 (this is the case when the select to
2626     be used is the winsock select). This means that it will call
2627     \&\f(CW\*(C`_get_osfhandle\*(C'\fR on the fd to convert it to an \s-1OS\s0 handle. Otherwise,
2628     it is assumed that all these functions actually work on fds, even
2629     on win32. Should not be defined on non\-win32 platforms.
2630 root 1.60 .IP "\s-1EV_FD_TO_WIN32_HANDLE\s0" 4
2631     .IX Item "EV_FD_TO_WIN32_HANDLE"
2632     If \f(CW\*(C`EV_SELECT_IS_WINSOCKET\*(C'\fR is enabled, then libev needs a way to map
2633     file descriptors to socket handles. When not defining this symbol (the
2634     default), then libev will call \f(CW\*(C`_get_osfhandle\*(C'\fR, which is usually
2635     correct. In some cases, programs use their own file descriptor management,
2636     in which case they can provide this function to map fds to socket handles.
2637 root 1.14 .IP "\s-1EV_USE_POLL\s0" 4
2638     .IX Item "EV_USE_POLL"
2639     If defined to be \f(CW1\fR, libev will compile in support for the \f(CW\*(C`poll\*(C'\fR(2)
2640     backend. Otherwise it will be enabled on non\-win32 platforms. It
2641     takes precedence over select.
2642     .IP "\s-1EV_USE_EPOLL\s0" 4
2643     .IX Item "EV_USE_EPOLL"
2644     If defined to be \f(CW1\fR, libev will compile in support for the Linux
2645     \&\f(CW\*(C`epoll\*(C'\fR(7) backend. Its availability will be detected at runtime,
2646     otherwise another method will be used as fallback. This is the
2647     preferred backend for GNU/Linux systems.
2648     .IP "\s-1EV_USE_KQUEUE\s0" 4
2649     .IX Item "EV_USE_KQUEUE"
2650     If defined to be \f(CW1\fR, libev will compile in support for the \s-1BSD\s0 style
2651     \&\f(CW\*(C`kqueue\*(C'\fR(2) backend. Its actual availability will be detected at runtime,
2652     otherwise another method will be used as fallback. This is the preferred
2653     backend for \s-1BSD\s0 and BSD-like systems, although on most BSDs kqueue only
2654     supports some types of fds correctly (the only platform we found that
2655     supports ptys for example was NetBSD), so kqueue might be compiled in, but
2656     not be used unless explicitly requested. The best way to use it is to find
2657 root 1.16 out whether kqueue supports your type of fd properly and use an embedded
2658 root 1.14 kqueue loop.
2659     .IP "\s-1EV_USE_PORT\s0" 4
2660     .IX Item "EV_USE_PORT"
2661     If defined to be \f(CW1\fR, libev will compile in support for the Solaris
2662     10 port style backend. Its availability will be detected at runtime,
2663     otherwise another method will be used as fallback. This is the preferred
2664     backend for Solaris 10 systems.
2665     .IP "\s-1EV_USE_DEVPOLL\s0" 4
2666     .IX Item "EV_USE_DEVPOLL"
2667     reserved for future expansion, works like the \s-1USE\s0 symbols above.
2668 root 1.30 .IP "\s-1EV_USE_INOTIFY\s0" 4
2669     .IX Item "EV_USE_INOTIFY"
2670     If defined to be \f(CW1\fR, libev will compile in support for the Linux inotify
2671     interface to speed up \f(CW\*(C`ev_stat\*(C'\fR watchers. Its actual availability will
2672     be detected at runtime.
2673 root 1.14 .IP "\s-1EV_H\s0" 4
2674     .IX Item "EV_H"
2675     The name of the \fIev.h\fR header file used to include it. The default if
2676 root 1.60 undefined is \f(CW"ev.h"\fR in \fIevent.h\fR, \fIev.c\fR and \fIev++.h\fR. This can be
2677     used to virtually rename the \fIev.h\fR header file in case of conflicts.
2678 root 1.14 .IP "\s-1EV_CONFIG_H\s0" 4
2679     .IX Item "EV_CONFIG_H"
2680     If \f(CW\*(C`EV_STANDALONE\*(C'\fR isn't \f(CW1\fR, this variable can be used to override
2681     \&\fIev.c\fR's idea of where to find the \fIconfig.h\fR file, similarly to
2682     \&\f(CW\*(C`EV_H\*(C'\fR, above.
2683     .IP "\s-1EV_EVENT_H\s0" 4
2684     .IX Item "EV_EVENT_H"
2685     Similarly to \f(CW\*(C`EV_H\*(C'\fR, this macro can be used to override \fIevent.c\fR's idea
2686 root 1.60 of how the \fIevent.h\fR header can be found, the default is \f(CW"event.h"\fR.
2687 root 1.14 .IP "\s-1EV_PROTOTYPES\s0" 4
2688     .IX Item "EV_PROTOTYPES"
2689     If defined to be \f(CW0\fR, then \fIev.h\fR will not define any function
2690     prototypes, but still define all the structs and other symbols. This is
2691     occasionally useful if you want to provide your own wrapper functions
2692     around libev functions.
2693     .IP "\s-1EV_MULTIPLICITY\s0" 4
2694     .IX Item "EV_MULTIPLICITY"
2695     If undefined or defined to \f(CW1\fR, then all event-loop-specific functions
2696     will have the \f(CW\*(C`struct ev_loop *\*(C'\fR as first argument, and you can create
2697     additional independent event loops. Otherwise there will be no support
2698     for multiple event loops and there is no first event loop pointer
2699     argument. Instead, all functions act on the single default loop.
2700 root 1.39 .IP "\s-1EV_MINPRI\s0" 4
2701     .IX Item "EV_MINPRI"
2702     .PD 0
2703     .IP "\s-1EV_MAXPRI\s0" 4
2704     .IX Item "EV_MAXPRI"
2705     .PD
2706     The range of allowed priorities. \f(CW\*(C`EV_MINPRI\*(C'\fR must be smaller or equal to
2707     \&\f(CW\*(C`EV_MAXPRI\*(C'\fR, but otherwise there are no non-obvious limitations. You can
2708     provide for more priorities by overriding those symbols (usually defined
2709     to be \f(CW\*(C`\-2\*(C'\fR and \f(CW2\fR, respectively).
2710     .Sp
2711     When doing priority-based operations, libev usually has to linearly search
2712     all the priorities, so having many of them (hundreds) uses a lot of space
2713     and time, so using the defaults of five priorities (\-2 .. +2) is usually
2714     fine.
2715     .Sp
2716     If your embedding app does not need any priorities, defining these both to
2717     \&\f(CW0\fR will save some memory and cpu.
2718 root 1.22 .IP "\s-1EV_PERIODIC_ENABLE\s0" 4
2719     .IX Item "EV_PERIODIC_ENABLE"
2720     If undefined or defined to be \f(CW1\fR, then periodic timers are supported. If
2721     defined to be \f(CW0\fR, then they are not. Disabling them saves a few kB of
2722     code.
2723 root 1.37 .IP "\s-1EV_IDLE_ENABLE\s0" 4
2724     .IX Item "EV_IDLE_ENABLE"
2725     If undefined or defined to be \f(CW1\fR, then idle watchers are supported. If
2726     defined to be \f(CW0\fR, then they are not. Disabling them saves a few kB of
2727     code.
2728 root 1.22 .IP "\s-1EV_EMBED_ENABLE\s0" 4
2729     .IX Item "EV_EMBED_ENABLE"
2730     If undefined or defined to be \f(CW1\fR, then embed watchers are supported. If
2731     defined to be \f(CW0\fR, then they are not.
2732     .IP "\s-1EV_STAT_ENABLE\s0" 4
2733     .IX Item "EV_STAT_ENABLE"
2734     If undefined or defined to be \f(CW1\fR, then stat watchers are supported. If
2735     defined to be \f(CW0\fR, then they are not.
2736 root 1.24 .IP "\s-1EV_FORK_ENABLE\s0" 4
2737     .IX Item "EV_FORK_ENABLE"
2738     If undefined or defined to be \f(CW1\fR, then fork watchers are supported. If
2739     defined to be \f(CW0\fR, then they are not.
2740 root 1.22 .IP "\s-1EV_MINIMAL\s0" 4
2741     .IX Item "EV_MINIMAL"
2742     If you need to shave off some kilobytes of code at the expense of some
2743     speed, define this symbol to \f(CW1\fR. Currently only used for gcc to override
2744     some inlining decisions, saves roughly 30% codesize of amd64.
2745 root 1.25 .IP "\s-1EV_PID_HASHSIZE\s0" 4
2746     .IX Item "EV_PID_HASHSIZE"
2747     \&\f(CW\*(C`ev_child\*(C'\fR watchers use a small hash table to distribute workload by
2748     pid. The default size is \f(CW16\fR (or \f(CW1\fR with \f(CW\*(C`EV_MINIMAL\*(C'\fR), usually more
2749     than enough. If you need to manage thousands of children you might want to
2750 root 1.30 increase this value (\fImust\fR be a power of two).
2751     .IP "\s-1EV_INOTIFY_HASHSIZE\s0" 4
2752     .IX Item "EV_INOTIFY_HASHSIZE"
2753 root 1.59 \&\f(CW\*(C`ev_stat\*(C'\fR watchers use a small hash table to distribute workload by
2754 root 1.30 inotify watch id. The default size is \f(CW16\fR (or \f(CW1\fR with \f(CW\*(C`EV_MINIMAL\*(C'\fR),
2755     usually more than enough. If you need to manage thousands of \f(CW\*(C`ev_stat\*(C'\fR
2756     watchers you might want to increase this value (\fImust\fR be a power of
2757     two).
2758 root 1.14 .IP "\s-1EV_COMMON\s0" 4
2759     .IX Item "EV_COMMON"
2760     By default, all watchers have a \f(CW\*(C`void *data\*(C'\fR member. By redefining
2761     this macro to a something else you can include more and other types of
2762     members. You have to define it each time you include one of the files,
2763     though, and it must be identical each time.
2764     .Sp
2765     For example, the perl \s-1EV\s0 module uses something like this:
2766     .Sp
2767     .Vb 3
2768     \& #define EV_COMMON \e
2769     \& SV *self; /* contains this struct */ \e
2770     \& SV *cb_sv, *fh /* note no trailing ";" */
2771     .Ve
2772 root 1.19 .IP "\s-1EV_CB_DECLARE\s0 (type)" 4
2773     .IX Item "EV_CB_DECLARE (type)"
2774 root 1.14 .PD 0
2775 root 1.19 .IP "\s-1EV_CB_INVOKE\s0 (watcher, revents)" 4
2776     .IX Item "EV_CB_INVOKE (watcher, revents)"
2777     .IP "ev_set_cb (ev, cb)" 4
2778     .IX Item "ev_set_cb (ev, cb)"
2779 root 1.14 .PD
2780     Can be used to change the callback member declaration in each watcher,
2781     and the way callbacks are invoked and set. Must expand to a struct member
2782 root 1.54 definition and a statement, respectively. See the \fIev.h\fR header file for
2783 root 1.14 their default definitions. One possible use for overriding these is to
2784 root 1.19 avoid the \f(CW\*(C`struct ev_loop *\*(C'\fR as first argument in all cases, or to use
2785     method calls instead of plain function calls in \*(C+.
2786 root 1.53 .Sh "\s-1EXPORTED\s0 \s-1API\s0 \s-1SYMBOLS\s0"
2787     .IX Subsection "EXPORTED API SYMBOLS"
2788     If you need to re-export the \s-1API\s0 (e.g. via a dll) and you need a list of
2789     exported symbols, you can use the provided \fISymbol.*\fR files which list
2790     all public symbols, one per line:
2791 root 1.60 .PP
2792 root 1.53 .Vb 2
2793     \& Symbols.ev for libev proper
2794     \& Symbols.event for the libevent emulation
2795     .Ve
2796 root 1.60 .PP
2797 root 1.53 This can also be used to rename all public symbols to avoid clashes with
2798     multiple versions of libev linked together (which is obviously bad in
2799     itself, but sometimes it is inconvinient to avoid this).
2800 root 1.60 .PP
2801 root 1.54 A sed command like this will create wrapper \f(CW\*(C`#define\*(C'\fR's that you need to
2802 root 1.53 include before including \fIev.h\fR:
2803 root 1.60 .PP
2804 root 1.53 .Vb 1
2805 root 1.60 \& <Symbols.ev sed \-e "s/.*/#define & myprefix_&/" >wrap.h
2806 root 1.53 .Ve
2807 root 1.60 .PP
2808 root 1.53 This would create a file \fIwrap.h\fR which essentially looks like this:
2809 root 1.60 .PP
2810 root 1.53 .Vb 4
2811     \& #define ev_backend myprefix_ev_backend
2812     \& #define ev_check_start myprefix_ev_check_start
2813     \& #define ev_check_stop myprefix_ev_check_stop
2814     \& ...
2815     .Ve
2816 root 1.14 .Sh "\s-1EXAMPLES\s0"
2817     .IX Subsection "EXAMPLES"
2818     For a real-world example of a program the includes libev
2819     verbatim, you can have a look at the \s-1EV\s0 perl module
2820     (<http://software.schmorp.de/pkg/EV.html>). It has the libev files in
2821     the \fIlibev/\fR subdirectory and includes them in the \fI\s-1EV/EVAPI\s0.h\fR (public
2822     interface) and \fI\s-1EV\s0.xs\fR (implementation) files. Only the \fI\s-1EV\s0.xs\fR file
2823     will be compiled. It is pretty complex because it provides its own header
2824     file.
2825 root 1.60 .PP
2826 root 1.14 The usage in rxvt-unicode is simpler. It has a \fIev_cpp.h\fR header file
2827 root 1.36 that everybody includes and which overrides some configure choices:
2828 root 1.60 .PP
2829 root 1.36 .Vb 9
2830     \& #define EV_MINIMAL 1
2831 root 1.15 \& #define EV_USE_POLL 0
2832     \& #define EV_MULTIPLICITY 0
2833 root 1.36 \& #define EV_PERIODIC_ENABLE 0
2834     \& #define EV_STAT_ENABLE 0
2835     \& #define EV_FORK_ENABLE 0
2836 root 1.15 \& #define EV_CONFIG_H <config.h>
2837 root 1.36 \& #define EV_MINPRI 0
2838     \& #define EV_MAXPRI 0
2839 root 1.60 \&
2840 root 1.15 \& #include "ev++.h"
2841 root 1.14 .Ve
2842 root 1.60 .PP
2843 root 1.14 And a \fIev_cpp.C\fR implementation file that contains libev proper and is compiled:
2844 root 1.60 .PP
2845 root 1.14 .Vb 2
2846 root 1.15 \& #include "ev_cpp.h"
2847     \& #include "ev.c"
2848 root 1.14 .Ve
2849 root 1.21 .SH "COMPLEXITIES"
2850     .IX Header "COMPLEXITIES"
2851     In this section the complexities of (many of) the algorithms used inside
2852     libev will be explained. For complexity discussions about backends see the
2853     documentation for \f(CW\*(C`ev_default_init\*(C'\fR.
2854 root 1.60 .PP
2855 root 1.40 All of the following are about amortised time: If an array needs to be
2856     extended, libev needs to realloc and move the whole array, but this
2857     happens asymptotically never with higher number of elements, so O(1) might
2858     mean it might do a lengthy realloc operation in rare cases, but on average
2859     it is much faster and asymptotically approaches constant time.
2860 root 1.21 .IP "Starting and stopping timer/periodic watchers: O(log skipped_other_timers)" 4
2861     .IX Item "Starting and stopping timer/periodic watchers: O(log skipped_other_timers)"
2862 root 1.39 This means that, when you have a watcher that triggers in one hour and
2863     there are 100 watchers that would trigger before that then inserting will
2864 root 1.59 have to skip roughly seven (\f(CW\*(C`ld 100\*(C'\fR) of these watchers.
2865     .IP "Changing timer/periodic watchers (by autorepeat or calling again): O(log skipped_other_timers)" 4
2866     .IX Item "Changing timer/periodic watchers (by autorepeat or calling again): O(log skipped_other_timers)"
2867     That means that changing a timer costs less than removing/adding them
2868 root 1.39 as only the relative motion in the event queue has to be paid for.
2869 root 1.21 .IP "Starting io/check/prepare/idle/signal/child watchers: O(1)" 4
2870     .IX Item "Starting io/check/prepare/idle/signal/child watchers: O(1)"
2871 root 1.40 These just add the watcher into an array or at the head of a list.
2872 root 1.59 .IP "Stopping check/prepare/idle watchers: O(1)" 4
2873     .IX Item "Stopping check/prepare/idle watchers: O(1)"
2874     .PD 0
2875 root 1.30 .IP "Stopping an io/signal/child watcher: O(number_of_watchers_for_this_(fd/signal/pid % \s-1EV_PID_HASHSIZE\s0))" 4
2876     .IX Item "Stopping an io/signal/child watcher: O(number_of_watchers_for_this_(fd/signal/pid % EV_PID_HASHSIZE))"
2877 root 1.59 .PD
2878 root 1.39 These watchers are stored in lists then need to be walked to find the
2879     correct watcher to remove. The lists are usually short (you don't usually
2880     have many watchers waiting for the same fd or signal).
2881 root 1.59 .IP "Finding the next timer in each loop iteration: O(1)" 4
2882     .IX Item "Finding the next timer in each loop iteration: O(1)"
2883     By virtue of using a binary heap, the next timer is always found at the
2884     beginning of the storage array.
2885 root 1.21 .IP "Each change on a file descriptor per loop iteration: O(number_of_watchers_for_this_fd)" 4
2886     .IX Item "Each change on a file descriptor per loop iteration: O(number_of_watchers_for_this_fd)"
2887 root 1.39 A change means an I/O watcher gets started or stopped, which requires
2888 root 1.59 libev to recalculate its status (and possibly tell the kernel, depending
2889     on backend and wether \f(CW\*(C`ev_io_set\*(C'\fR was used).
2890     .IP "Activating one watcher (putting it into the pending state): O(1)" 4
2891     .IX Item "Activating one watcher (putting it into the pending state): O(1)"
2892 root 1.39 .PD 0
2893     .IP "Priority handling: O(number_of_priorities)" 4
2894     .IX Item "Priority handling: O(number_of_priorities)"
2895     .PD
2896     Priorities are implemented by allocating some space for each
2897     priority. When doing priority-based operations, libev usually has to
2898 root 1.59 linearly search all the priorities, but starting/stopping and activating
2899     watchers becomes O(1) w.r.t. prioritiy handling.
2900 root 1.60 .SH "Win32 platform limitations and workarounds"
2901     .IX Header "Win32 platform limitations and workarounds"
2902     Win32 doesn't support any of the standards (e.g. \s-1POSIX\s0) that libev
2903     requires, and its I/O model is fundamentally incompatible with the \s-1POSIX\s0
2904     model. Libev still offers limited functionality on this platform in
2905     the form of the \f(CW\*(C`EVBACKEND_SELECT\*(C'\fR backend, and only supports socket
2906     descriptors. This only applies when using Win32 natively, not when using
2907     e.g. cygwin.
2908     .PP
2909     There is no supported compilation method available on windows except
2910     embedding it into other applications.
2911     .PP
2912     Due to the many, low, and arbitrary limits on the win32 platform and the
2913     abysmal performance of winsockets, using a large number of sockets is not
2914     recommended (and not reasonable). If your program needs to use more than
2915     a hundred or so sockets, then likely it needs to use a totally different
2916     implementation for windows, as libev offers the \s-1POSIX\s0 model, which cannot
2917     be implemented efficiently on windows (microsoft monopoly games).
2918     .IP "The winsocket select function" 4
2919     .IX Item "The winsocket select function"
2920     The winsocket \f(CW\*(C`select\*(C'\fR function doesn't follow \s-1POSIX\s0 in that it requires
2921     socket \fIhandles\fR and not socket \fIfile descriptors\fR. This makes select
2922     very inefficient, and also requires a mapping from file descriptors
2923     to socket handles. See the discussion of the \f(CW\*(C`EV_SELECT_USE_FD_SET\*(C'\fR,
2924     \&\f(CW\*(C`EV_SELECT_IS_WINSOCKET\*(C'\fR and \f(CW\*(C`EV_FD_TO_WIN32_HANDLE\*(C'\fR preprocessor
2925     symbols for more info.
2926     .Sp
2927     The configuration for a \*(L"naked\*(R" win32 using the microsoft runtime
2928     libraries and raw winsocket select is:
2929     .Sp
2930     .Vb 2
2931     \& #define EV_USE_SELECT 1
2932     \& #define EV_SELECT_IS_WINSOCKET 1 /* forces EV_SELECT_USE_FD_SET, too */
2933     .Ve
2934     .Sp
2935     Note that winsockets handling of fd sets is O(n), so you can easily get a
2936     complexity in the O(nA\*^X) range when using win32.
2937     .IP "Limited number of file descriptors" 4
2938     .IX Item "Limited number of file descriptors"
2939     Windows has numerous arbitrary (and low) limits on things. Early versions
2940     of winsocket's select only supported waiting for a max. of \f(CW64\fR handles
2941     (probably owning to the fact that all windows kernels can only wait for
2942     \&\f(CW64\fR things at the same time internally; microsoft recommends spawning a
2943     chain of threads and wait for 63 handles and the previous thread in each).
2944     .Sp
2945     Newer versions support more handles, but you need to define \f(CW\*(C`FD_SETSIZE\*(C'\fR
2946     to some high number (e.g. \f(CW2048\fR) before compiling the winsocket select
2947     call (which might be in libev or elsewhere, for example, perl does its own
2948     select emulation on windows).
2949     .Sp
2950     Another limit is the number of file descriptors in the microsoft runtime
2951     libraries, which by default is \f(CW64\fR (there must be a hidden \fI64\fR fetish
2952     or something like this inside microsoft). You can increase this by calling
2953     \&\f(CW\*(C`_setmaxstdio\*(C'\fR, which can increase this limit to \f(CW2048\fR (another
2954     arbitrary limit), but is broken in many versions of the microsoft runtime
2955     libraries.
2956     .Sp
2957     This might get you to about \f(CW512\fR or \f(CW2048\fR sockets (depending on
2958     windows version and/or the phase of the moon). To get more, you need to
2959     wrap all I/O functions and provide your own fd management, but the cost of
2960     calling select (O(nA\*^X)) will likely make this unworkable.
2961 root 1.1 .SH "AUTHOR"
2962     .IX Header "AUTHOR"
2963     Marc Lehmann <libev@schmorp.de>.
2964 root 1.60 .SH "POD ERRORS"
2965     .IX Header "POD ERRORS"
2966     Hey! \fBThe above document had some coding errors, which are explained below:\fR
2967     .IP "Around line 2686:" 4
2968     .IX Item "Around line 2686:"
2969     You forgot a '=back' before '=head2'