ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.pod
Revision: 1.144
Committed: Mon Apr 7 12:33:29 2008 UTC (16 years, 1 month ago) by root
Branch: MAIN
Changes since 1.143: +57 -7 lines
Log Message:
*** empty log message ***

File Contents

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