ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.pod
Revision: 1.32
Committed: Fri Nov 23 08:36:35 2007 UTC (16 years, 5 months ago) by root
Branch: MAIN
Changes since 1.31: +19 -0 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     =head1 DESCRIPTION
10    
11     Libev is an event loop: you register interest in certain events (such as a
12     file descriptor being readable or a timeout occuring), and it will manage
13 root 1.4 these event sources and provide your program with events.
14 root 1.1
15     To do this, it must take more or less complete control over your process
16     (or thread) by executing the I<event loop> handler, and will then
17     communicate events via a callback mechanism.
18    
19     You register interest in certain events by registering so-called I<event
20     watchers>, which are relatively small C structures you initialise with the
21     details of the event, and then hand it over to libev by I<starting> the
22     watcher.
23    
24     =head1 FEATURES
25    
26     Libev supports select, poll, the linux-specific epoll and the bsd-specific
27     kqueue mechanisms for file descriptor events, relative timers, absolute
28     timers with customised rescheduling, signal events, process status change
29     events (related to SIGCHLD), and event watchers dealing with the event
30 root 1.5 loop mechanism itself (idle, prepare and check watchers). It also is quite
31 root 1.7 fast (see this L<benchmark|http://libev.schmorp.de/bench.html> comparing
32     it to libevent for example).
33 root 1.1
34     =head1 CONVENTIONS
35    
36     Libev is very configurable. In this manual the default configuration
37     will be described, which supports multiple event loops. For more info
38 root 1.7 about various configuration options please have a look at the file
39 root 1.1 F<README.embed> in the libev distribution. If libev was configured without
40     support for multiple event loops, then all functions taking an initial
41     argument of name C<loop> (which is always of type C<struct ev_loop *>)
42     will not have this argument.
43    
44 root 1.17 =head1 TIME REPRESENTATION
45 root 1.1
46 root 1.2 Libev represents time as a single floating point number, representing the
47     (fractional) number of seconds since the (POSIX) epoch (somewhere near
48     the beginning of 1970, details are complicated, don't ask). This type is
49 root 1.1 called C<ev_tstamp>, which is what you should use too. It usually aliases
50     to the double type in C.
51    
52 root 1.17 =head1 GLOBAL FUNCTIONS
53    
54 root 1.18 These functions can be called anytime, even before initialising the
55     library in any way.
56    
57 root 1.1 =over 4
58    
59     =item ev_tstamp ev_time ()
60    
61 root 1.26 Returns the current time as libev would use it. Please note that the
62     C<ev_now> function is usually faster and also often returns the timestamp
63     you actually want to know.
64 root 1.1
65     =item int ev_version_major ()
66    
67     =item int ev_version_minor ()
68    
69     You can find out the major and minor version numbers of the library
70     you linked against by calling the functions C<ev_version_major> and
71     C<ev_version_minor>. If you want, you can compare against the global
72     symbols C<EV_VERSION_MAJOR> and C<EV_VERSION_MINOR>, which specify the
73     version of the library your program was compiled against.
74    
75 root 1.9 Usually, it's a good idea to terminate if the major versions mismatch,
76 root 1.1 as this indicates an incompatible change. Minor versions are usually
77     compatible to older versions, so a larger minor version alone is usually
78     not a problem.
79    
80 root 1.31 =item unsigned int ev_supported_backends ()
81    
82     Return the set of all backends (i.e. their corresponding C<EV_BACKEND_*>
83     value) compiled into this binary of libev (independent of their
84     availability on the system you are running on). See C<ev_default_loop> for
85     a description of the set values.
86    
87     =item unsigned int ev_recommended_backends ()
88    
89     Return the set of all backends compiled into this binary of libev and also
90     recommended for this platform. This set is often smaller than the one
91     returned by C<ev_supported_backends>, as for example kqueue is broken on
92     most BSDs and will not be autodetected unless you explicitly request it
93     (assuming you know what you are doing). This is the set of backends that
94     C<EVFLAG_AUTO> will probe for.
95    
96 root 1.1 =item ev_set_allocator (void *(*cb)(void *ptr, long size))
97    
98     Sets the allocation function to use (the prototype is similar to the
99 root 1.7 realloc C function, the semantics are identical). It is used to allocate
100     and free memory (no surprises here). If it returns zero when memory
101     needs to be allocated, the library might abort or take some potentially
102     destructive action. The default is your system realloc function.
103 root 1.1
104     You could override this function in high-availability programs to, say,
105     free some memory if it cannot allocate memory, to use a special allocator,
106     or even to sleep a while and retry until some memory is available.
107    
108     =item ev_set_syserr_cb (void (*cb)(const char *msg));
109    
110     Set the callback function to call on a retryable syscall error (such
111     as failed select, poll, epoll_wait). The message is a printable string
112     indicating the system call or subsystem causing the problem. If this
113     callback is set, then libev will expect it to remedy the sitution, no
114 root 1.7 matter what, when it returns. That is, libev will generally retry the
115 root 1.1 requested operation, or, if the condition doesn't go away, do bad stuff
116     (such as abort).
117    
118     =back
119    
120     =head1 FUNCTIONS CONTROLLING THE EVENT LOOP
121    
122     An event loop is described by a C<struct ev_loop *>. The library knows two
123     types of such loops, the I<default> loop, which supports signals and child
124     events, and dynamically created loops which do not.
125    
126     If you use threads, a common model is to run the default event loop
127 root 1.17 in your main thread (or in a separate thread) and for each thread you
128 root 1.7 create, you also create another event loop. Libev itself does no locking
129     whatsoever, so if you mix calls to the same event loop in different
130     threads, make sure you lock (this is usually a bad idea, though, even if
131 root 1.9 done correctly, because it's hideous and inefficient).
132 root 1.1
133     =over 4
134    
135     =item struct ev_loop *ev_default_loop (unsigned int flags)
136    
137     This will initialise the default event loop if it hasn't been initialised
138     yet and return it. If the default loop could not be initialised, returns
139     false. If it already was initialised it simply returns it (and ignores the
140 root 1.31 flags. If that is troubling you, check C<ev_backend ()> afterwards).
141 root 1.1
142     If you don't know what event loop to use, use the one returned from this
143     function.
144    
145     The flags argument can be used to specify special behaviour or specific
146 root 1.31 backends to use, and is usually specified as C<0> (or EVFLAG_AUTO).
147 root 1.1
148     It supports the following flags:
149    
150     =over 4
151    
152 root 1.10 =item C<EVFLAG_AUTO>
153 root 1.1
154 root 1.9 The default flags value. Use this if you have no clue (it's the right
155 root 1.1 thing, believe me).
156    
157 root 1.10 =item C<EVFLAG_NOENV>
158 root 1.1
159 root 1.8 If this flag bit is ored into the flag value (or the program runs setuid
160     or setgid) then libev will I<not> look at the environment variable
161     C<LIBEV_FLAGS>. Otherwise (the default), this environment variable will
162     override the flags completely if it is found in the environment. This is
163     useful to try out specific backends to test their performance, or to work
164     around bugs.
165 root 1.1
166 root 1.31 =item C<EVBACKEND_SELECT> (value 1, portable select backend)
167 root 1.1
168 root 1.29 This is your standard select(2) backend. Not I<completely> standard, as
169     libev tries to roll its own fd_set with no limits on the number of fds,
170     but if that fails, expect a fairly low limit on the number of fds when
171     using this backend. It doesn't scale too well (O(highest_fd)), but its usually
172     the fastest backend for a low number of fds.
173 root 1.1
174 root 1.31 =item C<EVBACKEND_POLL> (value 2, poll backend, available everywhere except on windows)
175 root 1.1
176 root 1.29 And this is your standard poll(2) backend. It's more complicated than
177     select, but handles sparse fds better and has no artificial limit on the
178     number of fds you can use (except it will slow down considerably with a
179     lot of inactive fds). It scales similarly to select, i.e. O(total_fds).
180 root 1.1
181 root 1.31 =item C<EVBACKEND_EPOLL> (value 4, Linux)
182 root 1.1
183 root 1.29 For few fds, this backend is a bit little slower than poll and select,
184     but it scales phenomenally better. While poll and select usually scale like
185     O(total_fds) where n is the total number of fds (or the highest fd), epoll scales
186     either O(1) or O(active_fds).
187 root 1.1
188 root 1.29 While stopping and starting an I/O watcher in the same iteration will
189     result in some caching, there is still a syscall per such incident
190     (because the fd could point to a different file description now), so its
191     best to avoid that. Also, dup()ed file descriptors might not work very
192     well if you register events for both fds.
193    
194 root 1.32 Please note that epoll sometimes generates spurious notifications, so you
195     need to use non-blocking I/O or other means to avoid blocking when no data
196     (or space) is available.
197    
198 root 1.31 =item C<EVBACKEND_KQUEUE> (value 8, most BSD clones)
199 root 1.29
200     Kqueue deserves special mention, as at the time of this writing, it
201     was broken on all BSDs except NetBSD (usually it doesn't work with
202     anything but sockets and pipes, except on Darwin, where of course its
203     completely useless). For this reason its not being "autodetected" unless
204     you explicitly specify the flags (i.e. you don't use EVFLAG_AUTO).
205    
206     It scales in the same way as the epoll backend, but the interface to the
207     kernel is more efficient (which says nothing about its actual speed, of
208     course). While starting and stopping an I/O watcher does not cause an
209     extra syscall as with epoll, it still adds up to four event changes per
210     incident, so its best to avoid that.
211    
212 root 1.31 =item C<EVBACKEND_DEVPOLL> (value 16, Solaris 8)
213 root 1.29
214     This is not implemented yet (and might never be).
215    
216 root 1.31 =item C<EVBACKEND_PORT> (value 32, Solaris 10)
217 root 1.29
218     This uses the Solaris 10 port mechanism. As with everything on Solaris,
219     it's really slow, but it still scales very well (O(active_fds)).
220    
221 root 1.32 Please note that solaris ports can result in a lot of spurious
222     notifications, so you need to use non-blocking I/O or other means to avoid
223     blocking when no data (or space) is available.
224    
225 root 1.31 =item C<EVBACKEND_ALL>
226 root 1.29
227     Try all backends (even potentially broken ones that wouldn't be tried
228     with C<EVFLAG_AUTO>). Since this is a mask, you can do stuff such as
229 root 1.31 C<EVBACKEND_ALL & ~EVBACKEND_KQUEUE>.
230 root 1.1
231     =back
232    
233 root 1.29 If one or more of these are ored into the flags value, then only these
234     backends will be tried (in the reverse order as given here). If none are
235     specified, most compiled-in backend will be tried, usually in reverse
236     order of their flag values :)
237    
238 root 1.1 =item struct ev_loop *ev_loop_new (unsigned int flags)
239    
240     Similar to C<ev_default_loop>, but always creates a new event loop that is
241     always distinct from the default loop. Unlike the default loop, it cannot
242     handle signal and child watchers, and attempts to do so will be greeted by
243     undefined behaviour (or a failed assertion if assertions are enabled).
244    
245     =item ev_default_destroy ()
246    
247     Destroys the default loop again (frees all memory and kernel state
248     etc.). This stops all registered event watchers (by not touching them in
249 root 1.9 any way whatsoever, although you cannot rely on this :).
250 root 1.1
251     =item ev_loop_destroy (loop)
252    
253     Like C<ev_default_destroy>, but destroys an event loop created by an
254     earlier call to C<ev_loop_new>.
255    
256     =item ev_default_fork ()
257    
258     This function reinitialises the kernel state for backends that have
259     one. Despite the name, you can call it anytime, but it makes most sense
260     after forking, in either the parent or child process (or both, but that
261     again makes little sense).
262    
263 root 1.30 You I<must> call this function in the child process after forking if and
264     only if you want to use the event library in both processes. If you just
265     fork+exec, you don't have to call it.
266 root 1.1
267 root 1.9 The function itself is quite fast and it's usually not a problem to call
268 root 1.1 it just in case after a fork. To make this easy, the function will fit in
269     quite nicely into a call to C<pthread_atfork>:
270    
271     pthread_atfork (0, 0, ev_default_fork);
272    
273 root 1.31 At the moment, C<EVBACKEND_SELECT> and C<EVBACKEND_POLL> are safe to use
274     without calling this function, so if you force one of those backends you
275     do not need to care.
276    
277 root 1.1 =item ev_loop_fork (loop)
278    
279     Like C<ev_default_fork>, but acts on an event loop created by
280     C<ev_loop_new>. Yes, you have to call this on every allocated event loop
281     after fork, and how you do this is entirely your own problem.
282    
283 root 1.31 =item unsigned int ev_backend (loop)
284 root 1.1
285 root 1.31 Returns one of the C<EVBACKEND_*> flags indicating the event backend in
286 root 1.1 use.
287    
288 root 1.9 =item ev_tstamp ev_now (loop)
289 root 1.1
290     Returns the current "event loop time", which is the time the event loop
291     got events and started processing them. This timestamp does not change
292     as long as callbacks are being processed, and this is also the base time
293     used for relative timers. You can treat it as the timestamp of the event
294     occuring (or more correctly, the mainloop finding out about it).
295    
296     =item ev_loop (loop, int flags)
297    
298     Finally, this is it, the event handler. This function usually is called
299     after you initialised all your watchers and you want to start handling
300     events.
301    
302     If the flags argument is specified as 0, it will not return until either
303     no event watchers are active anymore or C<ev_unloop> was called.
304    
305     A flags value of C<EVLOOP_NONBLOCK> will look for new events, will handle
306     those events and any outstanding ones, but will not block your process in
307 root 1.9 case there are no events and will return after one iteration of the loop.
308 root 1.1
309     A flags value of C<EVLOOP_ONESHOT> will look for new events (waiting if
310     neccessary) and will handle those and any outstanding ones. It will block
311 root 1.9 your process until at least one new event arrives, and will return after
312     one iteration of the loop.
313 root 1.1
314     This flags value could be used to implement alternative looping
315     constructs, but the C<prepare> and C<check> watchers provide a better and
316     more generic mechanism.
317    
318 root 1.27 Here are the gory details of what ev_loop does:
319    
320     1. If there are no active watchers (reference count is zero), return.
321     2. Queue and immediately call all prepare watchers.
322     3. If we have been forked, recreate the kernel state.
323     4. Update the kernel state with all outstanding changes.
324     5. Update the "event loop time".
325     6. Calculate for how long to block.
326     7. Block the process, waiting for events.
327     8. Update the "event loop time" and do time jump handling.
328     9. Queue all outstanding timers.
329     10. Queue all outstanding periodics.
330     11. If no events are pending now, queue all idle watchers.
331     12. Queue all check watchers.
332     13. Call all queued watchers in reverse order (i.e. check watchers first).
333     14. If ev_unloop has been called or EVLOOP_ONESHOT or EVLOOP_NONBLOCK
334     was used, return, otherwise continue with step #1.
335    
336 root 1.1 =item ev_unloop (loop, how)
337    
338 root 1.9 Can be used to make a call to C<ev_loop> return early (but only after it
339     has processed all outstanding events). The C<how> argument must be either
340 root 1.25 C<EVUNLOOP_ONE>, which will make the innermost C<ev_loop> call return, or
341 root 1.9 C<EVUNLOOP_ALL>, which will make all nested C<ev_loop> calls return.
342 root 1.1
343     =item ev_ref (loop)
344    
345     =item ev_unref (loop)
346    
347 root 1.9 Ref/unref can be used to add or remove a reference count on the event
348     loop: Every watcher keeps one reference, and as long as the reference
349     count is nonzero, C<ev_loop> will not return on its own. If you have
350     a watcher you never unregister that should not keep C<ev_loop> from
351     returning, ev_unref() after starting, and ev_ref() before stopping it. For
352     example, libev itself uses this for its internal signal pipe: It is not
353     visible to the libev user and should not keep C<ev_loop> from exiting if
354     no event watchers registered by it are active. It is also an excellent
355     way to do this for generic recurring timers or from within third-party
356     libraries. Just remember to I<unref after start> and I<ref before stop>.
357 root 1.1
358     =back
359    
360     =head1 ANATOMY OF A WATCHER
361    
362     A watcher is a structure that you create and register to record your
363     interest in some event. For instance, if you want to wait for STDIN to
364 root 1.10 become readable, you would create an C<ev_io> watcher for that:
365 root 1.1
366     static void my_cb (struct ev_loop *loop, struct ev_io *w, int revents)
367     {
368     ev_io_stop (w);
369     ev_unloop (loop, EVUNLOOP_ALL);
370     }
371    
372     struct ev_loop *loop = ev_default_loop (0);
373     struct ev_io stdin_watcher;
374     ev_init (&stdin_watcher, my_cb);
375     ev_io_set (&stdin_watcher, STDIN_FILENO, EV_READ);
376     ev_io_start (loop, &stdin_watcher);
377     ev_loop (loop, 0);
378    
379     As you can see, you are responsible for allocating the memory for your
380     watcher structures (and it is usually a bad idea to do this on the stack,
381     although this can sometimes be quite valid).
382    
383     Each watcher structure must be initialised by a call to C<ev_init
384     (watcher *, callback)>, which expects a callback to be provided. This
385     callback gets invoked each time the event occurs (or, in the case of io
386     watchers, each time the event loop detects that the file descriptor given
387     is readable and/or writable).
388    
389     Each watcher type has its own C<< ev_<type>_set (watcher *, ...) >> macro
390     with arguments specific to this watcher type. There is also a macro
391     to combine initialisation and setting in one call: C<< ev_<type>_init
392     (watcher *, callback, ...) >>.
393    
394     To make the watcher actually watch out for events, you have to start it
395     with a watcher-specific start function (C<< ev_<type>_start (loop, watcher
396     *) >>), and you can stop watching for events at any time by calling the
397     corresponding stop function (C<< ev_<type>_stop (loop, watcher *) >>.
398    
399     As long as your watcher is active (has been started but not stopped) you
400     must not touch the values stored in it. Most specifically you must never
401 root 1.31 reinitialise it or call its set macro.
402 root 1.1
403 root 1.14 You can check whether an event is active by calling the C<ev_is_active
404 root 1.4 (watcher *)> macro. To see whether an event is outstanding (but the
405 root 1.14 callback for it has not been called yet) you can use the C<ev_is_pending
406 root 1.1 (watcher *)> macro.
407    
408     Each and every callback receives the event loop pointer as first, the
409     registered watcher structure as second, and a bitset of received events as
410     third argument.
411    
412 root 1.14 The received events usually include a single bit per event type received
413 root 1.1 (you can receive multiple events at the same time). The possible bit masks
414     are:
415    
416     =over 4
417    
418 root 1.10 =item C<EV_READ>
419 root 1.1
420 root 1.10 =item C<EV_WRITE>
421 root 1.1
422 root 1.10 The file descriptor in the C<ev_io> watcher has become readable and/or
423 root 1.1 writable.
424    
425 root 1.10 =item C<EV_TIMEOUT>
426 root 1.1
427 root 1.10 The C<ev_timer> watcher has timed out.
428 root 1.1
429 root 1.10 =item C<EV_PERIODIC>
430 root 1.1
431 root 1.10 The C<ev_periodic> watcher has timed out.
432 root 1.1
433 root 1.10 =item C<EV_SIGNAL>
434 root 1.1
435 root 1.10 The signal specified in the C<ev_signal> watcher has been received by a thread.
436 root 1.1
437 root 1.10 =item C<EV_CHILD>
438 root 1.1
439 root 1.10 The pid specified in the C<ev_child> watcher has received a status change.
440 root 1.1
441 root 1.10 =item C<EV_IDLE>
442 root 1.1
443 root 1.10 The C<ev_idle> watcher has determined that you have nothing better to do.
444 root 1.1
445 root 1.10 =item C<EV_PREPARE>
446 root 1.1
447 root 1.10 =item C<EV_CHECK>
448 root 1.1
449 root 1.10 All C<ev_prepare> watchers are invoked just I<before> C<ev_loop> starts
450     to gather new events, and all C<ev_check> watchers are invoked just after
451 root 1.1 C<ev_loop> has gathered them, but before it invokes any callbacks for any
452     received events. Callbacks of both watcher types can start and stop as
453     many watchers as they want, and all of them will be taken into account
454 root 1.10 (for example, a C<ev_prepare> watcher might start an idle watcher to keep
455 root 1.1 C<ev_loop> from blocking).
456    
457 root 1.10 =item C<EV_ERROR>
458 root 1.1
459     An unspecified error has occured, the watcher has been stopped. This might
460     happen because the watcher could not be properly started because libev
461     ran out of memory, a file descriptor was found to be closed or any other
462     problem. You best act on it by reporting the problem and somehow coping
463     with the watcher being stopped.
464    
465     Libev will usually signal a few "dummy" events together with an error,
466     for example it might indicate that a fd is readable or writable, and if
467     your callbacks is well-written it can just attempt the operation and cope
468     with the error from read() or write(). This will not work in multithreaded
469     programs, though, so beware.
470    
471     =back
472    
473     =head2 ASSOCIATING CUSTOM DATA WITH A WATCHER
474    
475     Each watcher has, by default, a member C<void *data> that you can change
476 root 1.14 and read at any time, libev will completely ignore it. This can be used
477 root 1.1 to associate arbitrary data with your watcher. If you need more data and
478     don't want to allocate memory and store a pointer to it in that data
479     member, you can also "subclass" the watcher type and provide your own
480     data:
481    
482     struct my_io
483     {
484     struct ev_io io;
485     int otherfd;
486     void *somedata;
487     struct whatever *mostinteresting;
488     }
489    
490     And since your callback will be called with a pointer to the watcher, you
491     can cast it back to your own type:
492    
493     static void my_cb (struct ev_loop *loop, struct ev_io *w_, int revents)
494     {
495     struct my_io *w = (struct my_io *)w_;
496     ...
497     }
498    
499     More interesting and less C-conformant ways of catsing your callback type
500     have been omitted....
501    
502    
503     =head1 WATCHER TYPES
504    
505     This section describes each watcher in detail, but will not repeat
506     information given in the last section.
507    
508 root 1.11 =head2 C<ev_io> - is this file descriptor readable or writable
509 root 1.1
510 root 1.4 I/O watchers check whether a file descriptor is readable or writable
511 root 1.1 in each iteration of the event loop (This behaviour is called
512     level-triggering because you keep receiving events as long as the
513 root 1.14 condition persists. Remember you can stop the watcher if you don't want to
514 root 1.1 act on the event and neither want to receive future events).
515    
516 root 1.23 In general you can register as many read and/or write event watchers per
517 root 1.8 fd as you want (as long as you don't confuse yourself). Setting all file
518     descriptors to non-blocking mode is also usually a good idea (but not
519     required if you know what you are doing).
520    
521     You have to be careful with dup'ed file descriptors, though. Some backends
522     (the linux epoll backend is a notable example) cannot handle dup'ed file
523     descriptors correctly if you register interest in two or more fds pointing
524 root 1.24 to the same underlying file/socket etc. description (that is, they share
525     the same underlying "file open").
526 root 1.8
527     If you must do this, then force the use of a known-to-be-good backend
528 root 1.31 (at the time of this writing, this includes only C<EVBACKEND_SELECT> and
529     C<EVBACKEND_POLL>).
530 root 1.8
531 root 1.1 =over 4
532    
533     =item ev_io_init (ev_io *, callback, int fd, int events)
534    
535     =item ev_io_set (ev_io *, int fd, int events)
536    
537 root 1.10 Configures an C<ev_io> watcher. The fd is the file descriptor to rceeive
538 root 1.1 events for and events is either C<EV_READ>, C<EV_WRITE> or C<EV_READ |
539     EV_WRITE> to receive the given events.
540    
541 root 1.32 Please note that most of the more scalable backend mechanisms (for example
542     epoll and solaris ports) can result in spurious readyness notifications
543     for file descriptors, so you practically need to use non-blocking I/O (and
544     treat callback invocation as hint only), or retest separately with a safe
545     interface before doing I/O (XLib can do this), or force the use of either
546     C<EVBACKEND_SELECT> or C<EVBACKEND_POLL>, which don't suffer from this
547     problem. Also note that it is quite easy to have your callback invoked
548     when the readyness condition is no longer valid even when employing
549     typical ways of handling events, so its a good idea to use non-blocking
550     I/O unconditionally.
551    
552 root 1.1 =back
553    
554 root 1.10 =head2 C<ev_timer> - relative and optionally recurring timeouts
555 root 1.1
556     Timer watchers are simple relative timers that generate an event after a
557     given time, and optionally repeating in regular intervals after that.
558    
559     The timers are based on real time, that is, if you register an event that
560 root 1.22 times out after an hour and you reset your system clock to last years
561 root 1.1 time, it will still time out after (roughly) and hour. "Roughly" because
562 root 1.28 detecting time jumps is hard, and some inaccuracies are unavoidable (the
563 root 1.1 monotonic clock option helps a lot here).
564    
565 root 1.9 The relative timeouts are calculated relative to the C<ev_now ()>
566     time. This is usually the right thing as this timestamp refers to the time
567 root 1.28 of the event triggering whatever timeout you are modifying/starting. If
568     you suspect event processing to be delayed and you I<need> to base the timeout
569 root 1.22 on the current time, use something like this to adjust for this:
570 root 1.9
571     ev_timer_set (&timer, after + ev_now () - ev_time (), 0.);
572    
573 root 1.28 The callback is guarenteed to be invoked only when its timeout has passed,
574     but if multiple timers become ready during the same loop iteration then
575     order of execution is undefined.
576    
577 root 1.1 =over 4
578    
579     =item ev_timer_init (ev_timer *, callback, ev_tstamp after, ev_tstamp repeat)
580    
581     =item ev_timer_set (ev_timer *, ev_tstamp after, ev_tstamp repeat)
582    
583     Configure the timer to trigger after C<after> seconds. If C<repeat> is
584     C<0.>, then it will automatically be stopped. If it is positive, then the
585     timer will automatically be configured to trigger again C<repeat> seconds
586     later, again, and again, until stopped manually.
587    
588     The timer itself will do a best-effort at avoiding drift, that is, if you
589     configure a timer to trigger every 10 seconds, then it will trigger at
590     exactly 10 second intervals. If, however, your program cannot keep up with
591 root 1.22 the timer (because it takes longer than those 10 seconds to do stuff) the
592 root 1.1 timer will not fire more than once per event loop iteration.
593    
594     =item ev_timer_again (loop)
595    
596     This will act as if the timer timed out and restart it again if it is
597     repeating. The exact semantics are:
598    
599     If the timer is started but nonrepeating, stop it.
600    
601     If the timer is repeating, either start it if necessary (with the repeat
602     value), or reset the running timer to the repeat value.
603    
604     This sounds a bit complicated, but here is a useful and typical
605     example: Imagine you have a tcp connection and you want a so-called idle
606     timeout, that is, you want to be called when there have been, say, 60
607     seconds of inactivity on the socket. The easiest way to do this is to
608 root 1.10 configure an C<ev_timer> with after=repeat=60 and calling ev_timer_again each
609 root 1.1 time you successfully read or write some data. If you go into an idle
610     state where you do not expect data to travel on the socket, you can stop
611     the timer, and again will automatically restart it if need be.
612    
613     =back
614    
615 root 1.14 =head2 C<ev_periodic> - to cron or not to cron
616 root 1.1
617     Periodic watchers are also timers of a kind, but they are very versatile
618     (and unfortunately a bit complex).
619    
620 root 1.10 Unlike C<ev_timer>'s, they are not based on real time (or relative time)
621 root 1.1 but on wallclock time (absolute time). You can tell a periodic watcher
622     to trigger "at" some specific point in time. For example, if you tell a
623     periodic watcher to trigger in 10 seconds (by specifiying e.g. c<ev_now ()
624     + 10.>) and then reset your system clock to the last year, then it will
625 root 1.10 take a year to trigger the event (unlike an C<ev_timer>, which would trigger
626 root 1.1 roughly 10 seconds later and of course not if you reset your system time
627     again).
628    
629     They can also be used to implement vastly more complex timers, such as
630     triggering an event on eahc midnight, local time.
631    
632 root 1.28 As with timers, the callback is guarenteed to be invoked only when the
633     time (C<at>) has been passed, but if multiple periodic timers become ready
634     during the same loop iteration then order of execution is undefined.
635    
636 root 1.1 =over 4
637    
638     =item ev_periodic_init (ev_periodic *, callback, ev_tstamp at, ev_tstamp interval, reschedule_cb)
639    
640     =item ev_periodic_set (ev_periodic *, ev_tstamp after, ev_tstamp repeat, reschedule_cb)
641    
642     Lots of arguments, lets sort it out... There are basically three modes of
643     operation, and we will explain them from simplest to complex:
644    
645     =over 4
646    
647     =item * absolute timer (interval = reschedule_cb = 0)
648    
649     In this configuration the watcher triggers an event at the wallclock time
650     C<at> and doesn't repeat. It will not adjust when a time jump occurs,
651     that is, if it is to be run at January 1st 2011 then it will run when the
652     system time reaches or surpasses this time.
653    
654     =item * non-repeating interval timer (interval > 0, reschedule_cb = 0)
655    
656     In this mode the watcher will always be scheduled to time out at the next
657     C<at + N * interval> time (for some integer N) and then repeat, regardless
658     of any time jumps.
659    
660     This can be used to create timers that do not drift with respect to system
661     time:
662    
663     ev_periodic_set (&periodic, 0., 3600., 0);
664    
665     This doesn't mean there will always be 3600 seconds in between triggers,
666     but only that the the callback will be called when the system time shows a
667 root 1.12 full hour (UTC), or more correctly, when the system time is evenly divisible
668 root 1.1 by 3600.
669    
670     Another way to think about it (for the mathematically inclined) is that
671 root 1.10 C<ev_periodic> will try to run the callback in this mode at the next possible
672 root 1.1 time where C<time = at (mod interval)>, regardless of any time jumps.
673    
674     =item * manual reschedule mode (reschedule_cb = callback)
675    
676     In this mode the values for C<interval> and C<at> are both being
677     ignored. Instead, each time the periodic watcher gets scheduled, the
678     reschedule callback will be called with the watcher as first, and the
679     current time as second argument.
680    
681 root 1.18 NOTE: I<This callback MUST NOT stop or destroy any periodic watcher,
682     ever, or make any event loop modifications>. If you need to stop it,
683     return C<now + 1e30> (or so, fudge fudge) and stop it afterwards (e.g. by
684     starting a prepare watcher).
685 root 1.1
686 root 1.13 Its prototype is C<ev_tstamp (*reschedule_cb)(struct ev_periodic *w,
687 root 1.1 ev_tstamp now)>, e.g.:
688    
689     static ev_tstamp my_rescheduler (struct ev_periodic *w, ev_tstamp now)
690     {
691     return now + 60.;
692     }
693    
694     It must return the next time to trigger, based on the passed time value
695     (that is, the lowest time value larger than to the second argument). It
696     will usually be called just before the callback will be triggered, but
697     might be called at other times, too.
698    
699 root 1.18 NOTE: I<< This callback must always return a time that is later than the
700 root 1.19 passed C<now> value >>. Not even C<now> itself will do, it I<must> be larger.
701 root 1.18
702 root 1.1 This can be used to create very complex timers, such as a timer that
703     triggers on each midnight, local time. To do this, you would calculate the
704 root 1.19 next midnight after C<now> and return the timestamp value for this. How
705     you do this is, again, up to you (but it is not trivial, which is the main
706     reason I omitted it as an example).
707 root 1.1
708     =back
709    
710     =item ev_periodic_again (loop, ev_periodic *)
711    
712     Simply stops and restarts the periodic watcher again. This is only useful
713     when you changed some parameters or the reschedule callback would return
714     a different time than the last time it was called (e.g. in a crond like
715     program when the crontabs have changed).
716    
717     =back
718    
719 root 1.10 =head2 C<ev_signal> - signal me when a signal gets signalled
720 root 1.1
721     Signal watchers will trigger an event when the process receives a specific
722     signal one or more times. Even though signals are very asynchronous, libev
723 root 1.9 will try it's best to deliver signals synchronously, i.e. as part of the
724 root 1.1 normal event processing, like any other event.
725    
726 root 1.14 You can configure as many watchers as you like per signal. Only when the
727 root 1.1 first watcher gets started will libev actually register a signal watcher
728     with the kernel (thus it coexists with your own signal handlers as long
729     as you don't register any with libev). Similarly, when the last signal
730     watcher for a signal is stopped libev will reset the signal handler to
731     SIG_DFL (regardless of what it was set to before).
732    
733     =over 4
734    
735     =item ev_signal_init (ev_signal *, callback, int signum)
736    
737     =item ev_signal_set (ev_signal *, int signum)
738    
739     Configures the watcher to trigger on the given signal number (usually one
740     of the C<SIGxxx> constants).
741    
742     =back
743    
744 root 1.10 =head2 C<ev_child> - wait for pid status changes
745 root 1.1
746     Child watchers trigger when your process receives a SIGCHLD in response to
747     some child status changes (most typically when a child of yours dies).
748    
749     =over 4
750    
751     =item ev_child_init (ev_child *, callback, int pid)
752    
753     =item ev_child_set (ev_child *, int pid)
754    
755     Configures the watcher to wait for status changes of process C<pid> (or
756     I<any> process if C<pid> is specified as C<0>). The callback can look
757     at the C<rstatus> member of the C<ev_child> watcher structure to see
758 root 1.14 the status word (use the macros from C<sys/wait.h> and see your systems
759     C<waitpid> documentation). The C<rpid> member contains the pid of the
760     process causing the status change.
761 root 1.1
762     =back
763    
764 root 1.10 =head2 C<ev_idle> - when you've got nothing better to do
765 root 1.1
766 root 1.14 Idle watchers trigger events when there are no other events are pending
767     (prepare, check and other idle watchers do not count). That is, as long
768     as your process is busy handling sockets or timeouts (or even signals,
769     imagine) it will not be triggered. But when your process is idle all idle
770     watchers are being called again and again, once per event loop iteration -
771     until stopped, that is, or your process receives more events and becomes
772     busy.
773 root 1.1
774     The most noteworthy effect is that as long as any idle watchers are
775     active, the process will not block when waiting for new events.
776    
777     Apart from keeping your process non-blocking (which is a useful
778     effect on its own sometimes), idle watchers are a good place to do
779     "pseudo-background processing", or delay processing stuff to after the
780     event loop has handled all outstanding events.
781    
782     =over 4
783    
784     =item ev_idle_init (ev_signal *, callback)
785    
786     Initialises and configures the idle watcher - it has no parameters of any
787     kind. There is a C<ev_idle_set> macro, but using it is utterly pointless,
788     believe me.
789    
790     =back
791    
792 root 1.16 =head2 C<ev_prepare> and C<ev_check> - customise your event loop
793 root 1.1
794 root 1.14 Prepare and check watchers are usually (but not always) used in tandem:
795 root 1.20 prepare watchers get invoked before the process blocks and check watchers
796 root 1.14 afterwards.
797 root 1.1
798     Their main purpose is to integrate other event mechanisms into libev. This
799     could be used, for example, to track variable changes, implement your own
800     watchers, integrate net-snmp or a coroutine library and lots more.
801    
802     This is done by examining in each prepare call which file descriptors need
803 root 1.14 to be watched by the other library, registering C<ev_io> watchers for
804     them and starting an C<ev_timer> watcher for any timeouts (many libraries
805     provide just this functionality). Then, in the check watcher you check for
806     any events that occured (by checking the pending status of all watchers
807     and stopping them) and call back into the library. The I/O and timer
808 root 1.20 callbacks will never actually be called (but must be valid nevertheless,
809 root 1.14 because you never know, you know?).
810 root 1.1
811 root 1.14 As another example, the Perl Coro module uses these hooks to integrate
812 root 1.1 coroutines into libev programs, by yielding to other active coroutines
813     during each prepare and only letting the process block if no coroutines
814 root 1.20 are ready to run (it's actually more complicated: it only runs coroutines
815     with priority higher than or equal to the event loop and one coroutine
816     of lower priority, but only once, using idle watchers to keep the event
817     loop from blocking if lower-priority coroutines are active, thus mapping
818     low-priority coroutines to idle/background tasks).
819 root 1.1
820     =over 4
821    
822     =item ev_prepare_init (ev_prepare *, callback)
823    
824     =item ev_check_init (ev_check *, callback)
825    
826     Initialises and configures the prepare or check watcher - they have no
827     parameters of any kind. There are C<ev_prepare_set> and C<ev_check_set>
828 root 1.14 macros, but using them is utterly, utterly and completely pointless.
829 root 1.1
830     =back
831    
832     =head1 OTHER FUNCTIONS
833    
834 root 1.14 There are some other functions of possible interest. Described. Here. Now.
835 root 1.1
836     =over 4
837    
838     =item ev_once (loop, int fd, int events, ev_tstamp timeout, callback)
839    
840     This function combines a simple timer and an I/O watcher, calls your
841     callback on whichever event happens first and automatically stop both
842     watchers. This is useful if you want to wait for a single event on an fd
843 root 1.22 or timeout without having to allocate/configure/start/stop/free one or
844 root 1.1 more watchers yourself.
845    
846 root 1.14 If C<fd> is less than 0, then no I/O watcher will be started and events
847     is being ignored. Otherwise, an C<ev_io> watcher for the given C<fd> and
848     C<events> set will be craeted and started.
849 root 1.1
850     If C<timeout> is less than 0, then no timeout watcher will be
851 root 1.14 started. Otherwise an C<ev_timer> watcher with after = C<timeout> (and
852     repeat = 0) will be started. While C<0> is a valid timeout, it is of
853     dubious value.
854    
855     The callback has the type C<void (*cb)(int revents, void *arg)> and gets
856 root 1.21 passed an C<revents> set like normal event callbacks (a combination of
857 root 1.14 C<EV_ERROR>, C<EV_READ>, C<EV_WRITE> or C<EV_TIMEOUT>) and the C<arg>
858     value passed to C<ev_once>:
859 root 1.1
860     static void stdin_ready (int revents, void *arg)
861     {
862     if (revents & EV_TIMEOUT)
863 root 1.14 /* doh, nothing entered */;
864 root 1.1 else if (revents & EV_READ)
865 root 1.14 /* stdin might have data for us, joy! */;
866 root 1.1 }
867    
868 root 1.14 ev_once (STDIN_FILENO, EV_READ, 10., stdin_ready, 0);
869 root 1.1
870     =item ev_feed_event (loop, watcher, int events)
871    
872     Feeds the given event set into the event loop, as if the specified event
873 root 1.14 had happened for the specified watcher (which must be a pointer to an
874     initialised but not necessarily started event watcher).
875 root 1.1
876     =item ev_feed_fd_event (loop, int fd, int revents)
877    
878 root 1.14 Feed an event on the given fd, as if a file descriptor backend detected
879     the given events it.
880 root 1.1
881     =item ev_feed_signal_event (loop, int signum)
882    
883     Feed an event as if the given signal occured (loop must be the default loop!).
884    
885     =back
886    
887 root 1.20 =head1 LIBEVENT EMULATION
888    
889 root 1.24 Libev offers a compatibility emulation layer for libevent. It cannot
890     emulate the internals of libevent, so here are some usage hints:
891    
892     =over 4
893    
894     =item * Use it by including <event.h>, as usual.
895    
896     =item * The following members are fully supported: ev_base, ev_callback,
897     ev_arg, ev_fd, ev_res, ev_events.
898    
899     =item * Avoid using ev_flags and the EVLIST_*-macros, while it is
900     maintained by libev, it does not work exactly the same way as in libevent (consider
901     it a private API).
902    
903     =item * Priorities are not currently supported. Initialising priorities
904     will fail and all watchers will have the same priority, even though there
905     is an ev_pri field.
906    
907     =item * Other members are not supported.
908    
909     =item * The libev emulation is I<not> ABI compatible to libevent, you need
910     to use the libev header file and library.
911    
912     =back
913 root 1.20
914     =head1 C++ SUPPORT
915    
916     TBD.
917    
918 root 1.1 =head1 AUTHOR
919    
920     Marc Lehmann <libev@schmorp.de>.
921