ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.html
Revision: 1.35
Committed: Fri Nov 23 16:17:12 2007 UTC (16 years, 5 months ago) by root
Content type: text/html
Branch: MAIN
Changes since 1.34: +224 -6 lines
Log Message:
add lots of theoretical examples

File Contents

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