ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.pod
Revision: 1.292
Committed: Mon Mar 22 09:57:01 2010 UTC (14 years, 1 month ago) by sf-exg
Branch: MAIN
Changes since 1.291: +3 -3 lines
Log Message:
Fix typos spotted by μspell.

File Contents

# Content
1 =head1 NAME
2
3 libev - a high performance full-featured event loop written in C
4
5 =head1 SYNOPSIS
6
7 #include <ev.h>
8
9 =head2 EXAMPLE PROGRAM
10
11 // a single header file is required
12 #include <ev.h>
13
14 #include <stdio.h> // for puts
15
16 // every watcher type has its own typedef'd struct
17 // with the name ev_TYPE
18 ev_io stdin_watcher;
19 ev_timer timeout_watcher;
20
21 // all watcher callbacks have a similar signature
22 // this callback is called when data is readable on stdin
23 static void
24 stdin_cb (EV_P_ ev_io *w, int revents)
25 {
26 puts ("stdin ready");
27 // for one-shot events, one must manually stop the watcher
28 // with its corresponding stop function.
29 ev_io_stop (EV_A_ w);
30
31 // this causes all nested ev_loop's to stop iterating
32 ev_unloop (EV_A_ EVUNLOOP_ALL);
33 }
34
35 // another callback, this time for a time-out
36 static void
37 timeout_cb (EV_P_ ev_timer *w, int revents)
38 {
39 puts ("timeout");
40 // this causes the innermost ev_loop to stop iterating
41 ev_unloop (EV_A_ EVUNLOOP_ONE);
42 }
43
44 int
45 main (void)
46 {
47 // use the default event loop unless you have special needs
48 struct ev_loop *loop = ev_default_loop (0);
49
50 // initialise an io watcher, then start it
51 // this one will watch for stdin to become readable
52 ev_io_init (&stdin_watcher, stdin_cb, /*STDIN_FILENO*/ 0, EV_READ);
53 ev_io_start (loop, &stdin_watcher);
54
55 // initialise a timer watcher, then start it
56 // simple non-repeating 5.5 second timeout
57 ev_timer_init (&timeout_watcher, timeout_cb, 5.5, 0.);
58 ev_timer_start (loop, &timeout_watcher);
59
60 // now wait for events to arrive
61 ev_loop (loop, 0);
62
63 // unloop was called, so exit
64 return 0;
65 }
66
67 =head1 ABOUT THIS DOCUMENT
68
69 This document documents the libev software package.
70
71 The newest version of this document is also available as an html-formatted
72 web page you might find easier to navigate when reading it for the first
73 time: L<http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod>.
74
75 While this document tries to be as complete as possible in documenting
76 libev, its usage and the rationale behind its design, it is not a tutorial
77 on event-based programming, nor will it introduce event-based programming
78 with libev.
79
80 Familarity with event based programming techniques in general is assumed
81 throughout this document.
82
83 =head1 ABOUT LIBEV
84
85 Libev is an event loop: you register interest in certain events (such as a
86 file descriptor being readable or a timeout occurring), and it will manage
87 these event sources and provide your program with events.
88
89 To do this, it must take more or less complete control over your process
90 (or thread) by executing the I<event loop> handler, and will then
91 communicate events via a callback mechanism.
92
93 You register interest in certain events by registering so-called I<event
94 watchers>, which are relatively small C structures you initialise with the
95 details of the event, and then hand it over to libev by I<starting> the
96 watcher.
97
98 =head2 FEATURES
99
100 Libev supports C<select>, C<poll>, the Linux-specific C<epoll>, the
101 BSD-specific C<kqueue> and the Solaris-specific event port mechanisms
102 for file descriptor events (C<ev_io>), the Linux C<inotify> interface
103 (for C<ev_stat>), Linux eventfd/signalfd (for faster and cleaner
104 inter-thread wakeup (C<ev_async>)/signal handling (C<ev_signal>)) relative
105 timers (C<ev_timer>), absolute timers with customised rescheduling
106 (C<ev_periodic>), synchronous signals (C<ev_signal>), process status
107 change events (C<ev_child>), and event watchers dealing with the event
108 loop mechanism itself (C<ev_idle>, C<ev_embed>, C<ev_prepare> and
109 C<ev_check> watchers) as well as file watchers (C<ev_stat>) and even
110 limited support for fork events (C<ev_fork>).
111
112 It also is quite fast (see this
113 L<benchmark|http://libev.schmorp.de/bench.html> comparing it to libevent
114 for example).
115
116 =head2 CONVENTIONS
117
118 Libev is very configurable. In this manual the default (and most common)
119 configuration will be described, which supports multiple event loops. For
120 more info about various configuration options please have a look at
121 B<EMBED> section in this manual. If libev was configured without support
122 for multiple event loops, then all functions taking an initial argument of
123 name C<loop> (which is always of type C<struct ev_loop *>) will not have
124 this argument.
125
126 =head2 TIME REPRESENTATION
127
128 Libev represents time as a single floating point number, representing
129 the (fractional) number of seconds since the (POSIX) epoch (somewhere
130 near the beginning of 1970, details are complicated, don't ask). This
131 type is called C<ev_tstamp>, which is what you should use too. It usually
132 aliases to the C<double> type in C. When you need to do any calculations
133 on it, you should treat it as some floating point value. Unlike the name
134 component C<stamp> might indicate, it is also used for time differences
135 throughout libev.
136
137 =head1 ERROR HANDLING
138
139 Libev knows three classes of errors: operating system errors, usage errors
140 and internal errors (bugs).
141
142 When libev catches an operating system error it cannot handle (for example
143 a system call indicating a condition libev cannot fix), it calls the callback
144 set via C<ev_set_syserr_cb>, which is supposed to fix the problem or
145 abort. The default is to print a diagnostic message and to call C<abort
146 ()>.
147
148 When libev detects a usage error such as a negative timer interval, then
149 it will print a diagnostic message and abort (via the C<assert> mechanism,
150 so C<NDEBUG> will disable this checking): these are programming errors in
151 the libev caller and need to be fixed there.
152
153 Libev also has a few internal error-checking C<assert>ions, and also has
154 extensive consistency checking code. These do not trigger under normal
155 circumstances, as they indicate either a bug in libev or worse.
156
157
158 =head1 GLOBAL FUNCTIONS
159
160 These functions can be called anytime, even before initialising the
161 library in any way.
162
163 =over 4
164
165 =item ev_tstamp ev_time ()
166
167 Returns the current time as libev would use it. Please note that the
168 C<ev_now> function is usually faster and also often returns the timestamp
169 you actually want to know.
170
171 =item ev_sleep (ev_tstamp interval)
172
173 Sleep for the given interval: The current thread will be blocked until
174 either it is interrupted or the given time interval has passed. Basically
175 this is a sub-second-resolution C<sleep ()>.
176
177 =item int ev_version_major ()
178
179 =item int ev_version_minor ()
180
181 You can find out the major and minor ABI version numbers of the library
182 you linked against by calling the functions C<ev_version_major> and
183 C<ev_version_minor>. If you want, you can compare against the global
184 symbols C<EV_VERSION_MAJOR> and C<EV_VERSION_MINOR>, which specify the
185 version of the library your program was compiled against.
186
187 These version numbers refer to the ABI version of the library, not the
188 release version.
189
190 Usually, it's a good idea to terminate if the major versions mismatch,
191 as this indicates an incompatible change. Minor versions are usually
192 compatible to older versions, so a larger minor version alone is usually
193 not a problem.
194
195 Example: Make sure we haven't accidentally been linked against the wrong
196 version.
197
198 assert (("libev version mismatch",
199 ev_version_major () == EV_VERSION_MAJOR
200 && ev_version_minor () >= EV_VERSION_MINOR));
201
202 =item unsigned int ev_supported_backends ()
203
204 Return the set of all backends (i.e. their corresponding C<EV_BACKEND_*>
205 value) compiled into this binary of libev (independent of their
206 availability on the system you are running on). See C<ev_default_loop> for
207 a description of the set values.
208
209 Example: make sure we have the epoll method, because yeah this is cool and
210 a must have and can we have a torrent of it please!!!11
211
212 assert (("sorry, no epoll, no sex",
213 ev_supported_backends () & EVBACKEND_EPOLL));
214
215 =item unsigned int ev_recommended_backends ()
216
217 Return the set of all backends compiled into this binary of libev and also
218 recommended for this platform. This set is often smaller than the one
219 returned by C<ev_supported_backends>, as for example kqueue is broken on
220 most BSDs and will not be auto-detected unless you explicitly request it
221 (assuming you know what you are doing). This is the set of backends that
222 libev will probe for if you specify no backends explicitly.
223
224 =item unsigned int ev_embeddable_backends ()
225
226 Returns the set of backends that are embeddable in other event loops. This
227 is the theoretical, all-platform, value. To find which backends
228 might be supported on the current system, you would need to look at
229 C<ev_embeddable_backends () & ev_supported_backends ()>, likewise for
230 recommended ones.
231
232 See the description of C<ev_embed> watchers for more info.
233
234 =item ev_set_allocator (void *(*cb)(void *ptr, long size)) [NOT REENTRANT]
235
236 Sets the allocation function to use (the prototype is similar - the
237 semantics are identical to the C<realloc> C89/SuS/POSIX function). It is
238 used to allocate and free memory (no surprises here). If it returns zero
239 when memory needs to be allocated (C<size != 0>), the library might abort
240 or take some potentially destructive action.
241
242 Since some systems (at least OpenBSD and Darwin) fail to implement
243 correct C<realloc> semantics, libev will use a wrapper around the system
244 C<realloc> and C<free> functions by default.
245
246 You could override this function in high-availability programs to, say,
247 free some memory if it cannot allocate memory, to use a special allocator,
248 or even to sleep a while and retry until some memory is available.
249
250 Example: Replace the libev allocator with one that waits a bit and then
251 retries (example requires a standards-compliant C<realloc>).
252
253 static void *
254 persistent_realloc (void *ptr, size_t size)
255 {
256 for (;;)
257 {
258 void *newptr = realloc (ptr, size);
259
260 if (newptr)
261 return newptr;
262
263 sleep (60);
264 }
265 }
266
267 ...
268 ev_set_allocator (persistent_realloc);
269
270 =item ev_set_syserr_cb (void (*cb)(const char *msg)); [NOT REENTRANT]
271
272 Set the callback function to call on a retryable system call error (such
273 as failed select, poll, epoll_wait). The message is a printable string
274 indicating the system call or subsystem causing the problem. If this
275 callback is set, then libev will expect it to remedy the situation, no
276 matter what, when it returns. That is, libev will generally retry the
277 requested operation, or, if the condition doesn't go away, do bad stuff
278 (such as abort).
279
280 Example: This is basically the same thing that libev does internally, too.
281
282 static void
283 fatal_error (const char *msg)
284 {
285 perror (msg);
286 abort ();
287 }
288
289 ...
290 ev_set_syserr_cb (fatal_error);
291
292 =back
293
294 =head1 FUNCTIONS CONTROLLING THE EVENT LOOP
295
296 An event loop is described by a C<struct ev_loop *> (the C<struct>
297 is I<not> optional in this case, as there is also an C<ev_loop>
298 I<function>).
299
300 The library knows two types of such loops, the I<default> loop, which
301 supports signals and child events, and dynamically created loops which do
302 not.
303
304 =over 4
305
306 =item struct ev_loop *ev_default_loop (unsigned int flags)
307
308 This will initialise the default event loop if it hasn't been initialised
309 yet and return it. If the default loop could not be initialised, returns
310 false. If it already was initialised it simply returns it (and ignores the
311 flags. If that is troubling you, check C<ev_backend ()> afterwards).
312
313 If you don't know what event loop to use, use the one returned from this
314 function.
315
316 Note that this function is I<not> thread-safe, so if you want to use it
317 from multiple threads, you have to lock (note also that this is unlikely,
318 as loops cannot be shared easily between threads anyway).
319
320 The default loop is the only loop that can handle C<ev_signal> and
321 C<ev_child> watchers, and to do this, it always registers a handler
322 for C<SIGCHLD>. If this is a problem for your application you can either
323 create a dynamic loop with C<ev_loop_new> that doesn't do that, or you
324 can simply overwrite the C<SIGCHLD> signal handler I<after> calling
325 C<ev_default_init>.
326
327 The flags argument can be used to specify special behaviour or specific
328 backends to use, and is usually specified as C<0> (or C<EVFLAG_AUTO>).
329
330 The following flags are supported:
331
332 =over 4
333
334 =item C<EVFLAG_AUTO>
335
336 The default flags value. Use this if you have no clue (it's the right
337 thing, believe me).
338
339 =item C<EVFLAG_NOENV>
340
341 If this flag bit is or'ed into the flag value (or the program runs setuid
342 or setgid) then libev will I<not> look at the environment variable
343 C<LIBEV_FLAGS>. Otherwise (the default), this environment variable will
344 override the flags completely if it is found in the environment. This is
345 useful to try out specific backends to test their performance, or to work
346 around bugs.
347
348 =item C<EVFLAG_FORKCHECK>
349
350 Instead of calling C<ev_loop_fork> manually after a fork, you can also
351 make libev check for a fork in each iteration by enabling this flag.
352
353 This works by calling C<getpid ()> on every iteration of the loop,
354 and thus this might slow down your event loop if you do a lot of loop
355 iterations and little real work, but is usually not noticeable (on my
356 GNU/Linux system for example, C<getpid> is actually a simple 5-insn sequence
357 without a system call and thus I<very> fast, but my GNU/Linux system also has
358 C<pthread_atfork> which is even faster).
359
360 The big advantage of this flag is that you can forget about fork (and
361 forget about forgetting to tell libev about forking) when you use this
362 flag.
363
364 This flag setting cannot be overridden or specified in the C<LIBEV_FLAGS>
365 environment variable.
366
367 =item C<EVFLAG_NOINOTIFY>
368
369 When this flag is specified, then libev will not attempt to use the
370 I<inotify> API for it's C<ev_stat> watchers. Apart from debugging and
371 testing, this flag can be useful to conserve inotify file descriptors, as
372 otherwise each loop using C<ev_stat> watchers consumes one inotify handle.
373
374 =item C<EVFLAG_SIGNALFD>
375
376 When this flag is specified, then libev will attempt to use the
377 I<signalfd> API for it's C<ev_signal> (and C<ev_child>) watchers. This API
378 delivers signals synchronously, which makes it both faster and might make
379 it possible to get the queued signal data. It can also simplify signal
380 handling with threads, as long as you properly block signals in your
381 threads that are not interested in handling them.
382
383 Signalfd will not be used by default as this changes your signal mask, and
384 there are a lot of shoddy libraries and programs (glib's threadpool for
385 example) that can't properly initialise their signal masks.
386
387 =item C<EVBACKEND_SELECT> (value 1, portable select backend)
388
389 This is your standard select(2) backend. Not I<completely> standard, as
390 libev tries to roll its own fd_set with no limits on the number of fds,
391 but if that fails, expect a fairly low limit on the number of fds when
392 using this backend. It doesn't scale too well (O(highest_fd)), but its
393 usually the fastest backend for a low number of (low-numbered :) fds.
394
395 To get good performance out of this backend you need a high amount of
396 parallelism (most of the file descriptors should be busy). If you are
397 writing a server, you should C<accept ()> in a loop to accept as many
398 connections as possible during one iteration. You might also want to have
399 a look at C<ev_set_io_collect_interval ()> to increase the amount of
400 readiness notifications you get per iteration.
401
402 This backend maps C<EV_READ> to the C<readfds> set and C<EV_WRITE> to the
403 C<writefds> set (and to work around Microsoft Windows bugs, also onto the
404 C<exceptfds> set on that platform).
405
406 =item C<EVBACKEND_POLL> (value 2, poll backend, available everywhere except on windows)
407
408 And this is your standard poll(2) backend. It's more complicated
409 than select, but handles sparse fds better and has no artificial
410 limit on the number of fds you can use (except it will slow down
411 considerably with a lot of inactive fds). It scales similarly to select,
412 i.e. O(total_fds). See the entry for C<EVBACKEND_SELECT>, above, for
413 performance tips.
414
415 This backend maps C<EV_READ> to C<POLLIN | POLLERR | POLLHUP>, and
416 C<EV_WRITE> to C<POLLOUT | POLLERR | POLLHUP>.
417
418 =item C<EVBACKEND_EPOLL> (value 4, Linux)
419
420 Use the linux-specific epoll(7) interface (for both pre- and post-2.6.9
421 kernels).
422
423 For few fds, this backend is a bit little slower than poll and select,
424 but it scales phenomenally better. While poll and select usually scale
425 like O(total_fds) where n is the total number of fds (or the highest fd),
426 epoll scales either O(1) or O(active_fds).
427
428 The epoll mechanism deserves honorable mention as the most misdesigned
429 of the more advanced event mechanisms: mere annoyances include silently
430 dropping file descriptors, requiring a system call per change per file
431 descriptor (and unnecessary guessing of parameters), problems with dup and
432 so on. The biggest issue is fork races, however - if a program forks then
433 I<both> parent and child process have to recreate the epoll set, which can
434 take considerable time (one syscall per file descriptor) and is of course
435 hard to detect.
436
437 Epoll is also notoriously buggy - embedding epoll fds I<should> work, but
438 of course I<doesn't>, and epoll just loves to report events for totally
439 I<different> file descriptors (even already closed ones, so one cannot
440 even remove them from the set) than registered in the set (especially
441 on SMP systems). Libev tries to counter these spurious notifications by
442 employing an additional generation counter and comparing that against the
443 events to filter out spurious ones, recreating the set when required.
444
445 While stopping, setting and starting an I/O watcher in the same iteration
446 will result in some caching, there is still a system call per such
447 incident (because the same I<file descriptor> could point to a different
448 I<file description> now), so its best to avoid that. Also, C<dup ()>'ed
449 file descriptors might not work very well if you register events for both
450 file descriptors.
451
452 Best performance from this backend is achieved by not unregistering all
453 watchers for a file descriptor until it has been closed, if possible,
454 i.e. keep at least one watcher active per fd at all times. Stopping and
455 starting a watcher (without re-setting it) also usually doesn't cause
456 extra overhead. A fork can both result in spurious notifications as well
457 as in libev having to destroy and recreate the epoll object, which can
458 take considerable time and thus should be avoided.
459
460 All this means that, in practice, C<EVBACKEND_SELECT> can be as fast or
461 faster than epoll for maybe up to a hundred file descriptors, depending on
462 the usage. So sad.
463
464 While nominally embeddable in other event loops, this feature is broken in
465 all kernel versions tested so far.
466
467 This backend maps C<EV_READ> and C<EV_WRITE> in the same way as
468 C<EVBACKEND_POLL>.
469
470 =item C<EVBACKEND_KQUEUE> (value 8, most BSD clones)
471
472 Kqueue deserves special mention, as at the time of this writing, it
473 was broken on all BSDs except NetBSD (usually it doesn't work reliably
474 with anything but sockets and pipes, except on Darwin, where of course
475 it's completely useless). Unlike epoll, however, whose brokenness
476 is by design, these kqueue bugs can (and eventually will) be fixed
477 without API changes to existing programs. For this reason it's not being
478 "auto-detected" unless you explicitly specify it in the flags (i.e. using
479 C<EVBACKEND_KQUEUE>) or libev was compiled on a known-to-be-good (-enough)
480 system like NetBSD.
481
482 You still can embed kqueue into a normal poll or select backend and use it
483 only for sockets (after having made sure that sockets work with kqueue on
484 the target platform). See C<ev_embed> watchers for more info.
485
486 It scales in the same way as the epoll backend, but the interface to the
487 kernel is more efficient (which says nothing about its actual speed, of
488 course). While stopping, setting and starting an I/O watcher does never
489 cause an extra system call as with C<EVBACKEND_EPOLL>, it still adds up to
490 two event changes per incident. Support for C<fork ()> is very bad (but
491 sane, unlike epoll) and it drops fds silently in similarly hard-to-detect
492 cases
493
494 This backend usually performs well under most conditions.
495
496 While nominally embeddable in other event loops, this doesn't work
497 everywhere, so you might need to test for this. And since it is broken
498 almost everywhere, you should only use it when you have a lot of sockets
499 (for which it usually works), by embedding it into another event loop
500 (e.g. C<EVBACKEND_SELECT> or C<EVBACKEND_POLL> (but C<poll> is of course
501 also broken on OS X)) and, did I mention it, using it only for sockets.
502
503 This backend maps C<EV_READ> into an C<EVFILT_READ> kevent with
504 C<NOTE_EOF>, and C<EV_WRITE> into an C<EVFILT_WRITE> kevent with
505 C<NOTE_EOF>.
506
507 =item C<EVBACKEND_DEVPOLL> (value 16, Solaris 8)
508
509 This is not implemented yet (and might never be, unless you send me an
510 implementation). According to reports, C</dev/poll> only supports sockets
511 and is not embeddable, which would limit the usefulness of this backend
512 immensely.
513
514 =item C<EVBACKEND_PORT> (value 32, Solaris 10)
515
516 This uses the Solaris 10 event port mechanism. As with everything on Solaris,
517 it's really slow, but it still scales very well (O(active_fds)).
518
519 Please note that Solaris event ports can deliver a lot of spurious
520 notifications, so you need to use non-blocking I/O or other means to avoid
521 blocking when no data (or space) is available.
522
523 While this backend scales well, it requires one system call per active
524 file descriptor per loop iteration. For small and medium numbers of file
525 descriptors a "slow" C<EVBACKEND_SELECT> or C<EVBACKEND_POLL> backend
526 might perform better.
527
528 On the positive side, with the exception of the spurious readiness
529 notifications, this backend actually performed fully to specification
530 in all tests and is fully embeddable, which is a rare feat among the
531 OS-specific backends (I vastly prefer correctness over speed hacks).
532
533 This backend maps C<EV_READ> and C<EV_WRITE> in the same way as
534 C<EVBACKEND_POLL>.
535
536 =item C<EVBACKEND_ALL>
537
538 Try all backends (even potentially broken ones that wouldn't be tried
539 with C<EVFLAG_AUTO>). Since this is a mask, you can do stuff such as
540 C<EVBACKEND_ALL & ~EVBACKEND_KQUEUE>.
541
542 It is definitely not recommended to use this flag.
543
544 =back
545
546 If one or more of the backend flags are or'ed into the flags value,
547 then only these backends will be tried (in the reverse order as listed
548 here). If none are specified, all backends in C<ev_recommended_backends
549 ()> will be tried.
550
551 Example: This is the most typical usage.
552
553 if (!ev_default_loop (0))
554 fatal ("could not initialise libev, bad $LIBEV_FLAGS in environment?");
555
556 Example: Restrict libev to the select and poll backends, and do not allow
557 environment settings to be taken into account:
558
559 ev_default_loop (EVBACKEND_POLL | EVBACKEND_SELECT | EVFLAG_NOENV);
560
561 Example: Use whatever libev has to offer, but make sure that kqueue is
562 used if available (warning, breaks stuff, best use only with your own
563 private event loop and only if you know the OS supports your types of
564 fds):
565
566 ev_default_loop (ev_recommended_backends () | EVBACKEND_KQUEUE);
567
568 =item struct ev_loop *ev_loop_new (unsigned int flags)
569
570 Similar to C<ev_default_loop>, but always creates a new event loop that is
571 always distinct from the default loop.
572
573 Note that this function I<is> thread-safe, and one common way to use
574 libev with threads is indeed to create one loop per thread, and using the
575 default loop in the "main" or "initial" thread.
576
577 Example: Try to create a event loop that uses epoll and nothing else.
578
579 struct ev_loop *epoller = ev_loop_new (EVBACKEND_EPOLL | EVFLAG_NOENV);
580 if (!epoller)
581 fatal ("no epoll found here, maybe it hides under your chair");
582
583 =item ev_default_destroy ()
584
585 Destroys the default loop (frees all memory and kernel state etc.). None
586 of the active event watchers will be stopped in the normal sense, so
587 e.g. C<ev_is_active> might still return true. It is your responsibility to
588 either stop all watchers cleanly yourself I<before> calling this function,
589 or cope with the fact afterwards (which is usually the easiest thing, you
590 can just ignore the watchers and/or C<free ()> them for example).
591
592 Note that certain global state, such as signal state (and installed signal
593 handlers), will not be freed by this function, and related watchers (such
594 as signal and child watchers) would need to be stopped manually.
595
596 In general it is not advisable to call this function except in the
597 rare occasion where you really need to free e.g. the signal handling
598 pipe fds. If you need dynamically allocated loops it is better to use
599 C<ev_loop_new> and C<ev_loop_destroy>.
600
601 =item ev_loop_destroy (loop)
602
603 Like C<ev_default_destroy>, but destroys an event loop created by an
604 earlier call to C<ev_loop_new>.
605
606 =item ev_default_fork ()
607
608 This function sets a flag that causes subsequent C<ev_loop> iterations
609 to reinitialise the kernel state for backends that have one. Despite the
610 name, you can call it anytime, but it makes most sense after forking, in
611 the child process (or both child and parent, but that again makes little
612 sense). You I<must> call it in the child before using any of the libev
613 functions, and it will only take effect at the next C<ev_loop> iteration.
614
615 Again, you I<have> to call it on I<any> loop that you want to re-use after
616 a fork, I<even if you do not plan to use the loop in the parent>. This is
617 because some kernel interfaces *cough* I<kqueue> *cough* do funny things
618 during fork.
619
620 On the other hand, you only need to call this function in the child
621 process if and only if you want to use the event loop in the child. If you
622 just fork+exec or create a new loop in the child, you don't have to call
623 it at all.
624
625 The function itself is quite fast and it's usually not a problem to call
626 it just in case after a fork. To make this easy, the function will fit in
627 quite nicely into a call to C<pthread_atfork>:
628
629 pthread_atfork (0, 0, ev_default_fork);
630
631 =item ev_loop_fork (loop)
632
633 Like C<ev_default_fork>, but acts on an event loop created by
634 C<ev_loop_new>. Yes, you have to call this on every allocated event loop
635 after fork that you want to re-use in the child, and how you keep track of
636 them is entirely your own problem.
637
638 =item int ev_is_default_loop (loop)
639
640 Returns true when the given loop is, in fact, the default loop, and false
641 otherwise.
642
643 =item unsigned int ev_iteration (loop)
644
645 Returns the current iteration count for the loop, which is identical to
646 the number of times libev did poll for new events. It starts at C<0> and
647 happily wraps around with enough iterations.
648
649 This value can sometimes be useful as a generation counter of sorts (it
650 "ticks" the number of loop iterations), as it roughly corresponds with
651 C<ev_prepare> and C<ev_check> calls - and is incremented between the
652 prepare and check phases.
653
654 =item unsigned int ev_depth (loop)
655
656 Returns the number of times C<ev_loop> was entered minus the number of
657 times C<ev_loop> was exited, in other words, the recursion depth.
658
659 Outside C<ev_loop>, this number is zero. In a callback, this number is
660 C<1>, unless C<ev_loop> was invoked recursively (or from another thread),
661 in which case it is higher.
662
663 Leaving C<ev_loop> abnormally (setjmp/longjmp, cancelling the thread
664 etc.), doesn't count as "exit" - consider this as a hint to avoid such
665 ungentleman behaviour unless it's really convenient.
666
667 =item unsigned int ev_backend (loop)
668
669 Returns one of the C<EVBACKEND_*> flags indicating the event backend in
670 use.
671
672 =item ev_tstamp ev_now (loop)
673
674 Returns the current "event loop time", which is the time the event loop
675 received events and started processing them. This timestamp does not
676 change as long as callbacks are being processed, and this is also the base
677 time used for relative timers. You can treat it as the timestamp of the
678 event occurring (or more correctly, libev finding out about it).
679
680 =item ev_now_update (loop)
681
682 Establishes the current time by querying the kernel, updating the time
683 returned by C<ev_now ()> in the progress. This is a costly operation and
684 is usually done automatically within C<ev_loop ()>.
685
686 This function is rarely useful, but when some event callback runs for a
687 very long time without entering the event loop, updating libev's idea of
688 the current time is a good idea.
689
690 See also L<The special problem of time updates> in the C<ev_timer> section.
691
692 =item ev_suspend (loop)
693
694 =item ev_resume (loop)
695
696 These two functions suspend and resume a loop, for use when the loop is
697 not used for a while and timeouts should not be processed.
698
699 A typical use case would be an interactive program such as a game: When
700 the user presses C<^Z> to suspend the game and resumes it an hour later it
701 would be best to handle timeouts as if no time had actually passed while
702 the program was suspended. This can be achieved by calling C<ev_suspend>
703 in your C<SIGTSTP> handler, sending yourself a C<SIGSTOP> and calling
704 C<ev_resume> directly afterwards to resume timer processing.
705
706 Effectively, all C<ev_timer> watchers will be delayed by the time spend
707 between C<ev_suspend> and C<ev_resume>, and all C<ev_periodic> watchers
708 will be rescheduled (that is, they will lose any events that would have
709 occured while suspended).
710
711 After calling C<ev_suspend> you B<must not> call I<any> function on the
712 given loop other than C<ev_resume>, and you B<must not> call C<ev_resume>
713 without a previous call to C<ev_suspend>.
714
715 Calling C<ev_suspend>/C<ev_resume> has the side effect of updating the
716 event loop time (see C<ev_now_update>).
717
718 =item ev_loop (loop, int flags)
719
720 Finally, this is it, the event handler. This function usually is called
721 after you have initialised all your watchers and you want to start
722 handling events.
723
724 If the flags argument is specified as C<0>, it will not return until
725 either no event watchers are active anymore or C<ev_unloop> was called.
726
727 Please note that an explicit C<ev_unloop> is usually better than
728 relying on all watchers to be stopped when deciding when a program has
729 finished (especially in interactive programs), but having a program
730 that automatically loops as long as it has to and no longer by virtue
731 of relying on its watchers stopping correctly, that is truly a thing of
732 beauty.
733
734 A flags value of C<EVLOOP_NONBLOCK> will look for new events, will handle
735 those events and any already outstanding ones, but will not block your
736 process in case there are no events and will return after one iteration of
737 the loop.
738
739 A flags value of C<EVLOOP_ONESHOT> will look for new events (waiting if
740 necessary) and will handle those and any already outstanding ones. It
741 will block your process until at least one new event arrives (which could
742 be an event internal to libev itself, so there is no guarantee that a
743 user-registered callback will be called), and will return after one
744 iteration of the loop.
745
746 This is useful if you are waiting for some external event in conjunction
747 with something not expressible using other libev watchers (i.e. "roll your
748 own C<ev_loop>"). However, a pair of C<ev_prepare>/C<ev_check> watchers is
749 usually a better approach for this kind of thing.
750
751 Here are the gory details of what C<ev_loop> does:
752
753 - Before the first iteration, call any pending watchers.
754 * If EVFLAG_FORKCHECK was used, check for a fork.
755 - If a fork was detected (by any means), queue and call all fork watchers.
756 - Queue and call all prepare watchers.
757 - If we have been forked, detach and recreate the kernel state
758 as to not disturb the other process.
759 - Update the kernel state with all outstanding changes.
760 - Update the "event loop time" (ev_now ()).
761 - Calculate for how long to sleep or block, if at all
762 (active idle watchers, EVLOOP_NONBLOCK or not having
763 any active watchers at all will result in not sleeping).
764 - Sleep if the I/O and timer collect interval say so.
765 - Block the process, waiting for any events.
766 - Queue all outstanding I/O (fd) events.
767 - Update the "event loop time" (ev_now ()), and do time jump adjustments.
768 - Queue all expired timers.
769 - Queue all expired periodics.
770 - Unless any events are pending now, queue all idle watchers.
771 - Queue all check watchers.
772 - Call all queued watchers in reverse order (i.e. check watchers first).
773 Signals and child watchers are implemented as I/O watchers, and will
774 be handled here by queueing them when their watcher gets executed.
775 - If ev_unloop has been called, or EVLOOP_ONESHOT or EVLOOP_NONBLOCK
776 were used, or there are no active watchers, return, otherwise
777 continue with step *.
778
779 Example: Queue some jobs and then loop until no events are outstanding
780 anymore.
781
782 ... queue jobs here, make sure they register event watchers as long
783 ... as they still have work to do (even an idle watcher will do..)
784 ev_loop (my_loop, 0);
785 ... jobs done or somebody called unloop. yeah!
786
787 =item ev_unloop (loop, how)
788
789 Can be used to make a call to C<ev_loop> return early (but only after it
790 has processed all outstanding events). The C<how> argument must be either
791 C<EVUNLOOP_ONE>, which will make the innermost C<ev_loop> call return, or
792 C<EVUNLOOP_ALL>, which will make all nested C<ev_loop> calls return.
793
794 This "unloop state" will be cleared when entering C<ev_loop> again.
795
796 It is safe to call C<ev_unloop> from otuside any C<ev_loop> calls.
797
798 =item ev_ref (loop)
799
800 =item ev_unref (loop)
801
802 Ref/unref can be used to add or remove a reference count on the event
803 loop: Every watcher keeps one reference, and as long as the reference
804 count is nonzero, C<ev_loop> will not return on its own.
805
806 This is useful when you have a watcher that you never intend to
807 unregister, but that nevertheless should not keep C<ev_loop> from
808 returning. In such a case, call C<ev_unref> after starting, and C<ev_ref>
809 before stopping it.
810
811 As an example, libev itself uses this for its internal signal pipe: It
812 is not visible to the libev user and should not keep C<ev_loop> from
813 exiting if no event watchers registered by it are active. It is also an
814 excellent way to do this for generic recurring timers or from within
815 third-party libraries. Just remember to I<unref after start> and I<ref
816 before stop> (but only if the watcher wasn't active before, or was active
817 before, respectively. Note also that libev might stop watchers itself
818 (e.g. non-repeating timers) in which case you have to C<ev_ref>
819 in the callback).
820
821 Example: Create a signal watcher, but keep it from keeping C<ev_loop>
822 running when nothing else is active.
823
824 ev_signal exitsig;
825 ev_signal_init (&exitsig, sig_cb, SIGINT);
826 ev_signal_start (loop, &exitsig);
827 evf_unref (loop);
828
829 Example: For some weird reason, unregister the above signal handler again.
830
831 ev_ref (loop);
832 ev_signal_stop (loop, &exitsig);
833
834 =item ev_set_io_collect_interval (loop, ev_tstamp interval)
835
836 =item ev_set_timeout_collect_interval (loop, ev_tstamp interval)
837
838 These advanced functions influence the time that libev will spend waiting
839 for events. Both time intervals are by default C<0>, meaning that libev
840 will try to invoke timer/periodic callbacks and I/O callbacks with minimum
841 latency.
842
843 Setting these to a higher value (the C<interval> I<must> be >= C<0>)
844 allows libev to delay invocation of I/O and timer/periodic callbacks
845 to increase efficiency of loop iterations (or to increase power-saving
846 opportunities).
847
848 The idea is that sometimes your program runs just fast enough to handle
849 one (or very few) event(s) per loop iteration. While this makes the
850 program responsive, it also wastes a lot of CPU time to poll for new
851 events, especially with backends like C<select ()> which have a high
852 overhead for the actual polling but can deliver many events at once.
853
854 By setting a higher I<io collect interval> you allow libev to spend more
855 time collecting I/O events, so you can handle more events per iteration,
856 at the cost of increasing latency. Timeouts (both C<ev_periodic> and
857 C<ev_timer>) will be not affected. Setting this to a non-null value will
858 introduce an additional C<ev_sleep ()> call into most loop iterations. The
859 sleep time ensures that libev will not poll for I/O events more often then
860 once per this interval, on average.
861
862 Likewise, by setting a higher I<timeout collect interval> you allow libev
863 to spend more time collecting timeouts, at the expense of increased
864 latency/jitter/inexactness (the watcher callback will be called
865 later). C<ev_io> watchers will not be affected. Setting this to a non-null
866 value will not introduce any overhead in libev.
867
868 Many (busy) programs can usually benefit by setting the I/O collect
869 interval to a value near C<0.1> or so, which is often enough for
870 interactive servers (of course not for games), likewise for timeouts. It
871 usually doesn't make much sense to set it to a lower value than C<0.01>,
872 as this approaches the timing granularity of most systems. Note that if
873 you do transactions with the outside world and you can't increase the
874 parallelity, then this setting will limit your transaction rate (if you
875 need to poll once per transaction and the I/O collect interval is 0.01,
876 then you can't do more than 100 transations per second).
877
878 Setting the I<timeout collect interval> can improve the opportunity for
879 saving power, as the program will "bundle" timer callback invocations that
880 are "near" in time together, by delaying some, thus reducing the number of
881 times the process sleeps and wakes up again. Another useful technique to
882 reduce iterations/wake-ups is to use C<ev_periodic> watchers and make sure
883 they fire on, say, one-second boundaries only.
884
885 Example: we only need 0.1s timeout granularity, and we wish not to poll
886 more often than 100 times per second:
887
888 ev_set_timeout_collect_interval (EV_DEFAULT_UC_ 0.1);
889 ev_set_io_collect_interval (EV_DEFAULT_UC_ 0.01);
890
891 =item ev_invoke_pending (loop)
892
893 This call will simply invoke all pending watchers while resetting their
894 pending state. Normally, C<ev_loop> does this automatically when required,
895 but when overriding the invoke callback this call comes handy.
896
897 =item int ev_pending_count (loop)
898
899 Returns the number of pending watchers - zero indicates that no watchers
900 are pending.
901
902 =item ev_set_invoke_pending_cb (loop, void (*invoke_pending_cb)(EV_P))
903
904 This overrides the invoke pending functionality of the loop: Instead of
905 invoking all pending watchers when there are any, C<ev_loop> will call
906 this callback instead. This is useful, for example, when you want to
907 invoke the actual watchers inside another context (another thread etc.).
908
909 If you want to reset the callback, use C<ev_invoke_pending> as new
910 callback.
911
912 =item ev_set_loop_release_cb (loop, void (*release)(EV_P), void (*acquire)(EV_P))
913
914 Sometimes you want to share the same loop between multiple threads. This
915 can be done relatively simply by putting mutex_lock/unlock calls around
916 each call to a libev function.
917
918 However, C<ev_loop> can run an indefinite time, so it is not feasible to
919 wait for it to return. One way around this is to wake up the loop via
920 C<ev_unloop> and C<av_async_send>, another way is to set these I<release>
921 and I<acquire> callbacks on the loop.
922
923 When set, then C<release> will be called just before the thread is
924 suspended waiting for new events, and C<acquire> is called just
925 afterwards.
926
927 Ideally, C<release> will just call your mutex_unlock function, and
928 C<acquire> will just call the mutex_lock function again.
929
930 While event loop modifications are allowed between invocations of
931 C<release> and C<acquire> (that's their only purpose after all), no
932 modifications done will affect the event loop, i.e. adding watchers will
933 have no effect on the set of file descriptors being watched, or the time
934 waited. Use an C<ev_async> watcher to wake up C<ev_loop> when you want it
935 to take note of any changes you made.
936
937 In theory, threads executing C<ev_loop> will be async-cancel safe between
938 invocations of C<release> and C<acquire>.
939
940 See also the locking example in the C<THREADS> section later in this
941 document.
942
943 =item ev_set_userdata (loop, void *data)
944
945 =item ev_userdata (loop)
946
947 Set and retrieve a single C<void *> associated with a loop. When
948 C<ev_set_userdata> has never been called, then C<ev_userdata> returns
949 C<0.>
950
951 These two functions can be used to associate arbitrary data with a loop,
952 and are intended solely for the C<invoke_pending_cb>, C<release> and
953 C<acquire> callbacks described above, but of course can be (ab-)used for
954 any other purpose as well.
955
956 =item ev_loop_verify (loop)
957
958 This function only does something when C<EV_VERIFY> support has been
959 compiled in, which is the default for non-minimal builds. It tries to go
960 through all internal structures and checks them for validity. If anything
961 is found to be inconsistent, it will print an error message to standard
962 error and call C<abort ()>.
963
964 This can be used to catch bugs inside libev itself: under normal
965 circumstances, this function will never abort as of course libev keeps its
966 data structures consistent.
967
968 =back
969
970
971 =head1 ANATOMY OF A WATCHER
972
973 In the following description, uppercase C<TYPE> in names stands for the
974 watcher type, e.g. C<ev_TYPE_start> can mean C<ev_timer_start> for timer
975 watchers and C<ev_io_start> for I/O watchers.
976
977 A watcher is a structure that you create and register to record your
978 interest in some event. For instance, if you want to wait for STDIN to
979 become readable, you would create an C<ev_io> watcher for that:
980
981 static void my_cb (struct ev_loop *loop, ev_io *w, int revents)
982 {
983 ev_io_stop (w);
984 ev_unloop (loop, EVUNLOOP_ALL);
985 }
986
987 struct ev_loop *loop = ev_default_loop (0);
988
989 ev_io stdin_watcher;
990
991 ev_init (&stdin_watcher, my_cb);
992 ev_io_set (&stdin_watcher, STDIN_FILENO, EV_READ);
993 ev_io_start (loop, &stdin_watcher);
994
995 ev_loop (loop, 0);
996
997 As you can see, you are responsible for allocating the memory for your
998 watcher structures (and it is I<usually> a bad idea to do this on the
999 stack).
1000
1001 Each watcher has an associated watcher structure (called C<struct ev_TYPE>
1002 or simply C<ev_TYPE>, as typedefs are provided for all watcher structs).
1003
1004 Each watcher structure must be initialised by a call to C<ev_init
1005 (watcher *, callback)>, which expects a callback to be provided. This
1006 callback gets invoked each time the event occurs (or, in the case of I/O
1007 watchers, each time the event loop detects that the file descriptor given
1008 is readable and/or writable).
1009
1010 Each watcher type further has its own C<< ev_TYPE_set (watcher *, ...) >>
1011 macro to configure it, with arguments specific to the watcher type. There
1012 is also a macro to combine initialisation and setting in one call: C<<
1013 ev_TYPE_init (watcher *, callback, ...) >>.
1014
1015 To make the watcher actually watch out for events, you have to start it
1016 with a watcher-specific start function (C<< ev_TYPE_start (loop, watcher
1017 *) >>), and you can stop watching for events at any time by calling the
1018 corresponding stop function (C<< ev_TYPE_stop (loop, watcher *) >>.
1019
1020 As long as your watcher is active (has been started but not stopped) you
1021 must not touch the values stored in it. Most specifically you must never
1022 reinitialise it or call its C<ev_TYPE_set> macro.
1023
1024 Each and every callback receives the event loop pointer as first, the
1025 registered watcher structure as second, and a bitset of received events as
1026 third argument.
1027
1028 The received events usually include a single bit per event type received
1029 (you can receive multiple events at the same time). The possible bit masks
1030 are:
1031
1032 =over 4
1033
1034 =item C<EV_READ>
1035
1036 =item C<EV_WRITE>
1037
1038 The file descriptor in the C<ev_io> watcher has become readable and/or
1039 writable.
1040
1041 =item C<EV_TIMER>
1042
1043 The C<ev_timer> watcher has timed out.
1044
1045 =item C<EV_PERIODIC>
1046
1047 The C<ev_periodic> watcher has timed out.
1048
1049 =item C<EV_SIGNAL>
1050
1051 The signal specified in the C<ev_signal> watcher has been received by a thread.
1052
1053 =item C<EV_CHILD>
1054
1055 The pid specified in the C<ev_child> watcher has received a status change.
1056
1057 =item C<EV_STAT>
1058
1059 The path specified in the C<ev_stat> watcher changed its attributes somehow.
1060
1061 =item C<EV_IDLE>
1062
1063 The C<ev_idle> watcher has determined that you have nothing better to do.
1064
1065 =item C<EV_PREPARE>
1066
1067 =item C<EV_CHECK>
1068
1069 All C<ev_prepare> watchers are invoked just I<before> C<ev_loop> starts
1070 to gather new events, and all C<ev_check> watchers are invoked just after
1071 C<ev_loop> has gathered them, but before it invokes any callbacks for any
1072 received events. Callbacks of both watcher types can start and stop as
1073 many watchers as they want, and all of them will be taken into account
1074 (for example, a C<ev_prepare> watcher might start an idle watcher to keep
1075 C<ev_loop> from blocking).
1076
1077 =item C<EV_EMBED>
1078
1079 The embedded event loop specified in the C<ev_embed> watcher needs attention.
1080
1081 =item C<EV_FORK>
1082
1083 The event loop has been resumed in the child process after fork (see
1084 C<ev_fork>).
1085
1086 =item C<EV_ASYNC>
1087
1088 The given async watcher has been asynchronously notified (see C<ev_async>).
1089
1090 =item C<EV_CUSTOM>
1091
1092 Not ever sent (or otherwise used) by libev itself, but can be freely used
1093 by libev users to signal watchers (e.g. via C<ev_feed_event>).
1094
1095 =item C<EV_ERROR>
1096
1097 An unspecified error has occurred, the watcher has been stopped. This might
1098 happen because the watcher could not be properly started because libev
1099 ran out of memory, a file descriptor was found to be closed or any other
1100 problem. Libev considers these application bugs.
1101
1102 You best act on it by reporting the problem and somehow coping with the
1103 watcher being stopped. Note that well-written programs should not receive
1104 an error ever, so when your watcher receives it, this usually indicates a
1105 bug in your program.
1106
1107 Libev will usually signal a few "dummy" events together with an error, for
1108 example it might indicate that a fd is readable or writable, and if your
1109 callbacks is well-written it can just attempt the operation and cope with
1110 the error from read() or write(). This will not work in multi-threaded
1111 programs, though, as the fd could already be closed and reused for another
1112 thing, so beware.
1113
1114 =back
1115
1116 =head2 GENERIC WATCHER FUNCTIONS
1117
1118 =over 4
1119
1120 =item C<ev_init> (ev_TYPE *watcher, callback)
1121
1122 This macro initialises the generic portion of a watcher. The contents
1123 of the watcher object can be arbitrary (so C<malloc> will do). Only
1124 the generic parts of the watcher are initialised, you I<need> to call
1125 the type-specific C<ev_TYPE_set> macro afterwards to initialise the
1126 type-specific parts. For each type there is also a C<ev_TYPE_init> macro
1127 which rolls both calls into one.
1128
1129 You can reinitialise a watcher at any time as long as it has been stopped
1130 (or never started) and there are no pending events outstanding.
1131
1132 The callback is always of type C<void (*)(struct ev_loop *loop, ev_TYPE *watcher,
1133 int revents)>.
1134
1135 Example: Initialise an C<ev_io> watcher in two steps.
1136
1137 ev_io w;
1138 ev_init (&w, my_cb);
1139 ev_io_set (&w, STDIN_FILENO, EV_READ);
1140
1141 =item C<ev_TYPE_set> (ev_TYPE *watcher, [args])
1142
1143 This macro initialises the type-specific parts of a watcher. You need to
1144 call C<ev_init> at least once before you call this macro, but you can
1145 call C<ev_TYPE_set> any number of times. You must not, however, call this
1146 macro on a watcher that is active (it can be pending, however, which is a
1147 difference to the C<ev_init> macro).
1148
1149 Although some watcher types do not have type-specific arguments
1150 (e.g. C<ev_prepare>) you still need to call its C<set> macro.
1151
1152 See C<ev_init>, above, for an example.
1153
1154 =item C<ev_TYPE_init> (ev_TYPE *watcher, callback, [args])
1155
1156 This convenience macro rolls both C<ev_init> and C<ev_TYPE_set> macro
1157 calls into a single call. This is the most convenient method to initialise
1158 a watcher. The same limitations apply, of course.
1159
1160 Example: Initialise and set an C<ev_io> watcher in one step.
1161
1162 ev_io_init (&w, my_cb, STDIN_FILENO, EV_READ);
1163
1164 =item C<ev_TYPE_start> (loop, ev_TYPE *watcher)
1165
1166 Starts (activates) the given watcher. Only active watchers will receive
1167 events. If the watcher is already active nothing will happen.
1168
1169 Example: Start the C<ev_io> watcher that is being abused as example in this
1170 whole section.
1171
1172 ev_io_start (EV_DEFAULT_UC, &w);
1173
1174 =item C<ev_TYPE_stop> (loop, ev_TYPE *watcher)
1175
1176 Stops the given watcher if active, and clears the pending status (whether
1177 the watcher was active or not).
1178
1179 It is possible that stopped watchers are pending - for example,
1180 non-repeating timers are being stopped when they become pending - but
1181 calling C<ev_TYPE_stop> ensures that the watcher is neither active nor
1182 pending. If you want to free or reuse the memory used by the watcher it is
1183 therefore a good idea to always call its C<ev_TYPE_stop> function.
1184
1185 =item bool ev_is_active (ev_TYPE *watcher)
1186
1187 Returns a true value iff the watcher is active (i.e. it has been started
1188 and not yet been stopped). As long as a watcher is active you must not modify
1189 it.
1190
1191 =item bool ev_is_pending (ev_TYPE *watcher)
1192
1193 Returns a true value iff the watcher is pending, (i.e. it has outstanding
1194 events but its callback has not yet been invoked). As long as a watcher
1195 is pending (but not active) you must not call an init function on it (but
1196 C<ev_TYPE_set> is safe), you must not change its priority, and you must
1197 make sure the watcher is available to libev (e.g. you cannot C<free ()>
1198 it).
1199
1200 =item callback ev_cb (ev_TYPE *watcher)
1201
1202 Returns the callback currently set on the watcher.
1203
1204 =item ev_cb_set (ev_TYPE *watcher, callback)
1205
1206 Change the callback. You can change the callback at virtually any time
1207 (modulo threads).
1208
1209 =item ev_set_priority (ev_TYPE *watcher, int priority)
1210
1211 =item int ev_priority (ev_TYPE *watcher)
1212
1213 Set and query the priority of the watcher. The priority is a small
1214 integer between C<EV_MAXPRI> (default: C<2>) and C<EV_MINPRI>
1215 (default: C<-2>). Pending watchers with higher priority will be invoked
1216 before watchers with lower priority, but priority will not keep watchers
1217 from being executed (except for C<ev_idle> watchers).
1218
1219 If you need to suppress invocation when higher priority events are pending
1220 you need to look at C<ev_idle> watchers, which provide this functionality.
1221
1222 You I<must not> change the priority of a watcher as long as it is active or
1223 pending.
1224
1225 Setting a priority outside the range of C<EV_MINPRI> to C<EV_MAXPRI> is
1226 fine, as long as you do not mind that the priority value you query might
1227 or might not have been clamped to the valid range.
1228
1229 The default priority used by watchers when no priority has been set is
1230 always C<0>, which is supposed to not be too high and not be too low :).
1231
1232 See L<WATCHER PRIORITY MODELS>, below, for a more thorough treatment of
1233 priorities.
1234
1235 =item ev_invoke (loop, ev_TYPE *watcher, int revents)
1236
1237 Invoke the C<watcher> with the given C<loop> and C<revents>. Neither
1238 C<loop> nor C<revents> need to be valid as long as the watcher callback
1239 can deal with that fact, as both are simply passed through to the
1240 callback.
1241
1242 =item int ev_clear_pending (loop, ev_TYPE *watcher)
1243
1244 If the watcher is pending, this function clears its pending status and
1245 returns its C<revents> bitset (as if its callback was invoked). If the
1246 watcher isn't pending it does nothing and returns C<0>.
1247
1248 Sometimes it can be useful to "poll" a watcher instead of waiting for its
1249 callback to be invoked, which can be accomplished with this function.
1250
1251 =item ev_feed_event (loop, ev_TYPE *watcher, int revents)
1252
1253 Feeds the given event set into the event loop, as if the specified event
1254 had happened for the specified watcher (which must be a pointer to an
1255 initialised but not necessarily started event watcher). Obviously you must
1256 not free the watcher as long as it has pending events.
1257
1258 Stopping the watcher, letting libev invoke it, or calling
1259 C<ev_clear_pending> will clear the pending event, even if the watcher was
1260 not started in the first place.
1261
1262 See also C<ev_feed_fd_event> and C<ev_feed_signal_event> for related
1263 functions that do not need a watcher.
1264
1265 =back
1266
1267
1268 =head2 ASSOCIATING CUSTOM DATA WITH A WATCHER
1269
1270 Each watcher has, by default, a member C<void *data> that you can change
1271 and read at any time: libev will completely ignore it. This can be used
1272 to associate arbitrary data with your watcher. If you need more data and
1273 don't want to allocate memory and store a pointer to it in that data
1274 member, you can also "subclass" the watcher type and provide your own
1275 data:
1276
1277 struct my_io
1278 {
1279 ev_io io;
1280 int otherfd;
1281 void *somedata;
1282 struct whatever *mostinteresting;
1283 };
1284
1285 ...
1286 struct my_io w;
1287 ev_io_init (&w.io, my_cb, fd, EV_READ);
1288
1289 And since your callback will be called with a pointer to the watcher, you
1290 can cast it back to your own type:
1291
1292 static void my_cb (struct ev_loop *loop, ev_io *w_, int revents)
1293 {
1294 struct my_io *w = (struct my_io *)w_;
1295 ...
1296 }
1297
1298 More interesting and less C-conformant ways of casting your callback type
1299 instead have been omitted.
1300
1301 Another common scenario is to use some data structure with multiple
1302 embedded watchers:
1303
1304 struct my_biggy
1305 {
1306 int some_data;
1307 ev_timer t1;
1308 ev_timer t2;
1309 }
1310
1311 In this case getting the pointer to C<my_biggy> is a bit more
1312 complicated: Either you store the address of your C<my_biggy> struct
1313 in the C<data> member of the watcher (for woozies), or you need to use
1314 some pointer arithmetic using C<offsetof> inside your watchers (for real
1315 programmers):
1316
1317 #include <stddef.h>
1318
1319 static void
1320 t1_cb (EV_P_ ev_timer *w, int revents)
1321 {
1322 struct my_biggy big = (struct my_biggy *)
1323 (((char *)w) - offsetof (struct my_biggy, t1));
1324 }
1325
1326 static void
1327 t2_cb (EV_P_ ev_timer *w, int revents)
1328 {
1329 struct my_biggy big = (struct my_biggy *)
1330 (((char *)w) - offsetof (struct my_biggy, t2));
1331 }
1332
1333 =head2 WATCHER PRIORITY MODELS
1334
1335 Many event loops support I<watcher priorities>, which are usually small
1336 integers that influence the ordering of event callback invocation
1337 between watchers in some way, all else being equal.
1338
1339 In libev, Watcher priorities can be set using C<ev_set_priority>. See its
1340 description for the more technical details such as the actual priority
1341 range.
1342
1343 There are two common ways how these these priorities are being interpreted
1344 by event loops:
1345
1346 In the more common lock-out model, higher priorities "lock out" invocation
1347 of lower priority watchers, which means as long as higher priority
1348 watchers receive events, lower priority watchers are not being invoked.
1349
1350 The less common only-for-ordering model uses priorities solely to order
1351 callback invocation within a single event loop iteration: Higher priority
1352 watchers are invoked before lower priority ones, but they all get invoked
1353 before polling for new events.
1354
1355 Libev uses the second (only-for-ordering) model for all its watchers
1356 except for idle watchers (which use the lock-out model).
1357
1358 The rationale behind this is that implementing the lock-out model for
1359 watchers is not well supported by most kernel interfaces, and most event
1360 libraries will just poll for the same events again and again as long as
1361 their callbacks have not been executed, which is very inefficient in the
1362 common case of one high-priority watcher locking out a mass of lower
1363 priority ones.
1364
1365 Static (ordering) priorities are most useful when you have two or more
1366 watchers handling the same resource: a typical usage example is having an
1367 C<ev_io> watcher to receive data, and an associated C<ev_timer> to handle
1368 timeouts. Under load, data might be received while the program handles
1369 other jobs, but since timers normally get invoked first, the timeout
1370 handler will be executed before checking for data. In that case, giving
1371 the timer a lower priority than the I/O watcher ensures that I/O will be
1372 handled first even under adverse conditions (which is usually, but not
1373 always, what you want).
1374
1375 Since idle watchers use the "lock-out" model, meaning that idle watchers
1376 will only be executed when no same or higher priority watchers have
1377 received events, they can be used to implement the "lock-out" model when
1378 required.
1379
1380 For example, to emulate how many other event libraries handle priorities,
1381 you can associate an C<ev_idle> watcher to each such watcher, and in
1382 the normal watcher callback, you just start the idle watcher. The real
1383 processing is done in the idle watcher callback. This causes libev to
1384 continously poll and process kernel event data for the watcher, but when
1385 the lock-out case is known to be rare (which in turn is rare :), this is
1386 workable.
1387
1388 Usually, however, the lock-out model implemented that way will perform
1389 miserably under the type of load it was designed to handle. In that case,
1390 it might be preferable to stop the real watcher before starting the
1391 idle watcher, so the kernel will not have to process the event in case
1392 the actual processing will be delayed for considerable time.
1393
1394 Here is an example of an I/O watcher that should run at a strictly lower
1395 priority than the default, and which should only process data when no
1396 other events are pending:
1397
1398 ev_idle idle; // actual processing watcher
1399 ev_io io; // actual event watcher
1400
1401 static void
1402 io_cb (EV_P_ ev_io *w, int revents)
1403 {
1404 // stop the I/O watcher, we received the event, but
1405 // are not yet ready to handle it.
1406 ev_io_stop (EV_A_ w);
1407
1408 // start the idle watcher to ahndle the actual event.
1409 // it will not be executed as long as other watchers
1410 // with the default priority are receiving events.
1411 ev_idle_start (EV_A_ &idle);
1412 }
1413
1414 static void
1415 idle_cb (EV_P_ ev_idle *w, int revents)
1416 {
1417 // actual processing
1418 read (STDIN_FILENO, ...);
1419
1420 // have to start the I/O watcher again, as
1421 // we have handled the event
1422 ev_io_start (EV_P_ &io);
1423 }
1424
1425 // initialisation
1426 ev_idle_init (&idle, idle_cb);
1427 ev_io_init (&io, io_cb, STDIN_FILENO, EV_READ);
1428 ev_io_start (EV_DEFAULT_ &io);
1429
1430 In the "real" world, it might also be beneficial to start a timer, so that
1431 low-priority connections can not be locked out forever under load. This
1432 enables your program to keep a lower latency for important connections
1433 during short periods of high load, while not completely locking out less
1434 important ones.
1435
1436
1437 =head1 WATCHER TYPES
1438
1439 This section describes each watcher in detail, but will not repeat
1440 information given in the last section. Any initialisation/set macros,
1441 functions and members specific to the watcher type are explained.
1442
1443 Members are additionally marked with either I<[read-only]>, meaning that,
1444 while the watcher is active, you can look at the member and expect some
1445 sensible content, but you must not modify it (you can modify it while the
1446 watcher is stopped to your hearts content), or I<[read-write]>, which
1447 means you can expect it to have some sensible content while the watcher
1448 is active, but you can also modify it. Modifying it may not do something
1449 sensible or take immediate effect (or do anything at all), but libev will
1450 not crash or malfunction in any way.
1451
1452
1453 =head2 C<ev_io> - is this file descriptor readable or writable?
1454
1455 I/O watchers check whether a file descriptor is readable or writable
1456 in each iteration of the event loop, or, more precisely, when reading
1457 would not block the process and writing would at least be able to write
1458 some data. This behaviour is called level-triggering because you keep
1459 receiving events as long as the condition persists. Remember you can stop
1460 the watcher if you don't want to act on the event and neither want to
1461 receive future events.
1462
1463 In general you can register as many read and/or write event watchers per
1464 fd as you want (as long as you don't confuse yourself). Setting all file
1465 descriptors to non-blocking mode is also usually a good idea (but not
1466 required if you know what you are doing).
1467
1468 If you cannot use non-blocking mode, then force the use of a
1469 known-to-be-good backend (at the time of this writing, this includes only
1470 C<EVBACKEND_SELECT> and C<EVBACKEND_POLL>). The same applies to file
1471 descriptors for which non-blocking operation makes no sense (such as
1472 files) - libev doesn't guarentee any specific behaviour in that case.
1473
1474 Another thing you have to watch out for is that it is quite easy to
1475 receive "spurious" readiness notifications, that is your callback might
1476 be called with C<EV_READ> but a subsequent C<read>(2) will actually block
1477 because there is no data. Not only are some backends known to create a
1478 lot of those (for example Solaris ports), it is very easy to get into
1479 this situation even with a relatively standard program structure. Thus
1480 it is best to always use non-blocking I/O: An extra C<read>(2) returning
1481 C<EAGAIN> is far preferable to a program hanging until some data arrives.
1482
1483 If you cannot run the fd in non-blocking mode (for example you should
1484 not play around with an Xlib connection), then you have to separately
1485 re-test whether a file descriptor is really ready with a known-to-be good
1486 interface such as poll (fortunately in our Xlib example, Xlib already
1487 does this on its own, so its quite safe to use). Some people additionally
1488 use C<SIGALRM> and an interval timer, just to be sure you won't block
1489 indefinitely.
1490
1491 But really, best use non-blocking mode.
1492
1493 =head3 The special problem of disappearing file descriptors
1494
1495 Some backends (e.g. kqueue, epoll) need to be told about closing a file
1496 descriptor (either due to calling C<close> explicitly or any other means,
1497 such as C<dup2>). The reason is that you register interest in some file
1498 descriptor, but when it goes away, the operating system will silently drop
1499 this interest. If another file descriptor with the same number then is
1500 registered with libev, there is no efficient way to see that this is, in
1501 fact, a different file descriptor.
1502
1503 To avoid having to explicitly tell libev about such cases, libev follows
1504 the following policy: Each time C<ev_io_set> is being called, libev
1505 will assume that this is potentially a new file descriptor, otherwise
1506 it is assumed that the file descriptor stays the same. That means that
1507 you I<have> to call C<ev_io_set> (or C<ev_io_init>) when you change the
1508 descriptor even if the file descriptor number itself did not change.
1509
1510 This is how one would do it normally anyway, the important point is that
1511 the libev application should not optimise around libev but should leave
1512 optimisations to libev.
1513
1514 =head3 The special problem of dup'ed file descriptors
1515
1516 Some backends (e.g. epoll), cannot register events for file descriptors,
1517 but only events for the underlying file descriptions. That means when you
1518 have C<dup ()>'ed file descriptors or weirder constellations, and register
1519 events for them, only one file descriptor might actually receive events.
1520
1521 There is no workaround possible except not registering events
1522 for potentially C<dup ()>'ed file descriptors, or to resort to
1523 C<EVBACKEND_SELECT> or C<EVBACKEND_POLL>.
1524
1525 =head3 The special problem of fork
1526
1527 Some backends (epoll, kqueue) do not support C<fork ()> at all or exhibit
1528 useless behaviour. Libev fully supports fork, but needs to be told about
1529 it in the child.
1530
1531 To support fork in your programs, you either have to call
1532 C<ev_default_fork ()> or C<ev_loop_fork ()> after a fork in the child,
1533 enable C<EVFLAG_FORKCHECK>, or resort to C<EVBACKEND_SELECT> or
1534 C<EVBACKEND_POLL>.
1535
1536 =head3 The special problem of SIGPIPE
1537
1538 While not really specific to libev, it is easy to forget about C<SIGPIPE>:
1539 when writing to a pipe whose other end has been closed, your program gets
1540 sent a SIGPIPE, which, by default, aborts your program. For most programs
1541 this is sensible behaviour, for daemons, this is usually undesirable.
1542
1543 So when you encounter spurious, unexplained daemon exits, make sure you
1544 ignore SIGPIPE (and maybe make sure you log the exit status of your daemon
1545 somewhere, as that would have given you a big clue).
1546
1547 =head3 The special problem of accept()ing when you can't
1548
1549 Many implementations of the POSIX C<accept> function (for example,
1550 found in post-2004 Linux) have the peculiar behaviour of not removing a
1551 connection from the pending queue in all error cases.
1552
1553 For example, larger servers often run out of file descriptors (because
1554 of resource limits), causing C<accept> to fail with C<ENFILE> but not
1555 rejecting the connection, leading to libev signalling readiness on
1556 the next iteration again (the connection still exists after all), and
1557 typically causing the program to loop at 100% CPU usage.
1558
1559 Unfortunately, the set of errors that cause this issue differs between
1560 operating systems, there is usually little the app can do to remedy the
1561 situation, and no known thread-safe method of removing the connection to
1562 cope with overload is known (to me).
1563
1564 One of the easiest ways to handle this situation is to just ignore it
1565 - when the program encounters an overload, it will just loop until the
1566 situation is over. While this is a form of busy waiting, no OS offers an
1567 event-based way to handle this situation, so it's the best one can do.
1568
1569 A better way to handle the situation is to log any errors other than
1570 C<EAGAIN> and C<EWOULDBLOCK>, making sure not to flood the log with such
1571 messages, and continue as usual, which at least gives the user an idea of
1572 what could be wrong ("raise the ulimit!"). For extra points one could stop
1573 the C<ev_io> watcher on the listening fd "for a while", which reduces CPU
1574 usage.
1575
1576 If your program is single-threaded, then you could also keep a dummy file
1577 descriptor for overload situations (e.g. by opening F</dev/null>), and
1578 when you run into C<ENFILE> or C<EMFILE>, close it, run C<accept>,
1579 close that fd, and create a new dummy fd. This will gracefully refuse
1580 clients under typical overload conditions.
1581
1582 The last way to handle it is to simply log the error and C<exit>, as
1583 is often done with C<malloc> failures, but this results in an easy
1584 opportunity for a DoS attack.
1585
1586 =head3 Watcher-Specific Functions
1587
1588 =over 4
1589
1590 =item ev_io_init (ev_io *, callback, int fd, int events)
1591
1592 =item ev_io_set (ev_io *, int fd, int events)
1593
1594 Configures an C<ev_io> watcher. The C<fd> is the file descriptor to
1595 receive events for and C<events> is either C<EV_READ>, C<EV_WRITE> or
1596 C<EV_READ | EV_WRITE>, to express the desire to receive the given events.
1597
1598 =item int fd [read-only]
1599
1600 The file descriptor being watched.
1601
1602 =item int events [read-only]
1603
1604 The events being watched.
1605
1606 =back
1607
1608 =head3 Examples
1609
1610 Example: Call C<stdin_readable_cb> when STDIN_FILENO has become, well
1611 readable, but only once. Since it is likely line-buffered, you could
1612 attempt to read a whole line in the callback.
1613
1614 static void
1615 stdin_readable_cb (struct ev_loop *loop, ev_io *w, int revents)
1616 {
1617 ev_io_stop (loop, w);
1618 .. read from stdin here (or from w->fd) and handle any I/O errors
1619 }
1620
1621 ...
1622 struct ev_loop *loop = ev_default_init (0);
1623 ev_io stdin_readable;
1624 ev_io_init (&stdin_readable, stdin_readable_cb, STDIN_FILENO, EV_READ);
1625 ev_io_start (loop, &stdin_readable);
1626 ev_loop (loop, 0);
1627
1628
1629 =head2 C<ev_timer> - relative and optionally repeating timeouts
1630
1631 Timer watchers are simple relative timers that generate an event after a
1632 given time, and optionally repeating in regular intervals after that.
1633
1634 The timers are based on real time, that is, if you register an event that
1635 times out after an hour and you reset your system clock to January last
1636 year, it will still time out after (roughly) one hour. "Roughly" because
1637 detecting time jumps is hard, and some inaccuracies are unavoidable (the
1638 monotonic clock option helps a lot here).
1639
1640 The callback is guaranteed to be invoked only I<after> its timeout has
1641 passed (not I<at>, so on systems with very low-resolution clocks this
1642 might introduce a small delay). If multiple timers become ready during the
1643 same loop iteration then the ones with earlier time-out values are invoked
1644 before ones of the same priority with later time-out values (but this is
1645 no longer true when a callback calls C<ev_loop> recursively).
1646
1647 =head3 Be smart about timeouts
1648
1649 Many real-world problems involve some kind of timeout, usually for error
1650 recovery. A typical example is an HTTP request - if the other side hangs,
1651 you want to raise some error after a while.
1652
1653 What follows are some ways to handle this problem, from obvious and
1654 inefficient to smart and efficient.
1655
1656 In the following, a 60 second activity timeout is assumed - a timeout that
1657 gets reset to 60 seconds each time there is activity (e.g. each time some
1658 data or other life sign was received).
1659
1660 =over 4
1661
1662 =item 1. Use a timer and stop, reinitialise and start it on activity.
1663
1664 This is the most obvious, but not the most simple way: In the beginning,
1665 start the watcher:
1666
1667 ev_timer_init (timer, callback, 60., 0.);
1668 ev_timer_start (loop, timer);
1669
1670 Then, each time there is some activity, C<ev_timer_stop> it, initialise it
1671 and start it again:
1672
1673 ev_timer_stop (loop, timer);
1674 ev_timer_set (timer, 60., 0.);
1675 ev_timer_start (loop, timer);
1676
1677 This is relatively simple to implement, but means that each time there is
1678 some activity, libev will first have to remove the timer from its internal
1679 data structure and then add it again. Libev tries to be fast, but it's
1680 still not a constant-time operation.
1681
1682 =item 2. Use a timer and re-start it with C<ev_timer_again> inactivity.
1683
1684 This is the easiest way, and involves using C<ev_timer_again> instead of
1685 C<ev_timer_start>.
1686
1687 To implement this, configure an C<ev_timer> with a C<repeat> value
1688 of C<60> and then call C<ev_timer_again> at start and each time you
1689 successfully read or write some data. If you go into an idle state where
1690 you do not expect data to travel on the socket, you can C<ev_timer_stop>
1691 the timer, and C<ev_timer_again> will automatically restart it if need be.
1692
1693 That means you can ignore both the C<ev_timer_start> function and the
1694 C<after> argument to C<ev_timer_set>, and only ever use the C<repeat>
1695 member and C<ev_timer_again>.
1696
1697 At start:
1698
1699 ev_init (timer, callback);
1700 timer->repeat = 60.;
1701 ev_timer_again (loop, timer);
1702
1703 Each time there is some activity:
1704
1705 ev_timer_again (loop, timer);
1706
1707 It is even possible to change the time-out on the fly, regardless of
1708 whether the watcher is active or not:
1709
1710 timer->repeat = 30.;
1711 ev_timer_again (loop, timer);
1712
1713 This is slightly more efficient then stopping/starting the timer each time
1714 you want to modify its timeout value, as libev does not have to completely
1715 remove and re-insert the timer from/into its internal data structure.
1716
1717 It is, however, even simpler than the "obvious" way to do it.
1718
1719 =item 3. Let the timer time out, but then re-arm it as required.
1720
1721 This method is more tricky, but usually most efficient: Most timeouts are
1722 relatively long compared to the intervals between other activity - in
1723 our example, within 60 seconds, there are usually many I/O events with
1724 associated activity resets.
1725
1726 In this case, it would be more efficient to leave the C<ev_timer> alone,
1727 but remember the time of last activity, and check for a real timeout only
1728 within the callback:
1729
1730 ev_tstamp last_activity; // time of last activity
1731
1732 static void
1733 callback (EV_P_ ev_timer *w, int revents)
1734 {
1735 ev_tstamp now = ev_now (EV_A);
1736 ev_tstamp timeout = last_activity + 60.;
1737
1738 // if last_activity + 60. is older than now, we did time out
1739 if (timeout < now)
1740 {
1741 // timeout occured, take action
1742 }
1743 else
1744 {
1745 // callback was invoked, but there was some activity, re-arm
1746 // the watcher to fire in last_activity + 60, which is
1747 // guaranteed to be in the future, so "again" is positive:
1748 w->repeat = timeout - now;
1749 ev_timer_again (EV_A_ w);
1750 }
1751 }
1752
1753 To summarise the callback: first calculate the real timeout (defined
1754 as "60 seconds after the last activity"), then check if that time has
1755 been reached, which means something I<did>, in fact, time out. Otherwise
1756 the callback was invoked too early (C<timeout> is in the future), so
1757 re-schedule the timer to fire at that future time, to see if maybe we have
1758 a timeout then.
1759
1760 Note how C<ev_timer_again> is used, taking advantage of the
1761 C<ev_timer_again> optimisation when the timer is already running.
1762
1763 This scheme causes more callback invocations (about one every 60 seconds
1764 minus half the average time between activity), but virtually no calls to
1765 libev to change the timeout.
1766
1767 To start the timer, simply initialise the watcher and set C<last_activity>
1768 to the current time (meaning we just have some activity :), then call the
1769 callback, which will "do the right thing" and start the timer:
1770
1771 ev_init (timer, callback);
1772 last_activity = ev_now (loop);
1773 callback (loop, timer, EV_TIMER);
1774
1775 And when there is some activity, simply store the current time in
1776 C<last_activity>, no libev calls at all:
1777
1778 last_actiivty = ev_now (loop);
1779
1780 This technique is slightly more complex, but in most cases where the
1781 time-out is unlikely to be triggered, much more efficient.
1782
1783 Changing the timeout is trivial as well (if it isn't hard-coded in the
1784 callback :) - just change the timeout and invoke the callback, which will
1785 fix things for you.
1786
1787 =item 4. Wee, just use a double-linked list for your timeouts.
1788
1789 If there is not one request, but many thousands (millions...), all
1790 employing some kind of timeout with the same timeout value, then one can
1791 do even better:
1792
1793 When starting the timeout, calculate the timeout value and put the timeout
1794 at the I<end> of the list.
1795
1796 Then use an C<ev_timer> to fire when the timeout at the I<beginning> of
1797 the list is expected to fire (for example, using the technique #3).
1798
1799 When there is some activity, remove the timer from the list, recalculate
1800 the timeout, append it to the end of the list again, and make sure to
1801 update the C<ev_timer> if it was taken from the beginning of the list.
1802
1803 This way, one can manage an unlimited number of timeouts in O(1) time for
1804 starting, stopping and updating the timers, at the expense of a major
1805 complication, and having to use a constant timeout. The constant timeout
1806 ensures that the list stays sorted.
1807
1808 =back
1809
1810 So which method the best?
1811
1812 Method #2 is a simple no-brain-required solution that is adequate in most
1813 situations. Method #3 requires a bit more thinking, but handles many cases
1814 better, and isn't very complicated either. In most case, choosing either
1815 one is fine, with #3 being better in typical situations.
1816
1817 Method #1 is almost always a bad idea, and buys you nothing. Method #4 is
1818 rather complicated, but extremely efficient, something that really pays
1819 off after the first million or so of active timers, i.e. it's usually
1820 overkill :)
1821
1822 =head3 The special problem of time updates
1823
1824 Establishing the current time is a costly operation (it usually takes at
1825 least two system calls): EV therefore updates its idea of the current
1826 time only before and after C<ev_loop> collects new events, which causes a
1827 growing difference between C<ev_now ()> and C<ev_time ()> when handling
1828 lots of events in one iteration.
1829
1830 The relative timeouts are calculated relative to the C<ev_now ()>
1831 time. This is usually the right thing as this timestamp refers to the time
1832 of the event triggering whatever timeout you are modifying/starting. If
1833 you suspect event processing to be delayed and you I<need> to base the
1834 timeout on the current time, use something like this to adjust for this:
1835
1836 ev_timer_set (&timer, after + ev_now () - ev_time (), 0.);
1837
1838 If the event loop is suspended for a long time, you can also force an
1839 update of the time returned by C<ev_now ()> by calling C<ev_now_update
1840 ()>.
1841
1842 =head3 The special problems of suspended animation
1843
1844 When you leave the server world it is quite customary to hit machines that
1845 can suspend/hibernate - what happens to the clocks during such a suspend?
1846
1847 Some quick tests made with a Linux 2.6.28 indicate that a suspend freezes
1848 all processes, while the clocks (C<times>, C<CLOCK_MONOTONIC>) continue
1849 to run until the system is suspended, but they will not advance while the
1850 system is suspended. That means, on resume, it will be as if the program
1851 was frozen for a few seconds, but the suspend time will not be counted
1852 towards C<ev_timer> when a monotonic clock source is used. The real time
1853 clock advanced as expected, but if it is used as sole clocksource, then a
1854 long suspend would be detected as a time jump by libev, and timers would
1855 be adjusted accordingly.
1856
1857 I would not be surprised to see different behaviour in different between
1858 operating systems, OS versions or even different hardware.
1859
1860 The other form of suspend (job control, or sending a SIGSTOP) will see a
1861 time jump in the monotonic clocks and the realtime clock. If the program
1862 is suspended for a very long time, and monotonic clock sources are in use,
1863 then you can expect C<ev_timer>s to expire as the full suspension time
1864 will be counted towards the timers. When no monotonic clock source is in
1865 use, then libev will again assume a timejump and adjust accordingly.
1866
1867 It might be beneficial for this latter case to call C<ev_suspend>
1868 and C<ev_resume> in code that handles C<SIGTSTP>, to at least get
1869 deterministic behaviour in this case (you can do nothing against
1870 C<SIGSTOP>).
1871
1872 =head3 Watcher-Specific Functions and Data Members
1873
1874 =over 4
1875
1876 =item ev_timer_init (ev_timer *, callback, ev_tstamp after, ev_tstamp repeat)
1877
1878 =item ev_timer_set (ev_timer *, ev_tstamp after, ev_tstamp repeat)
1879
1880 Configure the timer to trigger after C<after> seconds. If C<repeat>
1881 is C<0.>, then it will automatically be stopped once the timeout is
1882 reached. If it is positive, then the timer will automatically be
1883 configured to trigger again C<repeat> seconds later, again, and again,
1884 until stopped manually.
1885
1886 The timer itself will do a best-effort at avoiding drift, that is, if
1887 you configure a timer to trigger every 10 seconds, then it will normally
1888 trigger at exactly 10 second intervals. If, however, your program cannot
1889 keep up with the timer (because it takes longer than those 10 seconds to
1890 do stuff) the timer will not fire more than once per event loop iteration.
1891
1892 =item ev_timer_again (loop, ev_timer *)
1893
1894 This will act as if the timer timed out and restart it again if it is
1895 repeating. The exact semantics are:
1896
1897 If the timer is pending, its pending status is cleared.
1898
1899 If the timer is started but non-repeating, stop it (as if it timed out).
1900
1901 If the timer is repeating, either start it if necessary (with the
1902 C<repeat> value), or reset the running timer to the C<repeat> value.
1903
1904 This sounds a bit complicated, see L<Be smart about timeouts>, above, for a
1905 usage example.
1906
1907 =item ev_tstamp ev_timer_remaining (loop, ev_timer *)
1908
1909 Returns the remaining time until a timer fires. If the timer is active,
1910 then this time is relative to the current event loop time, otherwise it's
1911 the timeout value currently configured.
1912
1913 That is, after an C<ev_timer_set (w, 5, 7)>, C<ev_timer_remaining> returns
1914 C<5>. When the timer is started and one second passes, C<ev_timer_remaining>
1915 will return C<4>. When the timer expires and is restarted, it will return
1916 roughly C<7> (likely slightly less as callback invocation takes some time,
1917 too), and so on.
1918
1919 =item ev_tstamp repeat [read-write]
1920
1921 The current C<repeat> value. Will be used each time the watcher times out
1922 or C<ev_timer_again> is called, and determines the next timeout (if any),
1923 which is also when any modifications are taken into account.
1924
1925 =back
1926
1927 =head3 Examples
1928
1929 Example: Create a timer that fires after 60 seconds.
1930
1931 static void
1932 one_minute_cb (struct ev_loop *loop, ev_timer *w, int revents)
1933 {
1934 .. one minute over, w is actually stopped right here
1935 }
1936
1937 ev_timer mytimer;
1938 ev_timer_init (&mytimer, one_minute_cb, 60., 0.);
1939 ev_timer_start (loop, &mytimer);
1940
1941 Example: Create a timeout timer that times out after 10 seconds of
1942 inactivity.
1943
1944 static void
1945 timeout_cb (struct ev_loop *loop, ev_timer *w, int revents)
1946 {
1947 .. ten seconds without any activity
1948 }
1949
1950 ev_timer mytimer;
1951 ev_timer_init (&mytimer, timeout_cb, 0., 10.); /* note, only repeat used */
1952 ev_timer_again (&mytimer); /* start timer */
1953 ev_loop (loop, 0);
1954
1955 // and in some piece of code that gets executed on any "activity":
1956 // reset the timeout to start ticking again at 10 seconds
1957 ev_timer_again (&mytimer);
1958
1959
1960 =head2 C<ev_periodic> - to cron or not to cron?
1961
1962 Periodic watchers are also timers of a kind, but they are very versatile
1963 (and unfortunately a bit complex).
1964
1965 Unlike C<ev_timer>, periodic watchers are not based on real time (or
1966 relative time, the physical time that passes) but on wall clock time
1967 (absolute time, the thing you can read on your calender or clock). The
1968 difference is that wall clock time can run faster or slower than real
1969 time, and time jumps are not uncommon (e.g. when you adjust your
1970 wrist-watch).
1971
1972 You can tell a periodic watcher to trigger after some specific point
1973 in time: for example, if you tell a periodic watcher to trigger "in 10
1974 seconds" (by specifying e.g. C<ev_now () + 10.>, that is, an absolute time
1975 not a delay) and then reset your system clock to January of the previous
1976 year, then it will take a year or more to trigger the event (unlike an
1977 C<ev_timer>, which would still trigger roughly 10 seconds after starting
1978 it, as it uses a relative timeout).
1979
1980 C<ev_periodic> watchers can also be used to implement vastly more complex
1981 timers, such as triggering an event on each "midnight, local time", or
1982 other complicated rules. This cannot be done with C<ev_timer> watchers, as
1983 those cannot react to time jumps.
1984
1985 As with timers, the callback is guaranteed to be invoked only when the
1986 point in time where it is supposed to trigger has passed. If multiple
1987 timers become ready during the same loop iteration then the ones with
1988 earlier time-out values are invoked before ones with later time-out values
1989 (but this is no longer true when a callback calls C<ev_loop> recursively).
1990
1991 =head3 Watcher-Specific Functions and Data Members
1992
1993 =over 4
1994
1995 =item ev_periodic_init (ev_periodic *, callback, ev_tstamp offset, ev_tstamp interval, reschedule_cb)
1996
1997 =item ev_periodic_set (ev_periodic *, ev_tstamp offset, ev_tstamp interval, reschedule_cb)
1998
1999 Lots of arguments, let's sort it out... There are basically three modes of
2000 operation, and we will explain them from simplest to most complex:
2001
2002 =over 4
2003
2004 =item * absolute timer (offset = absolute time, interval = 0, reschedule_cb = 0)
2005
2006 In this configuration the watcher triggers an event after the wall clock
2007 time C<offset> has passed. It will not repeat and will not adjust when a
2008 time jump occurs, that is, if it is to be run at January 1st 2011 then it
2009 will be stopped and invoked when the system clock reaches or surpasses
2010 this point in time.
2011
2012 =item * repeating interval timer (offset = offset within interval, interval > 0, reschedule_cb = 0)
2013
2014 In this mode the watcher will always be scheduled to time out at the next
2015 C<offset + N * interval> time (for some integer N, which can also be
2016 negative) and then repeat, regardless of any time jumps. The C<offset>
2017 argument is merely an offset into the C<interval> periods.
2018
2019 This can be used to create timers that do not drift with respect to the
2020 system clock, for example, here is an C<ev_periodic> that triggers each
2021 hour, on the hour (with respect to UTC):
2022
2023 ev_periodic_set (&periodic, 0., 3600., 0);
2024
2025 This doesn't mean there will always be 3600 seconds in between triggers,
2026 but only that the callback will be called when the system time shows a
2027 full hour (UTC), or more correctly, when the system time is evenly divisible
2028 by 3600.
2029
2030 Another way to think about it (for the mathematically inclined) is that
2031 C<ev_periodic> will try to run the callback in this mode at the next possible
2032 time where C<time = offset (mod interval)>, regardless of any time jumps.
2033
2034 For numerical stability it is preferable that the C<offset> value is near
2035 C<ev_now ()> (the current time), but there is no range requirement for
2036 this value, and in fact is often specified as zero.
2037
2038 Note also that there is an upper limit to how often a timer can fire (CPU
2039 speed for example), so if C<interval> is very small then timing stability
2040 will of course deteriorate. Libev itself tries to be exact to be about one
2041 millisecond (if the OS supports it and the machine is fast enough).
2042
2043 =item * manual reschedule mode (offset ignored, interval ignored, reschedule_cb = callback)
2044
2045 In this mode the values for C<interval> and C<offset> are both being
2046 ignored. Instead, each time the periodic watcher gets scheduled, the
2047 reschedule callback will be called with the watcher as first, and the
2048 current time as second argument.
2049
2050 NOTE: I<This callback MUST NOT stop or destroy any periodic watcher, ever,
2051 or make ANY other event loop modifications whatsoever, unless explicitly
2052 allowed by documentation here>.
2053
2054 If you need to stop it, return C<now + 1e30> (or so, fudge fudge) and stop
2055 it afterwards (e.g. by starting an C<ev_prepare> watcher, which is the
2056 only event loop modification you are allowed to do).
2057
2058 The callback prototype is C<ev_tstamp (*reschedule_cb)(ev_periodic
2059 *w, ev_tstamp now)>, e.g.:
2060
2061 static ev_tstamp
2062 my_rescheduler (ev_periodic *w, ev_tstamp now)
2063 {
2064 return now + 60.;
2065 }
2066
2067 It must return the next time to trigger, based on the passed time value
2068 (that is, the lowest time value larger than to the second argument). It
2069 will usually be called just before the callback will be triggered, but
2070 might be called at other times, too.
2071
2072 NOTE: I<< This callback must always return a time that is higher than or
2073 equal to the passed C<now> value >>.
2074
2075 This can be used to create very complex timers, such as a timer that
2076 triggers on "next midnight, local time". To do this, you would calculate the
2077 next midnight after C<now> and return the timestamp value for this. How
2078 you do this is, again, up to you (but it is not trivial, which is the main
2079 reason I omitted it as an example).
2080
2081 =back
2082
2083 =item ev_periodic_again (loop, ev_periodic *)
2084
2085 Simply stops and restarts the periodic watcher again. This is only useful
2086 when you changed some parameters or the reschedule callback would return
2087 a different time than the last time it was called (e.g. in a crond like
2088 program when the crontabs have changed).
2089
2090 =item ev_tstamp ev_periodic_at (ev_periodic *)
2091
2092 When active, returns the absolute time that the watcher is supposed
2093 to trigger next. This is not the same as the C<offset> argument to
2094 C<ev_periodic_set>, but indeed works even in interval and manual
2095 rescheduling modes.
2096
2097 =item ev_tstamp offset [read-write]
2098
2099 When repeating, this contains the offset value, otherwise this is the
2100 absolute point in time (the C<offset> value passed to C<ev_periodic_set>,
2101 although libev might modify this value for better numerical stability).
2102
2103 Can be modified any time, but changes only take effect when the periodic
2104 timer fires or C<ev_periodic_again> is being called.
2105
2106 =item ev_tstamp interval [read-write]
2107
2108 The current interval value. Can be modified any time, but changes only
2109 take effect when the periodic timer fires or C<ev_periodic_again> is being
2110 called.
2111
2112 =item ev_tstamp (*reschedule_cb)(ev_periodic *w, ev_tstamp now) [read-write]
2113
2114 The current reschedule callback, or C<0>, if this functionality is
2115 switched off. Can be changed any time, but changes only take effect when
2116 the periodic timer fires or C<ev_periodic_again> is being called.
2117
2118 =back
2119
2120 =head3 Examples
2121
2122 Example: Call a callback every hour, or, more precisely, whenever the
2123 system time is divisible by 3600. The callback invocation times have
2124 potentially a lot of jitter, but good long-term stability.
2125
2126 static void
2127 clock_cb (struct ev_loop *loop, ev_io *w, int revents)
2128 {
2129 ... its now a full hour (UTC, or TAI or whatever your clock follows)
2130 }
2131
2132 ev_periodic hourly_tick;
2133 ev_periodic_init (&hourly_tick, clock_cb, 0., 3600., 0);
2134 ev_periodic_start (loop, &hourly_tick);
2135
2136 Example: The same as above, but use a reschedule callback to do it:
2137
2138 #include <math.h>
2139
2140 static ev_tstamp
2141 my_scheduler_cb (ev_periodic *w, ev_tstamp now)
2142 {
2143 return now + (3600. - fmod (now, 3600.));
2144 }
2145
2146 ev_periodic_init (&hourly_tick, clock_cb, 0., 0., my_scheduler_cb);
2147
2148 Example: Call a callback every hour, starting now:
2149
2150 ev_periodic hourly_tick;
2151 ev_periodic_init (&hourly_tick, clock_cb,
2152 fmod (ev_now (loop), 3600.), 3600., 0);
2153 ev_periodic_start (loop, &hourly_tick);
2154
2155
2156 =head2 C<ev_signal> - signal me when a signal gets signalled!
2157
2158 Signal watchers will trigger an event when the process receives a specific
2159 signal one or more times. Even though signals are very asynchronous, libev
2160 will try it's best to deliver signals synchronously, i.e. as part of the
2161 normal event processing, like any other event.
2162
2163 If you want signals to be delivered truly asynchronously, just use
2164 C<sigaction> as you would do without libev and forget about sharing
2165 the signal. You can even use C<ev_async> from a signal handler to
2166 synchronously wake up an event loop.
2167
2168 You can configure as many watchers as you like for the same signal, but
2169 only within the same loop, i.e. you can watch for C<SIGINT> in your
2170 default loop and for C<SIGIO> in another loop, but you cannot watch for
2171 C<SIGINT> in both the default loop and another loop at the same time. At
2172 the moment, C<SIGCHLD> is permanently tied to the default loop.
2173
2174 When the first watcher gets started will libev actually register something
2175 with the kernel (thus it coexists with your own signal handlers as long as
2176 you don't register any with libev for the same signal).
2177
2178 If possible and supported, libev will install its handlers with
2179 C<SA_RESTART> (or equivalent) behaviour enabled, so system calls should
2180 not be unduly interrupted. If you have a problem with system calls getting
2181 interrupted by signals you can block all signals in an C<ev_check> watcher
2182 and unblock them in an C<ev_prepare> watcher.
2183
2184 =head3 The special problem of inheritance over fork/execve/pthread_create
2185
2186 Both the signal mask (C<sigprocmask>) and the signal disposition
2187 (C<sigaction>) are unspecified after starting a signal watcher (and after
2188 stopping it again), that is, libev might or might not block the signal,
2189 and might or might not set or restore the installed signal handler.
2190
2191 While this does not matter for the signal disposition (libev never
2192 sets signals to C<SIG_IGN>, so handlers will be reset to C<SIG_DFL> on
2193 C<execve>), this matters for the signal mask: many programs do not expect
2194 certain signals to be blocked.
2195
2196 This means that before calling C<exec> (from the child) you should reset
2197 the signal mask to whatever "default" you expect (all clear is a good
2198 choice usually).
2199
2200 The simplest way to ensure that the signal mask is reset in the child is
2201 to install a fork handler with C<pthread_atfork> that resets it. That will
2202 catch fork calls done by libraries (such as the libc) as well.
2203
2204 In current versions of libev, the signal will not be blocked indefinitely
2205 unless you use the C<signalfd> API (C<EV_SIGNALFD>). While this reduces
2206 the window of opportunity for problems, it will not go away, as libev
2207 I<has> to modify the signal mask, at least temporarily.
2208
2209 So I can't stress this enough: I<If you do not reset your signal mask when
2210 you expect it to be empty, you have a race condition in your code>. This
2211 is not a libev-specific thing, this is true for most event libraries.
2212
2213 =head3 Watcher-Specific Functions and Data Members
2214
2215 =over 4
2216
2217 =item ev_signal_init (ev_signal *, callback, int signum)
2218
2219 =item ev_signal_set (ev_signal *, int signum)
2220
2221 Configures the watcher to trigger on the given signal number (usually one
2222 of the C<SIGxxx> constants).
2223
2224 =item int signum [read-only]
2225
2226 The signal the watcher watches out for.
2227
2228 =back
2229
2230 =head3 Examples
2231
2232 Example: Try to exit cleanly on SIGINT.
2233
2234 static void
2235 sigint_cb (struct ev_loop *loop, ev_signal *w, int revents)
2236 {
2237 ev_unloop (loop, EVUNLOOP_ALL);
2238 }
2239
2240 ev_signal signal_watcher;
2241 ev_signal_init (&signal_watcher, sigint_cb, SIGINT);
2242 ev_signal_start (loop, &signal_watcher);
2243
2244
2245 =head2 C<ev_child> - watch out for process status changes
2246
2247 Child watchers trigger when your process receives a SIGCHLD in response to
2248 some child status changes (most typically when a child of yours dies or
2249 exits). It is permissible to install a child watcher I<after> the child
2250 has been forked (which implies it might have already exited), as long
2251 as the event loop isn't entered (or is continued from a watcher), i.e.,
2252 forking and then immediately registering a watcher for the child is fine,
2253 but forking and registering a watcher a few event loop iterations later or
2254 in the next callback invocation is not.
2255
2256 Only the default event loop is capable of handling signals, and therefore
2257 you can only register child watchers in the default event loop.
2258
2259 Due to some design glitches inside libev, child watchers will always be
2260 handled at maximum priority (their priority is set to C<EV_MAXPRI> by
2261 libev)
2262
2263 =head3 Process Interaction
2264
2265 Libev grabs C<SIGCHLD> as soon as the default event loop is
2266 initialised. This is necessary to guarantee proper behaviour even if the
2267 first child watcher is started after the child exits. The occurrence
2268 of C<SIGCHLD> is recorded asynchronously, but child reaping is done
2269 synchronously as part of the event loop processing. Libev always reaps all
2270 children, even ones not watched.
2271
2272 =head3 Overriding the Built-In Processing
2273
2274 Libev offers no special support for overriding the built-in child
2275 processing, but if your application collides with libev's default child
2276 handler, you can override it easily by installing your own handler for
2277 C<SIGCHLD> after initialising the default loop, and making sure the
2278 default loop never gets destroyed. You are encouraged, however, to use an
2279 event-based approach to child reaping and thus use libev's support for
2280 that, so other libev users can use C<ev_child> watchers freely.
2281
2282 =head3 Stopping the Child Watcher
2283
2284 Currently, the child watcher never gets stopped, even when the
2285 child terminates, so normally one needs to stop the watcher in the
2286 callback. Future versions of libev might stop the watcher automatically
2287 when a child exit is detected (calling C<ev_child_stop> twice is not a
2288 problem).
2289
2290 =head3 Watcher-Specific Functions and Data Members
2291
2292 =over 4
2293
2294 =item ev_child_init (ev_child *, callback, int pid, int trace)
2295
2296 =item ev_child_set (ev_child *, int pid, int trace)
2297
2298 Configures the watcher to wait for status changes of process C<pid> (or
2299 I<any> process if C<pid> is specified as C<0>). The callback can look
2300 at the C<rstatus> member of the C<ev_child> watcher structure to see
2301 the status word (use the macros from C<sys/wait.h> and see your systems
2302 C<waitpid> documentation). The C<rpid> member contains the pid of the
2303 process causing the status change. C<trace> must be either C<0> (only
2304 activate the watcher when the process terminates) or C<1> (additionally
2305 activate the watcher when the process is stopped or continued).
2306
2307 =item int pid [read-only]
2308
2309 The process id this watcher watches out for, or C<0>, meaning any process id.
2310
2311 =item int rpid [read-write]
2312
2313 The process id that detected a status change.
2314
2315 =item int rstatus [read-write]
2316
2317 The process exit/trace status caused by C<rpid> (see your systems
2318 C<waitpid> and C<sys/wait.h> documentation for details).
2319
2320 =back
2321
2322 =head3 Examples
2323
2324 Example: C<fork()> a new process and install a child handler to wait for
2325 its completion.
2326
2327 ev_child cw;
2328
2329 static void
2330 child_cb (EV_P_ ev_child *w, int revents)
2331 {
2332 ev_child_stop (EV_A_ w);
2333 printf ("process %d exited with status %x\n", w->rpid, w->rstatus);
2334 }
2335
2336 pid_t pid = fork ();
2337
2338 if (pid < 0)
2339 // error
2340 else if (pid == 0)
2341 {
2342 // the forked child executes here
2343 exit (1);
2344 }
2345 else
2346 {
2347 ev_child_init (&cw, child_cb, pid, 0);
2348 ev_child_start (EV_DEFAULT_ &cw);
2349 }
2350
2351
2352 =head2 C<ev_stat> - did the file attributes just change?
2353
2354 This watches a file system path for attribute changes. That is, it calls
2355 C<stat> on that path in regular intervals (or when the OS says it changed)
2356 and sees if it changed compared to the last time, invoking the callback if
2357 it did.
2358
2359 The path does not need to exist: changing from "path exists" to "path does
2360 not exist" is a status change like any other. The condition "path does not
2361 exist" (or more correctly "path cannot be stat'ed") is signified by the
2362 C<st_nlink> field being zero (which is otherwise always forced to be at
2363 least one) and all the other fields of the stat buffer having unspecified
2364 contents.
2365
2366 The path I<must not> end in a slash or contain special components such as
2367 C<.> or C<..>. The path I<should> be absolute: If it is relative and
2368 your working directory changes, then the behaviour is undefined.
2369
2370 Since there is no portable change notification interface available, the
2371 portable implementation simply calls C<stat(2)> regularly on the path
2372 to see if it changed somehow. You can specify a recommended polling
2373 interval for this case. If you specify a polling interval of C<0> (highly
2374 recommended!) then a I<suitable, unspecified default> value will be used
2375 (which you can expect to be around five seconds, although this might
2376 change dynamically). Libev will also impose a minimum interval which is
2377 currently around C<0.1>, but that's usually overkill.
2378
2379 This watcher type is not meant for massive numbers of stat watchers,
2380 as even with OS-supported change notifications, this can be
2381 resource-intensive.
2382
2383 At the time of this writing, the only OS-specific interface implemented
2384 is the Linux inotify interface (implementing kqueue support is left as an
2385 exercise for the reader. Note, however, that the author sees no way of
2386 implementing C<ev_stat> semantics with kqueue, except as a hint).
2387
2388 =head3 ABI Issues (Largefile Support)
2389
2390 Libev by default (unless the user overrides this) uses the default
2391 compilation environment, which means that on systems with large file
2392 support disabled by default, you get the 32 bit version of the stat
2393 structure. When using the library from programs that change the ABI to
2394 use 64 bit file offsets the programs will fail. In that case you have to
2395 compile libev with the same flags to get binary compatibility. This is
2396 obviously the case with any flags that change the ABI, but the problem is
2397 most noticeably displayed with ev_stat and large file support.
2398
2399 The solution for this is to lobby your distribution maker to make large
2400 file interfaces available by default (as e.g. FreeBSD does) and not
2401 optional. Libev cannot simply switch on large file support because it has
2402 to exchange stat structures with application programs compiled using the
2403 default compilation environment.
2404
2405 =head3 Inotify and Kqueue
2406
2407 When C<inotify (7)> support has been compiled into libev and present at
2408 runtime, it will be used to speed up change detection where possible. The
2409 inotify descriptor will be created lazily when the first C<ev_stat>
2410 watcher is being started.
2411
2412 Inotify presence does not change the semantics of C<ev_stat> watchers
2413 except that changes might be detected earlier, and in some cases, to avoid
2414 making regular C<stat> calls. Even in the presence of inotify support
2415 there are many cases where libev has to resort to regular C<stat> polling,
2416 but as long as kernel 2.6.25 or newer is used (2.6.24 and older have too
2417 many bugs), the path exists (i.e. stat succeeds), and the path resides on
2418 a local filesystem (libev currently assumes only ext2/3, jfs, reiserfs and
2419 xfs are fully working) libev usually gets away without polling.
2420
2421 There is no support for kqueue, as apparently it cannot be used to
2422 implement this functionality, due to the requirement of having a file
2423 descriptor open on the object at all times, and detecting renames, unlinks
2424 etc. is difficult.
2425
2426 =head3 C<stat ()> is a synchronous operation
2427
2428 Libev doesn't normally do any kind of I/O itself, and so is not blocking
2429 the process. The exception are C<ev_stat> watchers - those call C<stat
2430 ()>, which is a synchronous operation.
2431
2432 For local paths, this usually doesn't matter: unless the system is very
2433 busy or the intervals between stat's are large, a stat call will be fast,
2434 as the path data is usually in memory already (except when starting the
2435 watcher).
2436
2437 For networked file systems, calling C<stat ()> can block an indefinite
2438 time due to network issues, and even under good conditions, a stat call
2439 often takes multiple milliseconds.
2440
2441 Therefore, it is best to avoid using C<ev_stat> watchers on networked
2442 paths, although this is fully supported by libev.
2443
2444 =head3 The special problem of stat time resolution
2445
2446 The C<stat ()> system call only supports full-second resolution portably,
2447 and even on systems where the resolution is higher, most file systems
2448 still only support whole seconds.
2449
2450 That means that, if the time is the only thing that changes, you can
2451 easily miss updates: on the first update, C<ev_stat> detects a change and
2452 calls your callback, which does something. When there is another update
2453 within the same second, C<ev_stat> will be unable to detect unless the
2454 stat data does change in other ways (e.g. file size).
2455
2456 The solution to this is to delay acting on a change for slightly more
2457 than a second (or till slightly after the next full second boundary), using
2458 a roughly one-second-delay C<ev_timer> (e.g. C<ev_timer_set (w, 0., 1.02);
2459 ev_timer_again (loop, w)>).
2460
2461 The C<.02> offset is added to work around small timing inconsistencies
2462 of some operating systems (where the second counter of the current time
2463 might be be delayed. One such system is the Linux kernel, where a call to
2464 C<gettimeofday> might return a timestamp with a full second later than
2465 a subsequent C<time> call - if the equivalent of C<time ()> is used to
2466 update file times then there will be a small window where the kernel uses
2467 the previous second to update file times but libev might already execute
2468 the timer callback).
2469
2470 =head3 Watcher-Specific Functions and Data Members
2471
2472 =over 4
2473
2474 =item ev_stat_init (ev_stat *, callback, const char *path, ev_tstamp interval)
2475
2476 =item ev_stat_set (ev_stat *, const char *path, ev_tstamp interval)
2477
2478 Configures the watcher to wait for status changes of the given
2479 C<path>. The C<interval> is a hint on how quickly a change is expected to
2480 be detected and should normally be specified as C<0> to let libev choose
2481 a suitable value. The memory pointed to by C<path> must point to the same
2482 path for as long as the watcher is active.
2483
2484 The callback will receive an C<EV_STAT> event when a change was detected,
2485 relative to the attributes at the time the watcher was started (or the
2486 last change was detected).
2487
2488 =item ev_stat_stat (loop, ev_stat *)
2489
2490 Updates the stat buffer immediately with new values. If you change the
2491 watched path in your callback, you could call this function to avoid
2492 detecting this change (while introducing a race condition if you are not
2493 the only one changing the path). Can also be useful simply to find out the
2494 new values.
2495
2496 =item ev_statdata attr [read-only]
2497
2498 The most-recently detected attributes of the file. Although the type is
2499 C<ev_statdata>, this is usually the (or one of the) C<struct stat> types
2500 suitable for your system, but you can only rely on the POSIX-standardised
2501 members to be present. If the C<st_nlink> member is C<0>, then there was
2502 some error while C<stat>ing the file.
2503
2504 =item ev_statdata prev [read-only]
2505
2506 The previous attributes of the file. The callback gets invoked whenever
2507 C<prev> != C<attr>, or, more precisely, one or more of these members
2508 differ: C<st_dev>, C<st_ino>, C<st_mode>, C<st_nlink>, C<st_uid>,
2509 C<st_gid>, C<st_rdev>, C<st_size>, C<st_atime>, C<st_mtime>, C<st_ctime>.
2510
2511 =item ev_tstamp interval [read-only]
2512
2513 The specified interval.
2514
2515 =item const char *path [read-only]
2516
2517 The file system path that is being watched.
2518
2519 =back
2520
2521 =head3 Examples
2522
2523 Example: Watch C</etc/passwd> for attribute changes.
2524
2525 static void
2526 passwd_cb (struct ev_loop *loop, ev_stat *w, int revents)
2527 {
2528 /* /etc/passwd changed in some way */
2529 if (w->attr.st_nlink)
2530 {
2531 printf ("passwd current size %ld\n", (long)w->attr.st_size);
2532 printf ("passwd current atime %ld\n", (long)w->attr.st_mtime);
2533 printf ("passwd current mtime %ld\n", (long)w->attr.st_mtime);
2534 }
2535 else
2536 /* you shalt not abuse printf for puts */
2537 puts ("wow, /etc/passwd is not there, expect problems. "
2538 "if this is windows, they already arrived\n");
2539 }
2540
2541 ...
2542 ev_stat passwd;
2543
2544 ev_stat_init (&passwd, passwd_cb, "/etc/passwd", 0.);
2545 ev_stat_start (loop, &passwd);
2546
2547 Example: Like above, but additionally use a one-second delay so we do not
2548 miss updates (however, frequent updates will delay processing, too, so
2549 one might do the work both on C<ev_stat> callback invocation I<and> on
2550 C<ev_timer> callback invocation).
2551
2552 static ev_stat passwd;
2553 static ev_timer timer;
2554
2555 static void
2556 timer_cb (EV_P_ ev_timer *w, int revents)
2557 {
2558 ev_timer_stop (EV_A_ w);
2559
2560 /* now it's one second after the most recent passwd change */
2561 }
2562
2563 static void
2564 stat_cb (EV_P_ ev_stat *w, int revents)
2565 {
2566 /* reset the one-second timer */
2567 ev_timer_again (EV_A_ &timer);
2568 }
2569
2570 ...
2571 ev_stat_init (&passwd, stat_cb, "/etc/passwd", 0.);
2572 ev_stat_start (loop, &passwd);
2573 ev_timer_init (&timer, timer_cb, 0., 1.02);
2574
2575
2576 =head2 C<ev_idle> - when you've got nothing better to do...
2577
2578 Idle watchers trigger events when no other events of the same or higher
2579 priority are pending (prepare, check and other idle watchers do not count
2580 as receiving "events").
2581
2582 That is, as long as your process is busy handling sockets or timeouts
2583 (or even signals, imagine) of the same or higher priority it will not be
2584 triggered. But when your process is idle (or only lower-priority watchers
2585 are pending), the idle watchers are being called once per event loop
2586 iteration - until stopped, that is, or your process receives more events
2587 and becomes busy again with higher priority stuff.
2588
2589 The most noteworthy effect is that as long as any idle watchers are
2590 active, the process will not block when waiting for new events.
2591
2592 Apart from keeping your process non-blocking (which is a useful
2593 effect on its own sometimes), idle watchers are a good place to do
2594 "pseudo-background processing", or delay processing stuff to after the
2595 event loop has handled all outstanding events.
2596
2597 =head3 Watcher-Specific Functions and Data Members
2598
2599 =over 4
2600
2601 =item ev_idle_init (ev_idle *, callback)
2602
2603 Initialises and configures the idle watcher - it has no parameters of any
2604 kind. There is a C<ev_idle_set> macro, but using it is utterly pointless,
2605 believe me.
2606
2607 =back
2608
2609 =head3 Examples
2610
2611 Example: Dynamically allocate an C<ev_idle> watcher, start it, and in the
2612 callback, free it. Also, use no error checking, as usual.
2613
2614 static void
2615 idle_cb (struct ev_loop *loop, ev_idle *w, int revents)
2616 {
2617 free (w);
2618 // now do something you wanted to do when the program has
2619 // no longer anything immediate to do.
2620 }
2621
2622 ev_idle *idle_watcher = malloc (sizeof (ev_idle));
2623 ev_idle_init (idle_watcher, idle_cb);
2624 ev_idle_start (loop, idle_watcher);
2625
2626
2627 =head2 C<ev_prepare> and C<ev_check> - customise your event loop!
2628
2629 Prepare and check watchers are usually (but not always) used in pairs:
2630 prepare watchers get invoked before the process blocks and check watchers
2631 afterwards.
2632
2633 You I<must not> call C<ev_loop> or similar functions that enter
2634 the current event loop from either C<ev_prepare> or C<ev_check>
2635 watchers. Other loops than the current one are fine, however. The
2636 rationale behind this is that you do not need to check for recursion in
2637 those watchers, i.e. the sequence will always be C<ev_prepare>, blocking,
2638 C<ev_check> so if you have one watcher of each kind they will always be
2639 called in pairs bracketing the blocking call.
2640
2641 Their main purpose is to integrate other event mechanisms into libev and
2642 their use is somewhat advanced. They could be used, for example, to track
2643 variable changes, implement your own watchers, integrate net-snmp or a
2644 coroutine library and lots more. They are also occasionally useful if
2645 you cache some data and want to flush it before blocking (for example,
2646 in X programs you might want to do an C<XFlush ()> in an C<ev_prepare>
2647 watcher).
2648
2649 This is done by examining in each prepare call which file descriptors
2650 need to be watched by the other library, registering C<ev_io> watchers
2651 for them and starting an C<ev_timer> watcher for any timeouts (many
2652 libraries provide exactly this functionality). Then, in the check watcher,
2653 you check for any events that occurred (by checking the pending status
2654 of all watchers and stopping them) and call back into the library. The
2655 I/O and timer callbacks will never actually be called (but must be valid
2656 nevertheless, because you never know, you know?).
2657
2658 As another example, the Perl Coro module uses these hooks to integrate
2659 coroutines into libev programs, by yielding to other active coroutines
2660 during each prepare and only letting the process block if no coroutines
2661 are ready to run (it's actually more complicated: it only runs coroutines
2662 with priority higher than or equal to the event loop and one coroutine
2663 of lower priority, but only once, using idle watchers to keep the event
2664 loop from blocking if lower-priority coroutines are active, thus mapping
2665 low-priority coroutines to idle/background tasks).
2666
2667 It is recommended to give C<ev_check> watchers highest (C<EV_MAXPRI>)
2668 priority, to ensure that they are being run before any other watchers
2669 after the poll (this doesn't matter for C<ev_prepare> watchers).
2670
2671 Also, C<ev_check> watchers (and C<ev_prepare> watchers, too) should not
2672 activate ("feed") events into libev. While libev fully supports this, they
2673 might get executed before other C<ev_check> watchers did their job. As
2674 C<ev_check> watchers are often used to embed other (non-libev) event
2675 loops those other event loops might be in an unusable state until their
2676 C<ev_check> watcher ran (always remind yourself to coexist peacefully with
2677 others).
2678
2679 =head3 Watcher-Specific Functions and Data Members
2680
2681 =over 4
2682
2683 =item ev_prepare_init (ev_prepare *, callback)
2684
2685 =item ev_check_init (ev_check *, callback)
2686
2687 Initialises and configures the prepare or check watcher - they have no
2688 parameters of any kind. There are C<ev_prepare_set> and C<ev_check_set>
2689 macros, but using them is utterly, utterly, utterly and completely
2690 pointless.
2691
2692 =back
2693
2694 =head3 Examples
2695
2696 There are a number of principal ways to embed other event loops or modules
2697 into libev. Here are some ideas on how to include libadns into libev
2698 (there is a Perl module named C<EV::ADNS> that does this, which you could
2699 use as a working example. Another Perl module named C<EV::Glib> embeds a
2700 Glib main context into libev, and finally, C<Glib::EV> embeds EV into the
2701 Glib event loop).
2702
2703 Method 1: Add IO watchers and a timeout watcher in a prepare handler,
2704 and in a check watcher, destroy them and call into libadns. What follows
2705 is pseudo-code only of course. This requires you to either use a low
2706 priority for the check watcher or use C<ev_clear_pending> explicitly, as
2707 the callbacks for the IO/timeout watchers might not have been called yet.
2708
2709 static ev_io iow [nfd];
2710 static ev_timer tw;
2711
2712 static void
2713 io_cb (struct ev_loop *loop, ev_io *w, int revents)
2714 {
2715 }
2716
2717 // create io watchers for each fd and a timer before blocking
2718 static void
2719 adns_prepare_cb (struct ev_loop *loop, ev_prepare *w, int revents)
2720 {
2721 int timeout = 3600000;
2722 struct pollfd fds [nfd];
2723 // actual code will need to loop here and realloc etc.
2724 adns_beforepoll (ads, fds, &nfd, &timeout, timeval_from (ev_time ()));
2725
2726 /* the callback is illegal, but won't be called as we stop during check */
2727 ev_timer_init (&tw, 0, timeout * 1e-3, 0.);
2728 ev_timer_start (loop, &tw);
2729
2730 // create one ev_io per pollfd
2731 for (int i = 0; i < nfd; ++i)
2732 {
2733 ev_io_init (iow + i, io_cb, fds [i].fd,
2734 ((fds [i].events & POLLIN ? EV_READ : 0)
2735 | (fds [i].events & POLLOUT ? EV_WRITE : 0)));
2736
2737 fds [i].revents = 0;
2738 ev_io_start (loop, iow + i);
2739 }
2740 }
2741
2742 // stop all watchers after blocking
2743 static void
2744 adns_check_cb (struct ev_loop *loop, ev_check *w, int revents)
2745 {
2746 ev_timer_stop (loop, &tw);
2747
2748 for (int i = 0; i < nfd; ++i)
2749 {
2750 // set the relevant poll flags
2751 // could also call adns_processreadable etc. here
2752 struct pollfd *fd = fds + i;
2753 int revents = ev_clear_pending (iow + i);
2754 if (revents & EV_READ ) fd->revents |= fd->events & POLLIN;
2755 if (revents & EV_WRITE) fd->revents |= fd->events & POLLOUT;
2756
2757 // now stop the watcher
2758 ev_io_stop (loop, iow + i);
2759 }
2760
2761 adns_afterpoll (adns, fds, nfd, timeval_from (ev_now (loop));
2762 }
2763
2764 Method 2: This would be just like method 1, but you run C<adns_afterpoll>
2765 in the prepare watcher and would dispose of the check watcher.
2766
2767 Method 3: If the module to be embedded supports explicit event
2768 notification (libadns does), you can also make use of the actual watcher
2769 callbacks, and only destroy/create the watchers in the prepare watcher.
2770
2771 static void
2772 timer_cb (EV_P_ ev_timer *w, int revents)
2773 {
2774 adns_state ads = (adns_state)w->data;
2775 update_now (EV_A);
2776
2777 adns_processtimeouts (ads, &tv_now);
2778 }
2779
2780 static void
2781 io_cb (EV_P_ ev_io *w, int revents)
2782 {
2783 adns_state ads = (adns_state)w->data;
2784 update_now (EV_A);
2785
2786 if (revents & EV_READ ) adns_processreadable (ads, w->fd, &tv_now);
2787 if (revents & EV_WRITE) adns_processwriteable (ads, w->fd, &tv_now);
2788 }
2789
2790 // do not ever call adns_afterpoll
2791
2792 Method 4: Do not use a prepare or check watcher because the module you
2793 want to embed is not flexible enough to support it. Instead, you can
2794 override their poll function. The drawback with this solution is that the
2795 main loop is now no longer controllable by EV. The C<Glib::EV> module uses
2796 this approach, effectively embedding EV as a client into the horrible
2797 libglib event loop.
2798
2799 static gint
2800 event_poll_func (GPollFD *fds, guint nfds, gint timeout)
2801 {
2802 int got_events = 0;
2803
2804 for (n = 0; n < nfds; ++n)
2805 // create/start io watcher that sets the relevant bits in fds[n] and increment got_events
2806
2807 if (timeout >= 0)
2808 // create/start timer
2809
2810 // poll
2811 ev_loop (EV_A_ 0);
2812
2813 // stop timer again
2814 if (timeout >= 0)
2815 ev_timer_stop (EV_A_ &to);
2816
2817 // stop io watchers again - their callbacks should have set
2818 for (n = 0; n < nfds; ++n)
2819 ev_io_stop (EV_A_ iow [n]);
2820
2821 return got_events;
2822 }
2823
2824
2825 =head2 C<ev_embed> - when one backend isn't enough...
2826
2827 This is a rather advanced watcher type that lets you embed one event loop
2828 into another (currently only C<ev_io> events are supported in the embedded
2829 loop, other types of watchers might be handled in a delayed or incorrect
2830 fashion and must not be used).
2831
2832 There are primarily two reasons you would want that: work around bugs and
2833 prioritise I/O.
2834
2835 As an example for a bug workaround, the kqueue backend might only support
2836 sockets on some platform, so it is unusable as generic backend, but you
2837 still want to make use of it because you have many sockets and it scales
2838 so nicely. In this case, you would create a kqueue-based loop and embed
2839 it into your default loop (which might use e.g. poll). Overall operation
2840 will be a bit slower because first libev has to call C<poll> and then
2841 C<kevent>, but at least you can use both mechanisms for what they are
2842 best: C<kqueue> for scalable sockets and C<poll> if you want it to work :)
2843
2844 As for prioritising I/O: under rare circumstances you have the case where
2845 some fds have to be watched and handled very quickly (with low latency),
2846 and even priorities and idle watchers might have too much overhead. In
2847 this case you would put all the high priority stuff in one loop and all
2848 the rest in a second one, and embed the second one in the first.
2849
2850 As long as the watcher is active, the callback will be invoked every
2851 time there might be events pending in the embedded loop. The callback
2852 must then call C<ev_embed_sweep (mainloop, watcher)> to make a single
2853 sweep and invoke their callbacks (the callback doesn't need to invoke the
2854 C<ev_embed_sweep> function directly, it could also start an idle watcher
2855 to give the embedded loop strictly lower priority for example).
2856
2857 You can also set the callback to C<0>, in which case the embed watcher
2858 will automatically execute the embedded loop sweep whenever necessary.
2859
2860 Fork detection will be handled transparently while the C<ev_embed> watcher
2861 is active, i.e., the embedded loop will automatically be forked when the
2862 embedding loop forks. In other cases, the user is responsible for calling
2863 C<ev_loop_fork> on the embedded loop.
2864
2865 Unfortunately, not all backends are embeddable: only the ones returned by
2866 C<ev_embeddable_backends> are, which, unfortunately, does not include any
2867 portable one.
2868
2869 So when you want to use this feature you will always have to be prepared
2870 that you cannot get an embeddable loop. The recommended way to get around
2871 this is to have a separate variables for your embeddable loop, try to
2872 create it, and if that fails, use the normal loop for everything.
2873
2874 =head3 C<ev_embed> and fork
2875
2876 While the C<ev_embed> watcher is running, forks in the embedding loop will
2877 automatically be applied to the embedded loop as well, so no special
2878 fork handling is required in that case. When the watcher is not running,
2879 however, it is still the task of the libev user to call C<ev_loop_fork ()>
2880 as applicable.
2881
2882 =head3 Watcher-Specific Functions and Data Members
2883
2884 =over 4
2885
2886 =item ev_embed_init (ev_embed *, callback, struct ev_loop *embedded_loop)
2887
2888 =item ev_embed_set (ev_embed *, callback, struct ev_loop *embedded_loop)
2889
2890 Configures the watcher to embed the given loop, which must be
2891 embeddable. If the callback is C<0>, then C<ev_embed_sweep> will be
2892 invoked automatically, otherwise it is the responsibility of the callback
2893 to invoke it (it will continue to be called until the sweep has been done,
2894 if you do not want that, you need to temporarily stop the embed watcher).
2895
2896 =item ev_embed_sweep (loop, ev_embed *)
2897
2898 Make a single, non-blocking sweep over the embedded loop. This works
2899 similarly to C<ev_loop (embedded_loop, EVLOOP_NONBLOCK)>, but in the most
2900 appropriate way for embedded loops.
2901
2902 =item struct ev_loop *other [read-only]
2903
2904 The embedded event loop.
2905
2906 =back
2907
2908 =head3 Examples
2909
2910 Example: Try to get an embeddable event loop and embed it into the default
2911 event loop. If that is not possible, use the default loop. The default
2912 loop is stored in C<loop_hi>, while the embeddable loop is stored in
2913 C<loop_lo> (which is C<loop_hi> in the case no embeddable loop can be
2914 used).
2915
2916 struct ev_loop *loop_hi = ev_default_init (0);
2917 struct ev_loop *loop_lo = 0;
2918 ev_embed embed;
2919
2920 // see if there is a chance of getting one that works
2921 // (remember that a flags value of 0 means autodetection)
2922 loop_lo = ev_embeddable_backends () & ev_recommended_backends ()
2923 ? ev_loop_new (ev_embeddable_backends () & ev_recommended_backends ())
2924 : 0;
2925
2926 // if we got one, then embed it, otherwise default to loop_hi
2927 if (loop_lo)
2928 {
2929 ev_embed_init (&embed, 0, loop_lo);
2930 ev_embed_start (loop_hi, &embed);
2931 }
2932 else
2933 loop_lo = loop_hi;
2934
2935 Example: Check if kqueue is available but not recommended and create
2936 a kqueue backend for use with sockets (which usually work with any
2937 kqueue implementation). Store the kqueue/socket-only event loop in
2938 C<loop_socket>. (One might optionally use C<EVFLAG_NOENV>, too).
2939
2940 struct ev_loop *loop = ev_default_init (0);
2941 struct ev_loop *loop_socket = 0;
2942 ev_embed embed;
2943
2944 if (ev_supported_backends () & ~ev_recommended_backends () & EVBACKEND_KQUEUE)
2945 if ((loop_socket = ev_loop_new (EVBACKEND_KQUEUE))
2946 {
2947 ev_embed_init (&embed, 0, loop_socket);
2948 ev_embed_start (loop, &embed);
2949 }
2950
2951 if (!loop_socket)
2952 loop_socket = loop;
2953
2954 // now use loop_socket for all sockets, and loop for everything else
2955
2956
2957 =head2 C<ev_fork> - the audacity to resume the event loop after a fork
2958
2959 Fork watchers are called when a C<fork ()> was detected (usually because
2960 whoever is a good citizen cared to tell libev about it by calling
2961 C<ev_default_fork> or C<ev_loop_fork>). The invocation is done before the
2962 event loop blocks next and before C<ev_check> watchers are being called,
2963 and only in the child after the fork. If whoever good citizen calling
2964 C<ev_default_fork> cheats and calls it in the wrong process, the fork
2965 handlers will be invoked, too, of course.
2966
2967 =head3 The special problem of life after fork - how is it possible?
2968
2969 Most uses of C<fork()> consist of forking, then some simple calls to ste
2970 up/change the process environment, followed by a call to C<exec()>. This
2971 sequence should be handled by libev without any problems.
2972
2973 This changes when the application actually wants to do event handling
2974 in the child, or both parent in child, in effect "continuing" after the
2975 fork.
2976
2977 The default mode of operation (for libev, with application help to detect
2978 forks) is to duplicate all the state in the child, as would be expected
2979 when I<either> the parent I<or> the child process continues.
2980
2981 When both processes want to continue using libev, then this is usually the
2982 wrong result. In that case, usually one process (typically the parent) is
2983 supposed to continue with all watchers in place as before, while the other
2984 process typically wants to start fresh, i.e. without any active watchers.
2985
2986 The cleanest and most efficient way to achieve that with libev is to
2987 simply create a new event loop, which of course will be "empty", and
2988 use that for new watchers. This has the advantage of not touching more
2989 memory than necessary, and thus avoiding the copy-on-write, and the
2990 disadvantage of having to use multiple event loops (which do not support
2991 signal watchers).
2992
2993 When this is not possible, or you want to use the default loop for
2994 other reasons, then in the process that wants to start "fresh", call
2995 C<ev_default_destroy ()> followed by C<ev_default_loop (...)>. Destroying
2996 the default loop will "orphan" (not stop) all registered watchers, so you
2997 have to be careful not to execute code that modifies those watchers. Note
2998 also that in that case, you have to re-register any signal watchers.
2999
3000 =head3 Watcher-Specific Functions and Data Members
3001
3002 =over 4
3003
3004 =item ev_fork_init (ev_signal *, callback)
3005
3006 Initialises and configures the fork watcher - it has no parameters of any
3007 kind. There is a C<ev_fork_set> macro, but using it is utterly pointless,
3008 believe me.
3009
3010 =back
3011
3012
3013 =head2 C<ev_async> - how to wake up another event loop
3014
3015 In general, you cannot use an C<ev_loop> from multiple threads or other
3016 asynchronous sources such as signal handlers (as opposed to multiple event
3017 loops - those are of course safe to use in different threads).
3018
3019 Sometimes, however, you need to wake up another event loop you do not
3020 control, for example because it belongs to another thread. This is what
3021 C<ev_async> watchers do: as long as the C<ev_async> watcher is active, you
3022 can signal it by calling C<ev_async_send>, which is thread- and signal
3023 safe.
3024
3025 This functionality is very similar to C<ev_signal> watchers, as signals,
3026 too, are asynchronous in nature, and signals, too, will be compressed
3027 (i.e. the number of callback invocations may be less than the number of
3028 C<ev_async_sent> calls).
3029
3030 Unlike C<ev_signal> watchers, C<ev_async> works with any event loop, not
3031 just the default loop.
3032
3033 =head3 Queueing
3034
3035 C<ev_async> does not support queueing of data in any way. The reason
3036 is that the author does not know of a simple (or any) algorithm for a
3037 multiple-writer-single-reader queue that works in all cases and doesn't
3038 need elaborate support such as pthreads or unportable memory access
3039 semantics.
3040
3041 That means that if you want to queue data, you have to provide your own
3042 queue. But at least I can tell you how to implement locking around your
3043 queue:
3044
3045 =over 4
3046
3047 =item queueing from a signal handler context
3048
3049 To implement race-free queueing, you simply add to the queue in the signal
3050 handler but you block the signal handler in the watcher callback. Here is
3051 an example that does that for some fictitious SIGUSR1 handler:
3052
3053 static ev_async mysig;
3054
3055 static void
3056 sigusr1_handler (void)
3057 {
3058 sometype data;
3059
3060 // no locking etc.
3061 queue_put (data);
3062 ev_async_send (EV_DEFAULT_ &mysig);
3063 }
3064
3065 static void
3066 mysig_cb (EV_P_ ev_async *w, int revents)
3067 {
3068 sometype data;
3069 sigset_t block, prev;
3070
3071 sigemptyset (&block);
3072 sigaddset (&block, SIGUSR1);
3073 sigprocmask (SIG_BLOCK, &block, &prev);
3074
3075 while (queue_get (&data))
3076 process (data);
3077
3078 if (sigismember (&prev, SIGUSR1)
3079 sigprocmask (SIG_UNBLOCK, &block, 0);
3080 }
3081
3082 (Note: pthreads in theory requires you to use C<pthread_setmask>
3083 instead of C<sigprocmask> when you use threads, but libev doesn't do it
3084 either...).
3085
3086 =item queueing from a thread context
3087
3088 The strategy for threads is different, as you cannot (easily) block
3089 threads but you can easily preempt them, so to queue safely you need to
3090 employ a traditional mutex lock, such as in this pthread example:
3091
3092 static ev_async mysig;
3093 static pthread_mutex_t mymutex = PTHREAD_MUTEX_INITIALIZER;
3094
3095 static void
3096 otherthread (void)
3097 {
3098 // only need to lock the actual queueing operation
3099 pthread_mutex_lock (&mymutex);
3100 queue_put (data);
3101 pthread_mutex_unlock (&mymutex);
3102
3103 ev_async_send (EV_DEFAULT_ &mysig);
3104 }
3105
3106 static void
3107 mysig_cb (EV_P_ ev_async *w, int revents)
3108 {
3109 pthread_mutex_lock (&mymutex);
3110
3111 while (queue_get (&data))
3112 process (data);
3113
3114 pthread_mutex_unlock (&mymutex);
3115 }
3116
3117 =back
3118
3119
3120 =head3 Watcher-Specific Functions and Data Members
3121
3122 =over 4
3123
3124 =item ev_async_init (ev_async *, callback)
3125
3126 Initialises and configures the async watcher - it has no parameters of any
3127 kind. There is a C<ev_async_set> macro, but using it is utterly pointless,
3128 trust me.
3129
3130 =item ev_async_send (loop, ev_async *)
3131
3132 Sends/signals/activates the given C<ev_async> watcher, that is, feeds
3133 an C<EV_ASYNC> event on the watcher into the event loop. Unlike
3134 C<ev_feed_event>, this call is safe to do from other threads, signal or
3135 similar contexts (see the discussion of C<EV_ATOMIC_T> in the embedding
3136 section below on what exactly this means).
3137
3138 Note that, as with other watchers in libev, multiple events might get
3139 compressed into a single callback invocation (another way to look at this
3140 is that C<ev_async> watchers are level-triggered, set on C<ev_async_send>,
3141 reset when the event loop detects that).
3142
3143 This call incurs the overhead of a system call only once per event loop
3144 iteration, so while the overhead might be noticeable, it doesn't apply to
3145 repeated calls to C<ev_async_send> for the same event loop.
3146
3147 =item bool = ev_async_pending (ev_async *)
3148
3149 Returns a non-zero value when C<ev_async_send> has been called on the
3150 watcher but the event has not yet been processed (or even noted) by the
3151 event loop.
3152
3153 C<ev_async_send> sets a flag in the watcher and wakes up the loop. When
3154 the loop iterates next and checks for the watcher to have become active,
3155 it will reset the flag again. C<ev_async_pending> can be used to very
3156 quickly check whether invoking the loop might be a good idea.
3157
3158 Not that this does I<not> check whether the watcher itself is pending,
3159 only whether it has been requested to make this watcher pending: there
3160 is a time window between the event loop checking and resetting the async
3161 notification, and the callback being invoked.
3162
3163 =back
3164
3165
3166 =head1 OTHER FUNCTIONS
3167
3168 There are some other functions of possible interest. Described. Here. Now.
3169
3170 =over 4
3171
3172 =item ev_once (loop, int fd, int events, ev_tstamp timeout, callback)
3173
3174 This function combines a simple timer and an I/O watcher, calls your
3175 callback on whichever event happens first and automatically stops both
3176 watchers. This is useful if you want to wait for a single event on an fd
3177 or timeout without having to allocate/configure/start/stop/free one or
3178 more watchers yourself.
3179
3180 If C<fd> is less than 0, then no I/O watcher will be started and the
3181 C<events> argument is being ignored. Otherwise, an C<ev_io> watcher for
3182 the given C<fd> and C<events> set will be created and started.
3183
3184 If C<timeout> is less than 0, then no timeout watcher will be
3185 started. Otherwise an C<ev_timer> watcher with after = C<timeout> (and
3186 repeat = 0) will be started. C<0> is a valid timeout.
3187
3188 The callback has the type C<void (*cb)(int revents, void *arg)> and is
3189 passed an C<revents> set like normal event callbacks (a combination of
3190 C<EV_ERROR>, C<EV_READ>, C<EV_WRITE> or C<EV_TIMER>) and the C<arg>
3191 value passed to C<ev_once>. Note that it is possible to receive I<both>
3192 a timeout and an io event at the same time - you probably should give io
3193 events precedence.
3194
3195 Example: wait up to ten seconds for data to appear on STDIN_FILENO.
3196
3197 static void stdin_ready (int revents, void *arg)
3198 {
3199 if (revents & EV_READ)
3200 /* stdin might have data for us, joy! */;
3201 else if (revents & EV_TIMER)
3202 /* doh, nothing entered */;
3203 }
3204
3205 ev_once (STDIN_FILENO, EV_READ, 10., stdin_ready, 0);
3206
3207 =item ev_feed_fd_event (loop, int fd, int revents)
3208
3209 Feed an event on the given fd, as if a file descriptor backend detected
3210 the given events it.
3211
3212 =item ev_feed_signal_event (loop, int signum)
3213
3214 Feed an event as if the given signal occurred (C<loop> must be the default
3215 loop!).
3216
3217 =back
3218
3219
3220 =head1 LIBEVENT EMULATION
3221
3222 Libev offers a compatibility emulation layer for libevent. It cannot
3223 emulate the internals of libevent, so here are some usage hints:
3224
3225 =over 4
3226
3227 =item * Use it by including <event.h>, as usual.
3228
3229 =item * The following members are fully supported: ev_base, ev_callback,
3230 ev_arg, ev_fd, ev_res, ev_events.
3231
3232 =item * Avoid using ev_flags and the EVLIST_*-macros, while it is
3233 maintained by libev, it does not work exactly the same way as in libevent (consider
3234 it a private API).
3235
3236 =item * Priorities are not currently supported. Initialising priorities
3237 will fail and all watchers will have the same priority, even though there
3238 is an ev_pri field.
3239
3240 =item * In libevent, the last base created gets the signals, in libev, the
3241 first base created (== the default loop) gets the signals.
3242
3243 =item * Other members are not supported.
3244
3245 =item * The libev emulation is I<not> ABI compatible to libevent, you need
3246 to use the libev header file and library.
3247
3248 =back
3249
3250 =head1 C++ SUPPORT
3251
3252 Libev comes with some simplistic wrapper classes for C++ that mainly allow
3253 you to use some convenience methods to start/stop watchers and also change
3254 the callback model to a model using method callbacks on objects.
3255
3256 To use it,
3257
3258 #include <ev++.h>
3259
3260 This automatically includes F<ev.h> and puts all of its definitions (many
3261 of them macros) into the global namespace. All C++ specific things are
3262 put into the C<ev> namespace. It should support all the same embedding
3263 options as F<ev.h>, most notably C<EV_MULTIPLICITY>.
3264
3265 Care has been taken to keep the overhead low. The only data member the C++
3266 classes add (compared to plain C-style watchers) is the event loop pointer
3267 that the watcher is associated with (or no additional members at all if
3268 you disable C<EV_MULTIPLICITY> when embedding libev).
3269
3270 Currently, functions, and static and non-static member functions can be
3271 used as callbacks. Other types should be easy to add as long as they only
3272 need one additional pointer for context. If you need support for other
3273 types of functors please contact the author (preferably after implementing
3274 it).
3275
3276 Here is a list of things available in the C<ev> namespace:
3277
3278 =over 4
3279
3280 =item C<ev::READ>, C<ev::WRITE> etc.
3281
3282 These are just enum values with the same values as the C<EV_READ> etc.
3283 macros from F<ev.h>.
3284
3285 =item C<ev::tstamp>, C<ev::now>
3286
3287 Aliases to the same types/functions as with the C<ev_> prefix.
3288
3289 =item C<ev::io>, C<ev::timer>, C<ev::periodic>, C<ev::idle>, C<ev::sig> etc.
3290
3291 For each C<ev_TYPE> watcher in F<ev.h> there is a corresponding class of
3292 the same name in the C<ev> namespace, with the exception of C<ev_signal>
3293 which is called C<ev::sig> to avoid clashes with the C<signal> macro
3294 defines by many implementations.
3295
3296 All of those classes have these methods:
3297
3298 =over 4
3299
3300 =item ev::TYPE::TYPE ()
3301
3302 =item ev::TYPE::TYPE (loop)
3303
3304 =item ev::TYPE::~TYPE
3305
3306 The constructor (optionally) takes an event loop to associate the watcher
3307 with. If it is omitted, it will use C<EV_DEFAULT>.
3308
3309 The constructor calls C<ev_init> for you, which means you have to call the
3310 C<set> method before starting it.
3311
3312 It will not set a callback, however: You have to call the templated C<set>
3313 method to set a callback before you can start the watcher.
3314
3315 (The reason why you have to use a method is a limitation in C++ which does
3316 not allow explicit template arguments for constructors).
3317
3318 The destructor automatically stops the watcher if it is active.
3319
3320 =item w->set<class, &class::method> (object *)
3321
3322 This method sets the callback method to call. The method has to have a
3323 signature of C<void (*)(ev_TYPE &, int)>, it receives the watcher as
3324 first argument and the C<revents> as second. The object must be given as
3325 parameter and is stored in the C<data> member of the watcher.
3326
3327 This method synthesizes efficient thunking code to call your method from
3328 the C callback that libev requires. If your compiler can inline your
3329 callback (i.e. it is visible to it at the place of the C<set> call and
3330 your compiler is good :), then the method will be fully inlined into the
3331 thunking function, making it as fast as a direct C callback.
3332
3333 Example: simple class declaration and watcher initialisation
3334
3335 struct myclass
3336 {
3337 void io_cb (ev::io &w, int revents) { }
3338 }
3339
3340 myclass obj;
3341 ev::io iow;
3342 iow.set <myclass, &myclass::io_cb> (&obj);
3343
3344 =item w->set (object *)
3345
3346 This is an B<experimental> feature that might go away in a future version.
3347
3348 This is a variation of a method callback - leaving out the method to call
3349 will default the method to C<operator ()>, which makes it possible to use
3350 functor objects without having to manually specify the C<operator ()> all
3351 the time. Incidentally, you can then also leave out the template argument
3352 list.
3353
3354 The C<operator ()> method prototype must be C<void operator ()(watcher &w,
3355 int revents)>.
3356
3357 See the method-C<set> above for more details.
3358
3359 Example: use a functor object as callback.
3360
3361 struct myfunctor
3362 {
3363 void operator() (ev::io &w, int revents)
3364 {
3365 ...
3366 }
3367 }
3368
3369 myfunctor f;
3370
3371 ev::io w;
3372 w.set (&f);
3373
3374 =item w->set<function> (void *data = 0)
3375
3376 Also sets a callback, but uses a static method or plain function as
3377 callback. The optional C<data> argument will be stored in the watcher's
3378 C<data> member and is free for you to use.
3379
3380 The prototype of the C<function> must be C<void (*)(ev::TYPE &w, int)>.
3381
3382 See the method-C<set> above for more details.
3383
3384 Example: Use a plain function as callback.
3385
3386 static void io_cb (ev::io &w, int revents) { }
3387 iow.set <io_cb> ();
3388
3389 =item w->set (loop)
3390
3391 Associates a different C<struct ev_loop> with this watcher. You can only
3392 do this when the watcher is inactive (and not pending either).
3393
3394 =item w->set ([arguments])
3395
3396 Basically the same as C<ev_TYPE_set>, with the same arguments. Must be
3397 called at least once. Unlike the C counterpart, an active watcher gets
3398 automatically stopped and restarted when reconfiguring it with this
3399 method.
3400
3401 =item w->start ()
3402
3403 Starts the watcher. Note that there is no C<loop> argument, as the
3404 constructor already stores the event loop.
3405
3406 =item w->stop ()
3407
3408 Stops the watcher if it is active. Again, no C<loop> argument.
3409
3410 =item w->again () (C<ev::timer>, C<ev::periodic> only)
3411
3412 For C<ev::timer> and C<ev::periodic>, this invokes the corresponding
3413 C<ev_TYPE_again> function.
3414
3415 =item w->sweep () (C<ev::embed> only)
3416
3417 Invokes C<ev_embed_sweep>.
3418
3419 =item w->update () (C<ev::stat> only)
3420
3421 Invokes C<ev_stat_stat>.
3422
3423 =back
3424
3425 =back
3426
3427 Example: Define a class with an IO and idle watcher, start one of them in
3428 the constructor.
3429
3430 class myclass
3431 {
3432 ev::io io ; void io_cb (ev::io &w, int revents);
3433 ev::idle idle; void idle_cb (ev::idle &w, int revents);
3434
3435 myclass (int fd)
3436 {
3437 io .set <myclass, &myclass::io_cb > (this);
3438 idle.set <myclass, &myclass::idle_cb> (this);
3439
3440 io.start (fd, ev::READ);
3441 }
3442 };
3443
3444
3445 =head1 OTHER LANGUAGE BINDINGS
3446
3447 Libev does not offer other language bindings itself, but bindings for a
3448 number of languages exist in the form of third-party packages. If you know
3449 any interesting language binding in addition to the ones listed here, drop
3450 me a note.
3451
3452 =over 4
3453
3454 =item Perl
3455
3456 The EV module implements the full libev API and is actually used to test
3457 libev. EV is developed together with libev. Apart from the EV core module,
3458 there are additional modules that implement libev-compatible interfaces
3459 to C<libadns> (C<EV::ADNS>, but C<AnyEvent::DNS> is preferred nowadays),
3460 C<Net::SNMP> (C<Net::SNMP::EV>) and the C<libglib> event core (C<Glib::EV>
3461 and C<EV::Glib>).
3462
3463 It can be found and installed via CPAN, its homepage is at
3464 L<http://software.schmorp.de/pkg/EV>.
3465
3466 =item Python
3467
3468 Python bindings can be found at L<http://code.google.com/p/pyev/>. It
3469 seems to be quite complete and well-documented.
3470
3471 =item Ruby
3472
3473 Tony Arcieri has written a ruby extension that offers access to a subset
3474 of the libev API and adds file handle abstractions, asynchronous DNS and
3475 more on top of it. It can be found via gem servers. Its homepage is at
3476 L<http://rev.rubyforge.org/>.
3477
3478 Roger Pack reports that using the link order C<-lws2_32 -lmsvcrt-ruby-190>
3479 makes rev work even on mingw.
3480
3481 =item Haskell
3482
3483 A haskell binding to libev is available at
3484 L<http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hlibev>.
3485
3486 =item D
3487
3488 Leandro Lucarella has written a D language binding (F<ev.d>) for libev, to
3489 be found at L<http://proj.llucax.com.ar/wiki/evd>.
3490
3491 =item Ocaml
3492
3493 Erkki Seppala has written Ocaml bindings for libev, to be found at
3494 L<http://modeemi.cs.tut.fi/~flux/software/ocaml-ev/>.
3495
3496 =item Lua
3497
3498 Brian Maher has written a partial interface to libev for lua (at the
3499 time of this writing, only C<ev_io> and C<ev_timer>), to be found at
3500 L<http://github.com/brimworks/lua-ev>.
3501
3502 =back
3503
3504
3505 =head1 MACRO MAGIC
3506
3507 Libev can be compiled with a variety of options, the most fundamental
3508 of which is C<EV_MULTIPLICITY>. This option determines whether (most)
3509 functions and callbacks have an initial C<struct ev_loop *> argument.
3510
3511 To make it easier to write programs that cope with either variant, the
3512 following macros are defined:
3513
3514 =over 4
3515
3516 =item C<EV_A>, C<EV_A_>
3517
3518 This provides the loop I<argument> for functions, if one is required ("ev
3519 loop argument"). The C<EV_A> form is used when this is the sole argument,
3520 C<EV_A_> is used when other arguments are following. Example:
3521
3522 ev_unref (EV_A);
3523 ev_timer_add (EV_A_ watcher);
3524 ev_loop (EV_A_ 0);
3525
3526 It assumes the variable C<loop> of type C<struct ev_loop *> is in scope,
3527 which is often provided by the following macro.
3528
3529 =item C<EV_P>, C<EV_P_>
3530
3531 This provides the loop I<parameter> for functions, if one is required ("ev
3532 loop parameter"). The C<EV_P> form is used when this is the sole parameter,
3533 C<EV_P_> is used when other parameters are following. Example:
3534
3535 // this is how ev_unref is being declared
3536 static void ev_unref (EV_P);
3537
3538 // this is how you can declare your typical callback
3539 static void cb (EV_P_ ev_timer *w, int revents)
3540
3541 It declares a parameter C<loop> of type C<struct ev_loop *>, quite
3542 suitable for use with C<EV_A>.
3543
3544 =item C<EV_DEFAULT>, C<EV_DEFAULT_>
3545
3546 Similar to the other two macros, this gives you the value of the default
3547 loop, if multiple loops are supported ("ev loop default").
3548
3549 =item C<EV_DEFAULT_UC>, C<EV_DEFAULT_UC_>
3550
3551 Usage identical to C<EV_DEFAULT> and C<EV_DEFAULT_>, but requires that the
3552 default loop has been initialised (C<UC> == unchecked). Their behaviour
3553 is undefined when the default loop has not been initialised by a previous
3554 execution of C<EV_DEFAULT>, C<EV_DEFAULT_> or C<ev_default_init (...)>.
3555
3556 It is often prudent to use C<EV_DEFAULT> when initialising the first
3557 watcher in a function but use C<EV_DEFAULT_UC> afterwards.
3558
3559 =back
3560
3561 Example: Declare and initialise a check watcher, utilising the above
3562 macros so it will work regardless of whether multiple loops are supported
3563 or not.
3564
3565 static void
3566 check_cb (EV_P_ ev_timer *w, int revents)
3567 {
3568 ev_check_stop (EV_A_ w);
3569 }
3570
3571 ev_check check;
3572 ev_check_init (&check, check_cb);
3573 ev_check_start (EV_DEFAULT_ &check);
3574 ev_loop (EV_DEFAULT_ 0);
3575
3576 =head1 EMBEDDING
3577
3578 Libev can (and often is) directly embedded into host
3579 applications. Examples of applications that embed it include the Deliantra
3580 Game Server, the EV perl module, the GNU Virtual Private Ethernet (gvpe)
3581 and rxvt-unicode.
3582
3583 The goal is to enable you to just copy the necessary files into your
3584 source directory without having to change even a single line in them, so
3585 you can easily upgrade by simply copying (or having a checked-out copy of
3586 libev somewhere in your source tree).
3587
3588 =head2 FILESETS
3589
3590 Depending on what features you need you need to include one or more sets of files
3591 in your application.
3592
3593 =head3 CORE EVENT LOOP
3594
3595 To include only the libev core (all the C<ev_*> functions), with manual
3596 configuration (no autoconf):
3597
3598 #define EV_STANDALONE 1
3599 #include "ev.c"
3600
3601 This will automatically include F<ev.h>, too, and should be done in a
3602 single C source file only to provide the function implementations. To use
3603 it, do the same for F<ev.h> in all files wishing to use this API (best
3604 done by writing a wrapper around F<ev.h> that you can include instead and
3605 where you can put other configuration options):
3606
3607 #define EV_STANDALONE 1
3608 #include "ev.h"
3609
3610 Both header files and implementation files can be compiled with a C++
3611 compiler (at least, that's a stated goal, and breakage will be treated
3612 as a bug).
3613
3614 You need the following files in your source tree, or in a directory
3615 in your include path (e.g. in libev/ when using -Ilibev):
3616
3617 ev.h
3618 ev.c
3619 ev_vars.h
3620 ev_wrap.h
3621
3622 ev_win32.c required on win32 platforms only
3623
3624 ev_select.c only when select backend is enabled (which is enabled by default)
3625 ev_poll.c only when poll backend is enabled (disabled by default)
3626 ev_epoll.c only when the epoll backend is enabled (disabled by default)
3627 ev_kqueue.c only when the kqueue backend is enabled (disabled by default)
3628 ev_port.c only when the solaris port backend is enabled (disabled by default)
3629
3630 F<ev.c> includes the backend files directly when enabled, so you only need
3631 to compile this single file.
3632
3633 =head3 LIBEVENT COMPATIBILITY API
3634
3635 To include the libevent compatibility API, also include:
3636
3637 #include "event.c"
3638
3639 in the file including F<ev.c>, and:
3640
3641 #include "event.h"
3642
3643 in the files that want to use the libevent API. This also includes F<ev.h>.
3644
3645 You need the following additional files for this:
3646
3647 event.h
3648 event.c
3649
3650 =head3 AUTOCONF SUPPORT
3651
3652 Instead of using C<EV_STANDALONE=1> and providing your configuration in
3653 whatever way you want, you can also C<m4_include([libev.m4])> in your
3654 F<configure.ac> and leave C<EV_STANDALONE> undefined. F<ev.c> will then
3655 include F<config.h> and configure itself accordingly.
3656
3657 For this of course you need the m4 file:
3658
3659 libev.m4
3660
3661 =head2 PREPROCESSOR SYMBOLS/MACROS
3662
3663 Libev can be configured via a variety of preprocessor symbols you have to
3664 define before including (or compiling) any of its files. The default in
3665 the absence of autoconf is documented for every option.
3666
3667 Symbols marked with "(h)" do not change the ABI, and can have different
3668 values when compiling libev vs. including F<ev.h>, so it is permissible
3669 to redefine them before including F<ev.h> without breaking compatibility
3670 to a compiled library. All other symbols change the ABI, which means all
3671 users of libev and the libev code itself must be compiled with compatible
3672 settings.
3673
3674 =over 4
3675
3676 =item EV_STANDALONE (h)
3677
3678 Must always be C<1> if you do not use autoconf configuration, which
3679 keeps libev from including F<config.h>, and it also defines dummy
3680 implementations for some libevent functions (such as logging, which is not
3681 supported). It will also not define any of the structs usually found in
3682 F<event.h> that are not directly supported by the libev core alone.
3683
3684 In standalone mode, libev will still try to automatically deduce the
3685 configuration, but has to be more conservative.
3686
3687 =item EV_USE_MONOTONIC
3688
3689 If defined to be C<1>, libev will try to detect the availability of the
3690 monotonic clock option at both compile time and runtime. Otherwise no
3691 use of the monotonic clock option will be attempted. If you enable this,
3692 you usually have to link against librt or something similar. Enabling it
3693 when the functionality isn't available is safe, though, although you have
3694 to make sure you link against any libraries where the C<clock_gettime>
3695 function is hiding in (often F<-lrt>). See also C<EV_USE_CLOCK_SYSCALL>.
3696
3697 =item EV_USE_REALTIME
3698
3699 If defined to be C<1>, libev will try to detect the availability of the
3700 real-time clock option at compile time (and assume its availability
3701 at runtime if successful). Otherwise no use of the real-time clock
3702 option will be attempted. This effectively replaces C<gettimeofday>
3703 by C<clock_get (CLOCK_REALTIME, ...)> and will not normally affect
3704 correctness. See the note about libraries in the description of
3705 C<EV_USE_MONOTONIC>, though. Defaults to the opposite value of
3706 C<EV_USE_CLOCK_SYSCALL>.
3707
3708 =item EV_USE_CLOCK_SYSCALL
3709
3710 If defined to be C<1>, libev will try to use a direct syscall instead
3711 of calling the system-provided C<clock_gettime> function. This option
3712 exists because on GNU/Linux, C<clock_gettime> is in C<librt>, but C<librt>
3713 unconditionally pulls in C<libpthread>, slowing down single-threaded
3714 programs needlessly. Using a direct syscall is slightly slower (in
3715 theory), because no optimised vdso implementation can be used, but avoids
3716 the pthread dependency. Defaults to C<1> on GNU/Linux with glibc 2.x or
3717 higher, as it simplifies linking (no need for C<-lrt>).
3718
3719 =item EV_USE_NANOSLEEP
3720
3721 If defined to be C<1>, libev will assume that C<nanosleep ()> is available
3722 and will use it for delays. Otherwise it will use C<select ()>.
3723
3724 =item EV_USE_EVENTFD
3725
3726 If defined to be C<1>, then libev will assume that C<eventfd ()> is
3727 available and will probe for kernel support at runtime. This will improve
3728 C<ev_signal> and C<ev_async> performance and reduce resource consumption.
3729 If undefined, it will be enabled if the headers indicate GNU/Linux + Glibc
3730 2.7 or newer, otherwise disabled.
3731
3732 =item EV_USE_SELECT
3733
3734 If undefined or defined to be C<1>, libev will compile in support for the
3735 C<select>(2) backend. No attempt at auto-detection will be done: if no
3736 other method takes over, select will be it. Otherwise the select backend
3737 will not be compiled in.
3738
3739 =item EV_SELECT_USE_FD_SET
3740
3741 If defined to C<1>, then the select backend will use the system C<fd_set>
3742 structure. This is useful if libev doesn't compile due to a missing
3743 C<NFDBITS> or C<fd_mask> definition or it mis-guesses the bitset layout
3744 on exotic systems. This usually limits the range of file descriptors to
3745 some low limit such as 1024 or might have other limitations (winsocket
3746 only allows 64 sockets). The C<FD_SETSIZE> macro, set before compilation,
3747 configures the maximum size of the C<fd_set>.
3748
3749 =item EV_SELECT_IS_WINSOCKET
3750
3751 When defined to C<1>, the select backend will assume that
3752 select/socket/connect etc. don't understand file descriptors but
3753 wants osf handles on win32 (this is the case when the select to
3754 be used is the winsock select). This means that it will call
3755 C<_get_osfhandle> on the fd to convert it to an OS handle. Otherwise,
3756 it is assumed that all these functions actually work on fds, even
3757 on win32. Should not be defined on non-win32 platforms.
3758
3759 =item EV_FD_TO_WIN32_HANDLE(fd)
3760
3761 If C<EV_SELECT_IS_WINSOCKET> is enabled, then libev needs a way to map
3762 file descriptors to socket handles. When not defining this symbol (the
3763 default), then libev will call C<_get_osfhandle>, which is usually
3764 correct. In some cases, programs use their own file descriptor management,
3765 in which case they can provide this function to map fds to socket handles.
3766
3767 =item EV_WIN32_HANDLE_TO_FD(handle)
3768
3769 If C<EV_SELECT_IS_WINSOCKET> then libev maps handles to file descriptors
3770 using the standard C<_open_osfhandle> function. For programs implementing
3771 their own fd to handle mapping, overwriting this function makes it easier
3772 to do so. This can be done by defining this macro to an appropriate value.
3773
3774 =item EV_WIN32_CLOSE_FD(fd)
3775
3776 If programs implement their own fd to handle mapping on win32, then this
3777 macro can be used to override the C<close> function, useful to unregister
3778 file descriptors again. Note that the replacement function has to close
3779 the underlying OS handle.
3780
3781 =item EV_USE_POLL
3782
3783 If defined to be C<1>, libev will compile in support for the C<poll>(2)
3784 backend. Otherwise it will be enabled on non-win32 platforms. It
3785 takes precedence over select.
3786
3787 =item EV_USE_EPOLL
3788
3789 If defined to be C<1>, libev will compile in support for the Linux
3790 C<epoll>(7) backend. Its availability will be detected at runtime,
3791 otherwise another method will be used as fallback. This is the preferred
3792 backend for GNU/Linux systems. If undefined, it will be enabled if the
3793 headers indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled.
3794
3795 =item EV_USE_KQUEUE
3796
3797 If defined to be C<1>, libev will compile in support for the BSD style
3798 C<kqueue>(2) backend. Its actual availability will be detected at runtime,
3799 otherwise another method will be used as fallback. This is the preferred
3800 backend for BSD and BSD-like systems, although on most BSDs kqueue only
3801 supports some types of fds correctly (the only platform we found that
3802 supports ptys for example was NetBSD), so kqueue might be compiled in, but
3803 not be used unless explicitly requested. The best way to use it is to find
3804 out whether kqueue supports your type of fd properly and use an embedded
3805 kqueue loop.
3806
3807 =item EV_USE_PORT
3808
3809 If defined to be C<1>, libev will compile in support for the Solaris
3810 10 port style backend. Its availability will be detected at runtime,
3811 otherwise another method will be used as fallback. This is the preferred
3812 backend for Solaris 10 systems.
3813
3814 =item EV_USE_DEVPOLL
3815
3816 Reserved for future expansion, works like the USE symbols above.
3817
3818 =item EV_USE_INOTIFY
3819
3820 If defined to be C<1>, libev will compile in support for the Linux inotify
3821 interface to speed up C<ev_stat> watchers. Its actual availability will
3822 be detected at runtime. If undefined, it will be enabled if the headers
3823 indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled.
3824
3825 =item EV_ATOMIC_T
3826
3827 Libev requires an integer type (suitable for storing C<0> or C<1>) whose
3828 access is atomic with respect to other threads or signal contexts. No such
3829 type is easily found in the C language, so you can provide your own type
3830 that you know is safe for your purposes. It is used both for signal handler "locking"
3831 as well as for signal and thread safety in C<ev_async> watchers.
3832
3833 In the absence of this define, libev will use C<sig_atomic_t volatile>
3834 (from F<signal.h>), which is usually good enough on most platforms.
3835
3836 =item EV_H (h)
3837
3838 The name of the F<ev.h> header file used to include it. The default if
3839 undefined is C<"ev.h"> in F<event.h>, F<ev.c> and F<ev++.h>. This can be
3840 used to virtually rename the F<ev.h> header file in case of conflicts.
3841
3842 =item EV_CONFIG_H (h)
3843
3844 If C<EV_STANDALONE> isn't C<1>, this variable can be used to override
3845 F<ev.c>'s idea of where to find the F<config.h> file, similarly to
3846 C<EV_H>, above.
3847
3848 =item EV_EVENT_H (h)
3849
3850 Similarly to C<EV_H>, this macro can be used to override F<event.c>'s idea
3851 of how the F<event.h> header can be found, the default is C<"event.h">.
3852
3853 =item EV_PROTOTYPES (h)
3854
3855 If defined to be C<0>, then F<ev.h> will not define any function
3856 prototypes, but still define all the structs and other symbols. This is
3857 occasionally useful if you want to provide your own wrapper functions
3858 around libev functions.
3859
3860 =item EV_MULTIPLICITY
3861
3862 If undefined or defined to C<1>, then all event-loop-specific functions
3863 will have the C<struct ev_loop *> as first argument, and you can create
3864 additional independent event loops. Otherwise there will be no support
3865 for multiple event loops and there is no first event loop pointer
3866 argument. Instead, all functions act on the single default loop.
3867
3868 =item EV_MINPRI
3869
3870 =item EV_MAXPRI
3871
3872 The range of allowed priorities. C<EV_MINPRI> must be smaller or equal to
3873 C<EV_MAXPRI>, but otherwise there are no non-obvious limitations. You can
3874 provide for more priorities by overriding those symbols (usually defined
3875 to be C<-2> and C<2>, respectively).
3876
3877 When doing priority-based operations, libev usually has to linearly search
3878 all the priorities, so having many of them (hundreds) uses a lot of space
3879 and time, so using the defaults of five priorities (-2 .. +2) is usually
3880 fine.
3881
3882 If your embedding application does not need any priorities, defining these
3883 both to C<0> will save some memory and CPU.
3884
3885 =item EV_PERIODIC_ENABLE, EV_IDLE_ENABLE, EV_EMBED_ENABLE, EV_STAT_ENABLE,
3886 EV_PREPARE_ENABLE, EV_CHECK_ENABLE, EV_FORK_ENABLE, EV_SIGNAL_ENABLE,
3887 EV_ASYNC_ENABLE, EV_CHILD_ENABLE.
3888
3889 If undefined or defined to be C<1> (and the platform supports it), then
3890 the respective watcher type is supported. If defined to be C<0>, then it
3891 is not. Disabling watcher types mainly saves codesize.
3892
3893 =item EV_FEATURES
3894
3895 If you need to shave off some kilobytes of code at the expense of some
3896 speed (but with the full API), you can define this symbol to request
3897 certain subsets of functionality. The default is to enable all features
3898 that can be enabled on the platform.
3899
3900 A typical way to use this symbol is to define it to C<0> (or to a bitset
3901 with some broad features you want) and then selectively re-enable
3902 additional parts you want, for example if you want everything minimal,
3903 but multiple event loop support, async and child watchers and the poll
3904 backend, use this:
3905
3906 #define EV_FEATURES 0
3907 #define EV_MULTIPLICITY 1
3908 #define EV_USE_POLL 1
3909 #define EV_CHILD_ENABLE 1
3910 #define EV_ASYNC_ENABLE 1
3911
3912 The actual value is a bitset, it can be a combination of the following
3913 values:
3914
3915 =over 4
3916
3917 =item C<1> - faster/larger code
3918
3919 Use larger code to speed up some operations.
3920
3921 Currently this is used to override some inlining decisions (enlarging the roughly
3922 30% code size on amd64.
3923
3924 When optimising for size, use of compiler flags such as C<-Os> with
3925 gcc recommended, as well as C<-DNDEBUG>, as libev contains a number of
3926 assertions.
3927
3928 =item C<2> - faster/larger data structures
3929
3930 Replaces the small 2-heap for timer management by a faster 4-heap, larger
3931 hash table sizes and so on. This will usually further increase codesize
3932 and can additionally have an effect on the size of data structures at
3933 runtime.
3934
3935 =item C<4> - full API configuration
3936
3937 This enables priorities (sets C<EV_MAXPRI>=2 and C<EV_MINPRI>=-2), and
3938 enables multiplicity (C<EV_MULTIPLICITY>=1).
3939
3940 =item C<8> - full API
3941
3942 This enables a lot of the "lesser used" API functions. See C<ev.h> for
3943 details on which parts of the API are still available without this
3944 feature, and do not complain if this subset changes over time.
3945
3946 =item C<16> - enable all optional watcher types
3947
3948 Enables all optional watcher types. If you want to selectively enable
3949 only some watcher types other than I/O and timers (e.g. prepare,
3950 embed, async, child...) you can enable them manually by defining
3951 C<EV_watchertype_ENABLE> to C<1> instead.
3952
3953 =item C<32> - enable all backends
3954
3955 This enables all backends - without this feature, you need to enable at
3956 least one backend manually (C<EV_USE_SELECT> is a good choice).
3957
3958 =item C<64> - enable OS-specific "helper" APIs
3959
3960 Enable inotify, eventfd, signalfd and similar OS-specific helper APIs by
3961 default.
3962
3963 =back
3964
3965 Compiling with C<gcc -Os -DEV_STANDALONE -DEV_USE_EPOLL=1 -DEV_FEATURES=0>
3966 reduces the compiled size of libev from 24.7Kb code/2.8Kb data to 6.5Kb
3967 code/0.3Kb data on my GNU/Linux amd64 system, while still giving you I/O
3968 watchers, timers and monotonic clock support.
3969
3970 With an intelligent-enough linker (gcc+binutils are intelligent enough
3971 when you use C<-Wl,--gc-sections -ffunction-sections>) functions unused by
3972 your program might be left out as well - a binary starting a timer and an
3973 I/O watcher then might come out at only 5Kb.
3974
3975 =item EV_AVOID_STDIO
3976
3977 If this is set to C<1> at compiletime, then libev will avoid using stdio
3978 functions (printf, scanf, perror etc.). This will increase the codesize
3979 somewhat, but if your program doesn't otherwise depend on stdio and your
3980 libc allows it, this avoids linking in the stdio library which is quite
3981 big.
3982
3983 Note that error messages might become less precise when this option is
3984 enabled.
3985
3986 =item EV_NSIG
3987
3988 The highest supported signal number, +1 (or, the number of
3989 signals): Normally, libev tries to deduce the maximum number of signals
3990 automatically, but sometimes this fails, in which case it can be
3991 specified. Also, using a lower number than detected (C<32> should be
3992 good for about any system in existance) can save some memory, as libev
3993 statically allocates some 12-24 bytes per signal number.
3994
3995 =item EV_PID_HASHSIZE
3996
3997 C<ev_child> watchers use a small hash table to distribute workload by
3998 pid. The default size is C<16> (or C<1> with C<EV_FEATURES> disabled),
3999 usually more than enough. If you need to manage thousands of children you
4000 might want to increase this value (I<must> be a power of two).
4001
4002 =item EV_INOTIFY_HASHSIZE
4003
4004 C<ev_stat> watchers use a small hash table to distribute workload by
4005 inotify watch id. The default size is C<16> (or C<1> with C<EV_FEATURES>
4006 disabled), usually more than enough. If you need to manage thousands of
4007 C<ev_stat> watchers you might want to increase this value (I<must> be a
4008 power of two).
4009
4010 =item EV_USE_4HEAP
4011
4012 Heaps are not very cache-efficient. To improve the cache-efficiency of the
4013 timer and periodics heaps, libev uses a 4-heap when this symbol is defined
4014 to C<1>. The 4-heap uses more complicated (longer) code but has noticeably
4015 faster performance with many (thousands) of watchers.
4016
4017 The default is C<1>, unless C<EV_FEATURES> overrides it, in which case it
4018 will be C<0>.
4019
4020 =item EV_HEAP_CACHE_AT
4021
4022 Heaps are not very cache-efficient. To improve the cache-efficiency of the
4023 timer and periodics heaps, libev can cache the timestamp (I<at>) within
4024 the heap structure (selected by defining C<EV_HEAP_CACHE_AT> to C<1>),
4025 which uses 8-12 bytes more per watcher and a few hundred bytes more code,
4026 but avoids random read accesses on heap changes. This improves performance
4027 noticeably with many (hundreds) of watchers.
4028
4029 The default is C<1>, unless C<EV_FEATURES> overrides it, in which case it
4030 will be C<0>.
4031
4032 =item EV_VERIFY
4033
4034 Controls how much internal verification (see C<ev_loop_verify ()>) will
4035 be done: If set to C<0>, no internal verification code will be compiled
4036 in. If set to C<1>, then verification code will be compiled in, but not
4037 called. If set to C<2>, then the internal verification code will be
4038 called once per loop, which can slow down libev. If set to C<3>, then the
4039 verification code will be called very frequently, which will slow down
4040 libev considerably.
4041
4042 The default is C<1>, unless C<EV_FEATURES> overrides it, in which case it
4043 will be C<0>.
4044
4045 =item EV_COMMON
4046
4047 By default, all watchers have a C<void *data> member. By redefining
4048 this macro to a something else you can include more and other types of
4049 members. You have to define it each time you include one of the files,
4050 though, and it must be identical each time.
4051
4052 For example, the perl EV module uses something like this:
4053
4054 #define EV_COMMON \
4055 SV *self; /* contains this struct */ \
4056 SV *cb_sv, *fh /* note no trailing ";" */
4057
4058 =item EV_CB_DECLARE (type)
4059
4060 =item EV_CB_INVOKE (watcher, revents)
4061
4062 =item ev_set_cb (ev, cb)
4063
4064 Can be used to change the callback member declaration in each watcher,
4065 and the way callbacks are invoked and set. Must expand to a struct member
4066 definition and a statement, respectively. See the F<ev.h> header file for
4067 their default definitions. One possible use for overriding these is to
4068 avoid the C<struct ev_loop *> as first argument in all cases, or to use
4069 method calls instead of plain function calls in C++.
4070
4071 =back
4072
4073 =head2 EXPORTED API SYMBOLS
4074
4075 If you need to re-export the API (e.g. via a DLL) and you need a list of
4076 exported symbols, you can use the provided F<Symbol.*> files which list
4077 all public symbols, one per line:
4078
4079 Symbols.ev for libev proper
4080 Symbols.event for the libevent emulation
4081
4082 This can also be used to rename all public symbols to avoid clashes with
4083 multiple versions of libev linked together (which is obviously bad in
4084 itself, but sometimes it is inconvenient to avoid this).
4085
4086 A sed command like this will create wrapper C<#define>'s that you need to
4087 include before including F<ev.h>:
4088
4089 <Symbols.ev sed -e "s/.*/#define & myprefix_&/" >wrap.h
4090
4091 This would create a file F<wrap.h> which essentially looks like this:
4092
4093 #define ev_backend myprefix_ev_backend
4094 #define ev_check_start myprefix_ev_check_start
4095 #define ev_check_stop myprefix_ev_check_stop
4096 ...
4097
4098 =head2 EXAMPLES
4099
4100 For a real-world example of a program the includes libev
4101 verbatim, you can have a look at the EV perl module
4102 (L<http://software.schmorp.de/pkg/EV.html>). It has the libev files in
4103 the F<libev/> subdirectory and includes them in the F<EV/EVAPI.h> (public
4104 interface) and F<EV.xs> (implementation) files. Only the F<EV.xs> file
4105 will be compiled. It is pretty complex because it provides its own header
4106 file.
4107
4108 The usage in rxvt-unicode is simpler. It has a F<ev_cpp.h> header file
4109 that everybody includes and which overrides some configure choices:
4110
4111 #define EV_FEATURES 8
4112 #define EV_USE_SELECT 1
4113 #define EV_PREPARE_ENABLE 1
4114 #define EV_IDLE_ENABLE 1
4115 #define EV_SIGNAL_ENABLE 1
4116 #define EV_CHILD_ENABLE 1
4117 #define EV_USE_STDEXCEPT 0
4118 #define EV_CONFIG_H <config.h>
4119
4120 #include "ev++.h"
4121
4122 And a F<ev_cpp.C> implementation file that contains libev proper and is compiled:
4123
4124 #include "ev_cpp.h"
4125 #include "ev.c"
4126
4127 =head1 INTERACTION WITH OTHER PROGRAMS OR LIBRARIES
4128
4129 =head2 THREADS AND COROUTINES
4130
4131 =head3 THREADS
4132
4133 All libev functions are reentrant and thread-safe unless explicitly
4134 documented otherwise, but libev implements no locking itself. This means
4135 that you can use as many loops as you want in parallel, as long as there
4136 are no concurrent calls into any libev function with the same loop
4137 parameter (C<ev_default_*> calls have an implicit default loop parameter,
4138 of course): libev guarantees that different event loops share no data
4139 structures that need any locking.
4140
4141 Or to put it differently: calls with different loop parameters can be done
4142 concurrently from multiple threads, calls with the same loop parameter
4143 must be done serially (but can be done from different threads, as long as
4144 only one thread ever is inside a call at any point in time, e.g. by using
4145 a mutex per loop).
4146
4147 Specifically to support threads (and signal handlers), libev implements
4148 so-called C<ev_async> watchers, which allow some limited form of
4149 concurrency on the same event loop, namely waking it up "from the
4150 outside".
4151
4152 If you want to know which design (one loop, locking, or multiple loops
4153 without or something else still) is best for your problem, then I cannot
4154 help you, but here is some generic advice:
4155
4156 =over 4
4157
4158 =item * most applications have a main thread: use the default libev loop
4159 in that thread, or create a separate thread running only the default loop.
4160
4161 This helps integrating other libraries or software modules that use libev
4162 themselves and don't care/know about threading.
4163
4164 =item * one loop per thread is usually a good model.
4165
4166 Doing this is almost never wrong, sometimes a better-performance model
4167 exists, but it is always a good start.
4168
4169 =item * other models exist, such as the leader/follower pattern, where one
4170 loop is handed through multiple threads in a kind of round-robin fashion.
4171
4172 Choosing a model is hard - look around, learn, know that usually you can do
4173 better than you currently do :-)
4174
4175 =item * often you need to talk to some other thread which blocks in the
4176 event loop.
4177
4178 C<ev_async> watchers can be used to wake them up from other threads safely
4179 (or from signal contexts...).
4180
4181 An example use would be to communicate signals or other events that only
4182 work in the default loop by registering the signal watcher with the
4183 default loop and triggering an C<ev_async> watcher from the default loop
4184 watcher callback into the event loop interested in the signal.
4185
4186 =back
4187
4188 =head4 THREAD LOCKING EXAMPLE
4189
4190 Here is a fictitious example of how to run an event loop in a different
4191 thread than where callbacks are being invoked and watchers are
4192 created/added/removed.
4193
4194 For a real-world example, see the C<EV::Loop::Async> perl module,
4195 which uses exactly this technique (which is suited for many high-level
4196 languages).
4197
4198 The example uses a pthread mutex to protect the loop data, a condition
4199 variable to wait for callback invocations, an async watcher to notify the
4200 event loop thread and an unspecified mechanism to wake up the main thread.
4201
4202 First, you need to associate some data with the event loop:
4203
4204 typedef struct {
4205 mutex_t lock; /* global loop lock */
4206 ev_async async_w;
4207 thread_t tid;
4208 cond_t invoke_cv;
4209 } userdata;
4210
4211 void prepare_loop (EV_P)
4212 {
4213 // for simplicity, we use a static userdata struct.
4214 static userdata u;
4215
4216 ev_async_init (&u->async_w, async_cb);
4217 ev_async_start (EV_A_ &u->async_w);
4218
4219 pthread_mutex_init (&u->lock, 0);
4220 pthread_cond_init (&u->invoke_cv, 0);
4221
4222 // now associate this with the loop
4223 ev_set_userdata (EV_A_ u);
4224 ev_set_invoke_pending_cb (EV_A_ l_invoke);
4225 ev_set_loop_release_cb (EV_A_ l_release, l_acquire);
4226
4227 // then create the thread running ev_loop
4228 pthread_create (&u->tid, 0, l_run, EV_A);
4229 }
4230
4231 The callback for the C<ev_async> watcher does nothing: the watcher is used
4232 solely to wake up the event loop so it takes notice of any new watchers
4233 that might have been added:
4234
4235 static void
4236 async_cb (EV_P_ ev_async *w, int revents)
4237 {
4238 // just used for the side effects
4239 }
4240
4241 The C<l_release> and C<l_acquire> callbacks simply unlock/lock the mutex
4242 protecting the loop data, respectively.
4243
4244 static void
4245 l_release (EV_P)
4246 {
4247 userdata *u = ev_userdata (EV_A);
4248 pthread_mutex_unlock (&u->lock);
4249 }
4250
4251 static void
4252 l_acquire (EV_P)
4253 {
4254 userdata *u = ev_userdata (EV_A);
4255 pthread_mutex_lock (&u->lock);
4256 }
4257
4258 The event loop thread first acquires the mutex, and then jumps straight
4259 into C<ev_loop>:
4260
4261 void *
4262 l_run (void *thr_arg)
4263 {
4264 struct ev_loop *loop = (struct ev_loop *)thr_arg;
4265
4266 l_acquire (EV_A);
4267 pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, 0);
4268 ev_loop (EV_A_ 0);
4269 l_release (EV_A);
4270
4271 return 0;
4272 }
4273
4274 Instead of invoking all pending watchers, the C<l_invoke> callback will
4275 signal the main thread via some unspecified mechanism (signals? pipe
4276 writes? C<Async::Interrupt>?) and then waits until all pending watchers
4277 have been called (in a while loop because a) spurious wakeups are possible
4278 and b) skipping inter-thread-communication when there are no pending
4279 watchers is very beneficial):
4280
4281 static void
4282 l_invoke (EV_P)
4283 {
4284 userdata *u = ev_userdata (EV_A);
4285
4286 while (ev_pending_count (EV_A))
4287 {
4288 wake_up_other_thread_in_some_magic_or_not_so_magic_way ();
4289 pthread_cond_wait (&u->invoke_cv, &u->lock);
4290 }
4291 }
4292
4293 Now, whenever the main thread gets told to invoke pending watchers, it
4294 will grab the lock, call C<ev_invoke_pending> and then signal the loop
4295 thread to continue:
4296
4297 static void
4298 real_invoke_pending (EV_P)
4299 {
4300 userdata *u = ev_userdata (EV_A);
4301
4302 pthread_mutex_lock (&u->lock);
4303 ev_invoke_pending (EV_A);
4304 pthread_cond_signal (&u->invoke_cv);
4305 pthread_mutex_unlock (&u->lock);
4306 }
4307
4308 Whenever you want to start/stop a watcher or do other modifications to an
4309 event loop, you will now have to lock:
4310
4311 ev_timer timeout_watcher;
4312 userdata *u = ev_userdata (EV_A);
4313
4314 ev_timer_init (&timeout_watcher, timeout_cb, 5.5, 0.);
4315
4316 pthread_mutex_lock (&u->lock);
4317 ev_timer_start (EV_A_ &timeout_watcher);
4318 ev_async_send (EV_A_ &u->async_w);
4319 pthread_mutex_unlock (&u->lock);
4320
4321 Note that sending the C<ev_async> watcher is required because otherwise
4322 an event loop currently blocking in the kernel will have no knowledge
4323 about the newly added timer. By waking up the loop it will pick up any new
4324 watchers in the next event loop iteration.
4325
4326 =head3 COROUTINES
4327
4328 Libev is very accommodating to coroutines ("cooperative threads"):
4329 libev fully supports nesting calls to its functions from different
4330 coroutines (e.g. you can call C<ev_loop> on the same loop from two
4331 different coroutines, and switch freely between both coroutines running
4332 the loop, as long as you don't confuse yourself). The only exception is
4333 that you must not do this from C<ev_periodic> reschedule callbacks.
4334
4335 Care has been taken to ensure that libev does not keep local state inside
4336 C<ev_loop>, and other calls do not usually allow for coroutine switches as
4337 they do not call any callbacks.
4338
4339 =head2 COMPILER WARNINGS
4340
4341 Depending on your compiler and compiler settings, you might get no or a
4342 lot of warnings when compiling libev code. Some people are apparently
4343 scared by this.
4344
4345 However, these are unavoidable for many reasons. For one, each compiler
4346 has different warnings, and each user has different tastes regarding
4347 warning options. "Warn-free" code therefore cannot be a goal except when
4348 targeting a specific compiler and compiler-version.
4349
4350 Another reason is that some compiler warnings require elaborate
4351 workarounds, or other changes to the code that make it less clear and less
4352 maintainable.
4353
4354 And of course, some compiler warnings are just plain stupid, or simply
4355 wrong (because they don't actually warn about the condition their message
4356 seems to warn about). For example, certain older gcc versions had some
4357 warnings that resulted an extreme number of false positives. These have
4358 been fixed, but some people still insist on making code warn-free with
4359 such buggy versions.
4360
4361 While libev is written to generate as few warnings as possible,
4362 "warn-free" code is not a goal, and it is recommended not to build libev
4363 with any compiler warnings enabled unless you are prepared to cope with
4364 them (e.g. by ignoring them). Remember that warnings are just that:
4365 warnings, not errors, or proof of bugs.
4366
4367
4368 =head2 VALGRIND
4369
4370 Valgrind has a special section here because it is a popular tool that is
4371 highly useful. Unfortunately, valgrind reports are very hard to interpret.
4372
4373 If you think you found a bug (memory leak, uninitialised data access etc.)
4374 in libev, then check twice: If valgrind reports something like:
4375
4376 ==2274== definitely lost: 0 bytes in 0 blocks.
4377 ==2274== possibly lost: 0 bytes in 0 blocks.
4378 ==2274== still reachable: 256 bytes in 1 blocks.
4379
4380 Then there is no memory leak, just as memory accounted to global variables
4381 is not a memleak - the memory is still being referenced, and didn't leak.
4382
4383 Similarly, under some circumstances, valgrind might report kernel bugs
4384 as if it were a bug in libev (e.g. in realloc or in the poll backend,
4385 although an acceptable workaround has been found here), or it might be
4386 confused.
4387
4388 Keep in mind that valgrind is a very good tool, but only a tool. Don't
4389 make it into some kind of religion.
4390
4391 If you are unsure about something, feel free to contact the mailing list
4392 with the full valgrind report and an explanation on why you think this
4393 is a bug in libev (best check the archives, too :). However, don't be
4394 annoyed when you get a brisk "this is no bug" answer and take the chance
4395 of learning how to interpret valgrind properly.
4396
4397 If you need, for some reason, empty reports from valgrind for your project
4398 I suggest using suppression lists.
4399
4400
4401 =head1 PORTABILITY NOTES
4402
4403 =head2 WIN32 PLATFORM LIMITATIONS AND WORKAROUNDS
4404
4405 Win32 doesn't support any of the standards (e.g. POSIX) that libev
4406 requires, and its I/O model is fundamentally incompatible with the POSIX
4407 model. Libev still offers limited functionality on this platform in
4408 the form of the C<EVBACKEND_SELECT> backend, and only supports socket
4409 descriptors. This only applies when using Win32 natively, not when using
4410 e.g. cygwin.
4411
4412 Lifting these limitations would basically require the full
4413 re-implementation of the I/O system. If you are into these kinds of
4414 things, then note that glib does exactly that for you in a very portable
4415 way (note also that glib is the slowest event library known to man).
4416
4417 There is no supported compilation method available on windows except
4418 embedding it into other applications.
4419
4420 Sensible signal handling is officially unsupported by Microsoft - libev
4421 tries its best, but under most conditions, signals will simply not work.
4422
4423 Not a libev limitation but worth mentioning: windows apparently doesn't
4424 accept large writes: instead of resulting in a partial write, windows will
4425 either accept everything or return C<ENOBUFS> if the buffer is too large,
4426 so make sure you only write small amounts into your sockets (less than a
4427 megabyte seems safe, but this apparently depends on the amount of memory
4428 available).
4429
4430 Due to the many, low, and arbitrary limits on the win32 platform and
4431 the abysmal performance of winsockets, using a large number of sockets
4432 is not recommended (and not reasonable). If your program needs to use
4433 more than a hundred or so sockets, then likely it needs to use a totally
4434 different implementation for windows, as libev offers the POSIX readiness
4435 notification model, which cannot be implemented efficiently on windows
4436 (due to Microsoft monopoly games).
4437
4438 A typical way to use libev under windows is to embed it (see the embedding
4439 section for details) and use the following F<evwrap.h> header file instead
4440 of F<ev.h>:
4441
4442 #define EV_STANDALONE /* keeps ev from requiring config.h */
4443 #define EV_SELECT_IS_WINSOCKET 1 /* configure libev for windows select */
4444
4445 #include "ev.h"
4446
4447 And compile the following F<evwrap.c> file into your project (make sure
4448 you do I<not> compile the F<ev.c> or any other embedded source files!):
4449
4450 #include "evwrap.h"
4451 #include "ev.c"
4452
4453 =over 4
4454
4455 =item The winsocket select function
4456
4457 The winsocket C<select> function doesn't follow POSIX in that it
4458 requires socket I<handles> and not socket I<file descriptors> (it is
4459 also extremely buggy). This makes select very inefficient, and also
4460 requires a mapping from file descriptors to socket handles (the Microsoft
4461 C runtime provides the function C<_open_osfhandle> for this). See the
4462 discussion of the C<EV_SELECT_USE_FD_SET>, C<EV_SELECT_IS_WINSOCKET> and
4463 C<EV_FD_TO_WIN32_HANDLE> preprocessor symbols for more info.
4464
4465 The configuration for a "naked" win32 using the Microsoft runtime
4466 libraries and raw winsocket select is:
4467
4468 #define EV_USE_SELECT 1
4469 #define EV_SELECT_IS_WINSOCKET 1 /* forces EV_SELECT_USE_FD_SET, too */
4470
4471 Note that winsockets handling of fd sets is O(n), so you can easily get a
4472 complexity in the O(n²) range when using win32.
4473
4474 =item Limited number of file descriptors
4475
4476 Windows has numerous arbitrary (and low) limits on things.
4477
4478 Early versions of winsocket's select only supported waiting for a maximum
4479 of C<64> handles (probably owning to the fact that all windows kernels
4480 can only wait for C<64> things at the same time internally; Microsoft
4481 recommends spawning a chain of threads and wait for 63 handles and the
4482 previous thread in each. Sounds great!).
4483
4484 Newer versions support more handles, but you need to define C<FD_SETSIZE>
4485 to some high number (e.g. C<2048>) before compiling the winsocket select
4486 call (which might be in libev or elsewhere, for example, perl and many
4487 other interpreters do their own select emulation on windows).
4488
4489 Another limit is the number of file descriptors in the Microsoft runtime
4490 libraries, which by default is C<64> (there must be a hidden I<64>
4491 fetish or something like this inside Microsoft). You can increase this
4492 by calling C<_setmaxstdio>, which can increase this limit to C<2048>
4493 (another arbitrary limit), but is broken in many versions of the Microsoft
4494 runtime libraries. This might get you to about C<512> or C<2048> sockets
4495 (depending on windows version and/or the phase of the moon). To get more,
4496 you need to wrap all I/O functions and provide your own fd management, but
4497 the cost of calling select (O(n²)) will likely make this unworkable.
4498
4499 =back
4500
4501 =head2 PORTABILITY REQUIREMENTS
4502
4503 In addition to a working ISO-C implementation and of course the
4504 backend-specific APIs, libev relies on a few additional extensions:
4505
4506 =over 4
4507
4508 =item C<void (*)(ev_watcher_type *, int revents)> must have compatible
4509 calling conventions regardless of C<ev_watcher_type *>.
4510
4511 Libev assumes not only that all watcher pointers have the same internal
4512 structure (guaranteed by POSIX but not by ISO C for example), but it also
4513 assumes that the same (machine) code can be used to call any watcher
4514 callback: The watcher callbacks have different type signatures, but libev
4515 calls them using an C<ev_watcher *> internally.
4516
4517 =item C<sig_atomic_t volatile> must be thread-atomic as well
4518
4519 The type C<sig_atomic_t volatile> (or whatever is defined as
4520 C<EV_ATOMIC_T>) must be atomic with respect to accesses from different
4521 threads. This is not part of the specification for C<sig_atomic_t>, but is
4522 believed to be sufficiently portable.
4523
4524 =item C<sigprocmask> must work in a threaded environment
4525
4526 Libev uses C<sigprocmask> to temporarily block signals. This is not
4527 allowed in a threaded program (C<pthread_sigmask> has to be used). Typical
4528 pthread implementations will either allow C<sigprocmask> in the "main
4529 thread" or will block signals process-wide, both behaviours would
4530 be compatible with libev. Interaction between C<sigprocmask> and
4531 C<pthread_sigmask> could complicate things, however.
4532
4533 The most portable way to handle signals is to block signals in all threads
4534 except the initial one, and run the default loop in the initial thread as
4535 well.
4536
4537 =item C<long> must be large enough for common memory allocation sizes
4538
4539 To improve portability and simplify its API, libev uses C<long> internally
4540 instead of C<size_t> when allocating its data structures. On non-POSIX
4541 systems (Microsoft...) this might be unexpectedly low, but is still at
4542 least 31 bits everywhere, which is enough for hundreds of millions of
4543 watchers.
4544
4545 =item C<double> must hold a time value in seconds with enough accuracy
4546
4547 The type C<double> is used to represent timestamps. It is required to
4548 have at least 51 bits of mantissa (and 9 bits of exponent), which is good
4549 enough for at least into the year 4000. This requirement is fulfilled by
4550 implementations implementing IEEE 754, which is basically all existing
4551 ones. With IEEE 754 doubles, you get microsecond accuracy until at least
4552 2200.
4553
4554 =back
4555
4556 If you know of other additional requirements drop me a note.
4557
4558
4559 =head1 ALGORITHMIC COMPLEXITIES
4560
4561 In this section the complexities of (many of) the algorithms used inside
4562 libev will be documented. For complexity discussions about backends see
4563 the documentation for C<ev_default_init>.
4564
4565 All of the following are about amortised time: If an array needs to be
4566 extended, libev needs to realloc and move the whole array, but this
4567 happens asymptotically rarer with higher number of elements, so O(1) might
4568 mean that libev does a lengthy realloc operation in rare cases, but on
4569 average it is much faster and asymptotically approaches constant time.
4570
4571 =over 4
4572
4573 =item Starting and stopping timer/periodic watchers: O(log skipped_other_timers)
4574
4575 This means that, when you have a watcher that triggers in one hour and
4576 there are 100 watchers that would trigger before that, then inserting will
4577 have to skip roughly seven (C<ld 100>) of these watchers.
4578
4579 =item Changing timer/periodic watchers (by autorepeat or calling again): O(log skipped_other_timers)
4580
4581 That means that changing a timer costs less than removing/adding them,
4582 as only the relative motion in the event queue has to be paid for.
4583
4584 =item Starting io/check/prepare/idle/signal/child/fork/async watchers: O(1)
4585
4586 These just add the watcher into an array or at the head of a list.
4587
4588 =item Stopping check/prepare/idle/fork/async watchers: O(1)
4589
4590 =item Stopping an io/signal/child watcher: O(number_of_watchers_for_this_(fd/signal/pid % EV_PID_HASHSIZE))
4591
4592 These watchers are stored in lists, so they need to be walked to find the
4593 correct watcher to remove. The lists are usually short (you don't usually
4594 have many watchers waiting for the same fd or signal: one is typical, two
4595 is rare).
4596
4597 =item Finding the next timer in each loop iteration: O(1)
4598
4599 By virtue of using a binary or 4-heap, the next timer is always found at a
4600 fixed position in the storage array.
4601
4602 =item Each change on a file descriptor per loop iteration: O(number_of_watchers_for_this_fd)
4603
4604 A change means an I/O watcher gets started or stopped, which requires
4605 libev to recalculate its status (and possibly tell the kernel, depending
4606 on backend and whether C<ev_io_set> was used).
4607
4608 =item Activating one watcher (putting it into the pending state): O(1)
4609
4610 =item Priority handling: O(number_of_priorities)
4611
4612 Priorities are implemented by allocating some space for each
4613 priority. When doing priority-based operations, libev usually has to
4614 linearly search all the priorities, but starting/stopping and activating
4615 watchers becomes O(1) with respect to priority handling.
4616
4617 =item Sending an ev_async: O(1)
4618
4619 =item Processing ev_async_send: O(number_of_async_watchers)
4620
4621 =item Processing signals: O(max_signal_number)
4622
4623 Sending involves a system call I<iff> there were no other C<ev_async_send>
4624 calls in the current loop iteration. Checking for async and signal events
4625 involves iterating over all running async watchers or all signal numbers.
4626
4627 =back
4628
4629
4630 =head1 PORTING FROM LIBEV 3.X TO 4.X
4631
4632 The major version 4 introduced some minor incompatible changes to the API.
4633
4634 At the moment, the C<ev.h> header file tries to implement superficial
4635 compatibility, so most programs should still compile. Those might be
4636 removed in later versions of libev, so better update early than late.
4637
4638 =over 4
4639
4640 =item C<ev_loop_count> renamed to C<ev_iteration>
4641
4642 =item C<ev_loop_depth> renamed to C<ev_depth>
4643
4644 =item C<ev_loop_verify> renamed to C<ev_verify>
4645
4646 Most functions working on C<struct ev_loop> objects don't have an
4647 C<ev_loop_> prefix, so it was removed. Note that C<ev_loop_fork> is
4648 still called C<ev_loop_fork> because it would otherwise clash with the
4649 C<ev_fork> typedef.
4650
4651 =item C<EV_TIMEOUT> renamed to C<EV_TIMER> in C<revents>
4652
4653 This is a simple rename - all other watcher types use their name
4654 as revents flag, and now C<ev_timer> does, too.
4655
4656 Both C<EV_TIMER> and C<EV_TIMEOUT> symbols were present in 3.x versions
4657 and continue to be present for the forseeable future, so this is mostly a
4658 documentation change.
4659
4660 =item C<EV_MINIMAL> mechanism replaced by C<EV_FEATURES>
4661
4662 The preprocessor symbol C<EV_MINIMAL> has been replaced by a different
4663 mechanism, C<EV_FEATURES>. Programs using C<EV_MINIMAL> usually compile
4664 and work, but the library code will of course be larger.
4665
4666 =back
4667
4668
4669 =head1 GLOSSARY
4670
4671 =over 4
4672
4673 =item active
4674
4675 A watcher is active as long as it has been started (has been attached to
4676 an event loop) but not yet stopped (disassociated from the event loop).
4677
4678 =item application
4679
4680 In this document, an application is whatever is using libev.
4681
4682 =item callback
4683
4684 The address of a function that is called when some event has been
4685 detected. Callbacks are being passed the event loop, the watcher that
4686 received the event, and the actual event bitset.
4687
4688 =item callback invocation
4689
4690 The act of calling the callback associated with a watcher.
4691
4692 =item event
4693
4694 A change of state of some external event, such as data now being available
4695 for reading on a file descriptor, time having passed or simply not having
4696 any other events happening anymore.
4697
4698 In libev, events are represented as single bits (such as C<EV_READ> or
4699 C<EV_TIMER>).
4700
4701 =item event library
4702
4703 A software package implementing an event model and loop.
4704
4705 =item event loop
4706
4707 An entity that handles and processes external events and converts them
4708 into callback invocations.
4709
4710 =item event model
4711
4712 The model used to describe how an event loop handles and processes
4713 watchers and events.
4714
4715 =item pending
4716
4717 A watcher is pending as soon as the corresponding event has been detected,
4718 and stops being pending as soon as the watcher will be invoked or its
4719 pending status is explicitly cleared by the application.
4720
4721 A watcher can be pending, but not active. Stopping a watcher also clears
4722 its pending status.
4723
4724 =item real time
4725
4726 The physical time that is observed. It is apparently strictly monotonic :)
4727
4728 =item wall-clock time
4729
4730 The time and date as shown on clocks. Unlike real time, it can actually
4731 be wrong and jump forwards and backwards, e.g. when the you adjust your
4732 clock.
4733
4734 =item watcher
4735
4736 A data structure that describes interest in certain events. Watchers need
4737 to be started (attached to an event loop) before they can receive events.
4738
4739 =item watcher invocation
4740
4741 The act of calling the callback associated with a watcher.
4742
4743 =back
4744
4745 =head1 AUTHOR
4746
4747 Marc Lehmann <libev@schmorp.de>, with repeated corrections by Mikael Magnusson.
4748