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