ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.pod
(Generate patch)

Comparing libev/ev.pod (file contents):
Revision 1.30 by root, Fri Nov 23 04:36:03 2007 UTC vs.
Revision 1.51 by root, Tue Nov 27 19:23:31 2007 UTC

45 45
46Libev represents time as a single floating point number, representing the 46Libev represents time as a single floating point number, representing the
47(fractional) number of seconds since the (POSIX) epoch (somewhere near 47(fractional) number of seconds since the (POSIX) epoch (somewhere near
48the beginning of 1970, details are complicated, don't ask). This type is 48the beginning of 1970, details are complicated, don't ask). This type is
49called C<ev_tstamp>, which is what you should use too. It usually aliases 49called C<ev_tstamp>, which is what you should use too. It usually aliases
50to the double type in C. 50to the C<double> type in C, and when you need to do any calculations on
51it, you should treat it as such.
51 52
52=head1 GLOBAL FUNCTIONS 53=head1 GLOBAL FUNCTIONS
53 54
54These functions can be called anytime, even before initialising the 55These functions can be called anytime, even before initialising the
55library in any way. 56library in any way.
75Usually, it's a good idea to terminate if the major versions mismatch, 76Usually, it's a good idea to terminate if the major versions mismatch,
76as this indicates an incompatible change. Minor versions are usually 77as this indicates an incompatible change. Minor versions are usually
77compatible to older versions, so a larger minor version alone is usually 78compatible to older versions, so a larger minor version alone is usually
78not a problem. 79not a problem.
79 80
81Example: make sure we haven't accidentally been linked against the wrong
82version:
83
84 assert (("libev version mismatch",
85 ev_version_major () == EV_VERSION_MAJOR
86 && ev_version_minor () >= EV_VERSION_MINOR));
87
88=item unsigned int ev_supported_backends ()
89
90Return the set of all backends (i.e. their corresponding C<EV_BACKEND_*>
91value) compiled into this binary of libev (independent of their
92availability on the system you are running on). See C<ev_default_loop> for
93a description of the set values.
94
95Example: make sure we have the epoll method, because yeah this is cool and
96a must have and can we have a torrent of it please!!!11
97
98 assert (("sorry, no epoll, no sex",
99 ev_supported_backends () & EVBACKEND_EPOLL));
100
101=item unsigned int ev_recommended_backends ()
102
103Return the set of all backends compiled into this binary of libev and also
104recommended for this platform. This set is often smaller than the one
105returned by C<ev_supported_backends>, as for example kqueue is broken on
106most BSDs and will not be autodetected unless you explicitly request it
107(assuming you know what you are doing). This is the set of backends that
108libev will probe for if you specify no backends explicitly.
109
110=item unsigned int ev_embeddable_backends ()
111
112Returns the set of backends that are embeddable in other event loops. This
113is the theoretical, all-platform, value. To find which backends
114might be supported on the current system, you would need to look at
115C<ev_embeddable_backends () & ev_supported_backends ()>, likewise for
116recommended ones.
117
118See the description of C<ev_embed> watchers for more info.
119
80=item ev_set_allocator (void *(*cb)(void *ptr, long size)) 120=item ev_set_allocator (void *(*cb)(void *ptr, long size))
81 121
82Sets the allocation function to use (the prototype is similar to the 122Sets the allocation function to use (the prototype is similar to the
83realloc C function, the semantics are identical). It is used to allocate 123realloc C function, the semantics are identical). It is used to allocate
84and free memory (no surprises here). If it returns zero when memory 124and free memory (no surprises here). If it returns zero when memory
86destructive action. The default is your system realloc function. 126destructive action. The default is your system realloc function.
87 127
88You could override this function in high-availability programs to, say, 128You could override this function in high-availability programs to, say,
89free some memory if it cannot allocate memory, to use a special allocator, 129free some memory if it cannot allocate memory, to use a special allocator,
90or even to sleep a while and retry until some memory is available. 130or even to sleep a while and retry until some memory is available.
131
132Example: replace the libev allocator with one that waits a bit and then
133retries: better than mine).
134
135 static void *
136 persistent_realloc (void *ptr, long size)
137 {
138 for (;;)
139 {
140 void *newptr = realloc (ptr, size);
141
142 if (newptr)
143 return newptr;
144
145 sleep (60);
146 }
147 }
148
149 ...
150 ev_set_allocator (persistent_realloc);
91 151
92=item ev_set_syserr_cb (void (*cb)(const char *msg)); 152=item ev_set_syserr_cb (void (*cb)(const char *msg));
93 153
94Set the callback function to call on a retryable syscall error (such 154Set the callback function to call on a retryable syscall error (such
95as failed select, poll, epoll_wait). The message is a printable string 155as failed select, poll, epoll_wait). The message is a printable string
97callback is set, then libev will expect it to remedy the sitution, no 157callback is set, then libev will expect it to remedy the sitution, no
98matter what, when it returns. That is, libev will generally retry the 158matter what, when it returns. That is, libev will generally retry the
99requested operation, or, if the condition doesn't go away, do bad stuff 159requested operation, or, if the condition doesn't go away, do bad stuff
100(such as abort). 160(such as abort).
101 161
162Example: do the same thing as libev does internally:
163
164 static void
165 fatal_error (const char *msg)
166 {
167 perror (msg);
168 abort ();
169 }
170
171 ...
172 ev_set_syserr_cb (fatal_error);
173
102=back 174=back
103 175
104=head1 FUNCTIONS CONTROLLING THE EVENT LOOP 176=head1 FUNCTIONS CONTROLLING THE EVENT LOOP
105 177
106An event loop is described by a C<struct ev_loop *>. The library knows two 178An event loop is described by a C<struct ev_loop *>. The library knows two
119=item struct ev_loop *ev_default_loop (unsigned int flags) 191=item struct ev_loop *ev_default_loop (unsigned int flags)
120 192
121This will initialise the default event loop if it hasn't been initialised 193This will initialise the default event loop if it hasn't been initialised
122yet and return it. If the default loop could not be initialised, returns 194yet and return it. If the default loop could not be initialised, returns
123false. If it already was initialised it simply returns it (and ignores the 195false. If it already was initialised it simply returns it (and ignores the
124flags). 196flags. If that is troubling you, check C<ev_backend ()> afterwards).
125 197
126If you don't know what event loop to use, use the one returned from this 198If you don't know what event loop to use, use the one returned from this
127function. 199function.
128 200
129The flags argument can be used to specify special behaviour or specific 201The flags argument can be used to specify special behaviour or specific
130backends to use, and is usually specified as 0 (or EVFLAG_AUTO). 202backends to use, and is usually specified as C<0> (or C<EVFLAG_AUTO>).
131 203
132It supports the following flags: 204The following flags are supported:
133 205
134=over 4 206=over 4
135 207
136=item C<EVFLAG_AUTO> 208=item C<EVFLAG_AUTO>
137 209
145C<LIBEV_FLAGS>. Otherwise (the default), this environment variable will 217C<LIBEV_FLAGS>. Otherwise (the default), this environment variable will
146override the flags completely if it is found in the environment. This is 218override the flags completely if it is found in the environment. This is
147useful to try out specific backends to test their performance, or to work 219useful to try out specific backends to test their performance, or to work
148around bugs. 220around bugs.
149 221
150=item C<EVMETHOD_SELECT> (value 1, portable select backend) 222=item C<EVBACKEND_SELECT> (value 1, portable select backend)
151 223
152This is your standard select(2) backend. Not I<completely> standard, as 224This is your standard select(2) backend. Not I<completely> standard, as
153libev tries to roll its own fd_set with no limits on the number of fds, 225libev tries to roll its own fd_set with no limits on the number of fds,
154but if that fails, expect a fairly low limit on the number of fds when 226but if that fails, expect a fairly low limit on the number of fds when
155using this backend. It doesn't scale too well (O(highest_fd)), but its usually 227using this backend. It doesn't scale too well (O(highest_fd)), but its usually
156the fastest backend for a low number of fds. 228the fastest backend for a low number of fds.
157 229
158=item C<EVMETHOD_POLL> (value 2, poll backend, available everywhere except on windows) 230=item C<EVBACKEND_POLL> (value 2, poll backend, available everywhere except on windows)
159 231
160And this is your standard poll(2) backend. It's more complicated than 232And this is your standard poll(2) backend. It's more complicated than
161select, but handles sparse fds better and has no artificial limit on the 233select, but handles sparse fds better and has no artificial limit on the
162number of fds you can use (except it will slow down considerably with a 234number of fds you can use (except it will slow down considerably with a
163lot of inactive fds). It scales similarly to select, i.e. O(total_fds). 235lot of inactive fds). It scales similarly to select, i.e. O(total_fds).
164 236
165=item C<EVMETHOD_EPOLL> (value 4, Linux) 237=item C<EVBACKEND_EPOLL> (value 4, Linux)
166 238
167For few fds, this backend is a bit little slower than poll and select, 239For few fds, this backend is a bit little slower than poll and select,
168but it scales phenomenally better. While poll and select usually scale like 240but it scales phenomenally better. While poll and select usually scale like
169O(total_fds) where n is the total number of fds (or the highest fd), epoll scales 241O(total_fds) where n is the total number of fds (or the highest fd), epoll scales
170either O(1) or O(active_fds). 242either O(1) or O(active_fds).
173result in some caching, there is still a syscall per such incident 245result in some caching, there is still a syscall per such incident
174(because the fd could point to a different file description now), so its 246(because the fd could point to a different file description now), so its
175best to avoid that. Also, dup()ed file descriptors might not work very 247best to avoid that. Also, dup()ed file descriptors might not work very
176well if you register events for both fds. 248well if you register events for both fds.
177 249
250Please note that epoll sometimes generates spurious notifications, so you
251need to use non-blocking I/O or other means to avoid blocking when no data
252(or space) is available.
253
178=item C<EVMETHOD_KQUEUE> (value 8, most BSD clones) 254=item C<EVBACKEND_KQUEUE> (value 8, most BSD clones)
179 255
180Kqueue deserves special mention, as at the time of this writing, it 256Kqueue deserves special mention, as at the time of this writing, it
181was broken on all BSDs except NetBSD (usually it doesn't work with 257was broken on all BSDs except NetBSD (usually it doesn't work with
182anything but sockets and pipes, except on Darwin, where of course its 258anything but sockets and pipes, except on Darwin, where of course its
183completely useless). For this reason its not being "autodetected" unless 259completely useless). For this reason its not being "autodetected"
184you explicitly specify the flags (i.e. you don't use EVFLAG_AUTO). 260unless you explicitly specify it explicitly in the flags (i.e. using
261C<EVBACKEND_KQUEUE>).
185 262
186It scales in the same way as the epoll backend, but the interface to the 263It scales in the same way as the epoll backend, but the interface to the
187kernel is more efficient (which says nothing about its actual speed, of 264kernel is more efficient (which says nothing about its actual speed, of
188course). While starting and stopping an I/O watcher does not cause an 265course). While starting and stopping an I/O watcher does not cause an
189extra syscall as with epoll, it still adds up to four event changes per 266extra syscall as with epoll, it still adds up to four event changes per
190incident, so its best to avoid that. 267incident, so its best to avoid that.
191 268
192=item C<EVMETHOD_DEVPOLL> (value 16, Solaris 8) 269=item C<EVBACKEND_DEVPOLL> (value 16, Solaris 8)
193 270
194This is not implemented yet (and might never be). 271This is not implemented yet (and might never be).
195 272
196=item C<EVMETHOD_PORT> (value 32, Solaris 10) 273=item C<EVBACKEND_PORT> (value 32, Solaris 10)
197 274
198This uses the Solaris 10 port mechanism. As with everything on Solaris, 275This uses the Solaris 10 port mechanism. As with everything on Solaris,
199it's really slow, but it still scales very well (O(active_fds)). 276it's really slow, but it still scales very well (O(active_fds)).
200 277
278Please note that solaris ports can result in a lot of spurious
279notifications, so you need to use non-blocking I/O or other means to avoid
280blocking when no data (or space) is available.
281
201=item C<EVMETHOD_ALL> 282=item C<EVBACKEND_ALL>
202 283
203Try all backends (even potentially broken ones that wouldn't be tried 284Try all backends (even potentially broken ones that wouldn't be tried
204with C<EVFLAG_AUTO>). Since this is a mask, you can do stuff such as 285with C<EVFLAG_AUTO>). Since this is a mask, you can do stuff such as
205C<EVMETHOD_ALL & ~EVMETHOD_KQUEUE>. 286C<EVBACKEND_ALL & ~EVBACKEND_KQUEUE>.
206 287
207=back 288=back
208 289
209If one or more of these are ored into the flags value, then only these 290If one or more of these are ored into the flags value, then only these
210backends will be tried (in the reverse order as given here). If none are 291backends will be tried (in the reverse order as given here). If none are
211specified, most compiled-in backend will be tried, usually in reverse 292specified, most compiled-in backend will be tried, usually in reverse
212order of their flag values :) 293order of their flag values :)
213 294
295The most typical usage is like this:
296
297 if (!ev_default_loop (0))
298 fatal ("could not initialise libev, bad $LIBEV_FLAGS in environment?");
299
300Restrict libev to the select and poll backends, and do not allow
301environment settings to be taken into account:
302
303 ev_default_loop (EVBACKEND_POLL | EVBACKEND_SELECT | EVFLAG_NOENV);
304
305Use whatever libev has to offer, but make sure that kqueue is used if
306available (warning, breaks stuff, best use only with your own private
307event loop and only if you know the OS supports your types of fds):
308
309 ev_default_loop (ev_recommended_backends () | EVBACKEND_KQUEUE);
310
214=item struct ev_loop *ev_loop_new (unsigned int flags) 311=item struct ev_loop *ev_loop_new (unsigned int flags)
215 312
216Similar to C<ev_default_loop>, but always creates a new event loop that is 313Similar to C<ev_default_loop>, but always creates a new event loop that is
217always distinct from the default loop. Unlike the default loop, it cannot 314always distinct from the default loop. Unlike the default loop, it cannot
218handle signal and child watchers, and attempts to do so will be greeted by 315handle signal and child watchers, and attempts to do so will be greeted by
219undefined behaviour (or a failed assertion if assertions are enabled). 316undefined behaviour (or a failed assertion if assertions are enabled).
220 317
318Example: try to create a event loop that uses epoll and nothing else.
319
320 struct ev_loop *epoller = ev_loop_new (EVBACKEND_EPOLL | EVFLAG_NOENV);
321 if (!epoller)
322 fatal ("no epoll found here, maybe it hides under your chair");
323
221=item ev_default_destroy () 324=item ev_default_destroy ()
222 325
223Destroys the default loop again (frees all memory and kernel state 326Destroys the default loop again (frees all memory and kernel state
224etc.). This stops all registered event watchers (by not touching them in 327etc.). None of the active event watchers will be stopped in the normal
225any way whatsoever, although you cannot rely on this :). 328sense, so e.g. C<ev_is_active> might still return true. It is your
329responsibility to either stop all watchers cleanly yoursef I<before>
330calling this function, or cope with the fact afterwards (which is usually
331the easiest thing, youc na just ignore the watchers and/or C<free ()> them
332for example).
226 333
227=item ev_loop_destroy (loop) 334=item ev_loop_destroy (loop)
228 335
229Like C<ev_default_destroy>, but destroys an event loop created by an 336Like C<ev_default_destroy>, but destroys an event loop created by an
230earlier call to C<ev_loop_new>. 337earlier call to C<ev_loop_new>.
244it just in case after a fork. To make this easy, the function will fit in 351it just in case after a fork. To make this easy, the function will fit in
245quite nicely into a call to C<pthread_atfork>: 352quite nicely into a call to C<pthread_atfork>:
246 353
247 pthread_atfork (0, 0, ev_default_fork); 354 pthread_atfork (0, 0, ev_default_fork);
248 355
356At the moment, C<EVBACKEND_SELECT> and C<EVBACKEND_POLL> are safe to use
357without calling this function, so if you force one of those backends you
358do not need to care.
359
249=item ev_loop_fork (loop) 360=item ev_loop_fork (loop)
250 361
251Like C<ev_default_fork>, but acts on an event loop created by 362Like C<ev_default_fork>, but acts on an event loop created by
252C<ev_loop_new>. Yes, you have to call this on every allocated event loop 363C<ev_loop_new>. Yes, you have to call this on every allocated event loop
253after fork, and how you do this is entirely your own problem. 364after fork, and how you do this is entirely your own problem.
254 365
255=item unsigned int ev_method (loop) 366=item unsigned int ev_backend (loop)
256 367
257Returns one of the C<EVMETHOD_*> flags indicating the event backend in 368Returns one of the C<EVBACKEND_*> flags indicating the event backend in
258use. 369use.
259 370
260=item ev_tstamp ev_now (loop) 371=item ev_tstamp ev_now (loop)
261 372
262Returns the current "event loop time", which is the time the event loop 373Returns the current "event loop time", which is the time the event loop
263got events and started processing them. This timestamp does not change 374received events and started processing them. This timestamp does not
264as long as callbacks are being processed, and this is also the base time 375change as long as callbacks are being processed, and this is also the base
265used for relative timers. You can treat it as the timestamp of the event 376time used for relative timers. You can treat it as the timestamp of the
266occuring (or more correctly, the mainloop finding out about it). 377event occuring (or more correctly, libev finding out about it).
267 378
268=item ev_loop (loop, int flags) 379=item ev_loop (loop, int flags)
269 380
270Finally, this is it, the event handler. This function usually is called 381Finally, this is it, the event handler. This function usually is called
271after you initialised all your watchers and you want to start handling 382after you initialised all your watchers and you want to start handling
272events. 383events.
273 384
274If the flags argument is specified as 0, it will not return until either 385If the flags argument is specified as C<0>, it will not return until
275no event watchers are active anymore or C<ev_unloop> was called. 386either no event watchers are active anymore or C<ev_unloop> was called.
387
388Please note that an explicit C<ev_unloop> is usually better than
389relying on all watchers to be stopped when deciding when a program has
390finished (especially in interactive programs), but having a program that
391automatically loops as long as it has to and no longer by virtue of
392relying on its watchers stopping correctly is a thing of beauty.
276 393
277A flags value of C<EVLOOP_NONBLOCK> will look for new events, will handle 394A flags value of C<EVLOOP_NONBLOCK> will look for new events, will handle
278those events and any outstanding ones, but will not block your process in 395those events and any outstanding ones, but will not block your process in
279case there are no events and will return after one iteration of the loop. 396case there are no events and will return after one iteration of the loop.
280 397
281A flags value of C<EVLOOP_ONESHOT> will look for new events (waiting if 398A flags value of C<EVLOOP_ONESHOT> will look for new events (waiting if
282neccessary) and will handle those and any outstanding ones. It will block 399neccessary) and will handle those and any outstanding ones. It will block
283your process until at least one new event arrives, and will return after 400your process until at least one new event arrives, and will return after
284one iteration of the loop. 401one iteration of the loop. This is useful if you are waiting for some
402external event in conjunction with something not expressible using other
403libev watchers. However, a pair of C<ev_prepare>/C<ev_check> watchers is
404usually a better approach for this kind of thing.
285 405
286This flags value could be used to implement alternative looping
287constructs, but the C<prepare> and C<check> watchers provide a better and
288more generic mechanism.
289
290Here are the gory details of what ev_loop does: 406Here are the gory details of what C<ev_loop> does:
291 407
292 1. If there are no active watchers (reference count is zero), return. 408 * If there are no active watchers (reference count is zero), return.
293 2. Queue and immediately call all prepare watchers. 409 - Queue prepare watchers and then call all outstanding watchers.
294 3. If we have been forked, recreate the kernel state. 410 - If we have been forked, recreate the kernel state.
295 4. Update the kernel state with all outstanding changes. 411 - Update the kernel state with all outstanding changes.
296 5. Update the "event loop time". 412 - Update the "event loop time".
297 6. Calculate for how long to block. 413 - Calculate for how long to block.
298 7. Block the process, waiting for events. 414 - Block the process, waiting for any events.
415 - Queue all outstanding I/O (fd) events.
299 8. Update the "event loop time" and do time jump handling. 416 - Update the "event loop time" and do time jump handling.
300 9. Queue all outstanding timers. 417 - Queue all outstanding timers.
301 10. Queue all outstanding periodics. 418 - Queue all outstanding periodics.
302 11. If no events are pending now, queue all idle watchers. 419 - If no events are pending now, queue all idle watchers.
303 12. Queue all check watchers. 420 - Queue all check watchers.
304 13. Call all queued watchers in reverse order (i.e. check watchers first). 421 - Call all queued watchers in reverse order (i.e. check watchers first).
422 Signals and child watchers are implemented as I/O watchers, and will
423 be handled here by queueing them when their watcher gets executed.
305 14. If ev_unloop has been called or EVLOOP_ONESHOT or EVLOOP_NONBLOCK 424 - If ev_unloop has been called or EVLOOP_ONESHOT or EVLOOP_NONBLOCK
306 was used, return, otherwise continue with step #1. 425 were used, return, otherwise continue with step *.
426
427Example: queue some jobs and then loop until no events are outsanding
428anymore.
429
430 ... queue jobs here, make sure they register event watchers as long
431 ... as they still have work to do (even an idle watcher will do..)
432 ev_loop (my_loop, 0);
433 ... jobs done. yeah!
307 434
308=item ev_unloop (loop, how) 435=item ev_unloop (loop, how)
309 436
310Can be used to make a call to C<ev_loop> return early (but only after it 437Can be used to make a call to C<ev_loop> return early (but only after it
311has processed all outstanding events). The C<how> argument must be either 438has processed all outstanding events). The C<how> argument must be either
325visible to the libev user and should not keep C<ev_loop> from exiting if 452visible to the libev user and should not keep C<ev_loop> from exiting if
326no event watchers registered by it are active. It is also an excellent 453no event watchers registered by it are active. It is also an excellent
327way to do this for generic recurring timers or from within third-party 454way to do this for generic recurring timers or from within third-party
328libraries. Just remember to I<unref after start> and I<ref before stop>. 455libraries. Just remember to I<unref after start> and I<ref before stop>.
329 456
457Example: create a signal watcher, but keep it from keeping C<ev_loop>
458running when nothing else is active.
459
460 struct dv_signal exitsig;
461 ev_signal_init (&exitsig, sig_cb, SIGINT);
462 ev_signal_start (myloop, &exitsig);
463 evf_unref (myloop);
464
465Example: for some weird reason, unregister the above signal handler again.
466
467 ev_ref (myloop);
468 ev_signal_stop (myloop, &exitsig);
469
330=back 470=back
471
331 472
332=head1 ANATOMY OF A WATCHER 473=head1 ANATOMY OF A WATCHER
333 474
334A watcher is a structure that you create and register to record your 475A watcher is a structure that you create and register to record your
335interest in some event. For instance, if you want to wait for STDIN to 476interest in some event. For instance, if you want to wait for STDIN to
368*) >>), and you can stop watching for events at any time by calling the 509*) >>), and you can stop watching for events at any time by calling the
369corresponding stop function (C<< ev_<type>_stop (loop, watcher *) >>. 510corresponding stop function (C<< ev_<type>_stop (loop, watcher *) >>.
370 511
371As long as your watcher is active (has been started but not stopped) you 512As long as your watcher is active (has been started but not stopped) you
372must not touch the values stored in it. Most specifically you must never 513must not touch the values stored in it. Most specifically you must never
373reinitialise it or call its set method. 514reinitialise it or call its C<set> macro.
374
375You can check whether an event is active by calling the C<ev_is_active
376(watcher *)> macro. To see whether an event is outstanding (but the
377callback for it has not been called yet) you can use the C<ev_is_pending
378(watcher *)> macro.
379 515
380Each and every callback receives the event loop pointer as first, the 516Each and every callback receives the event loop pointer as first, the
381registered watcher structure as second, and a bitset of received events as 517registered watcher structure as second, and a bitset of received events as
382third argument. 518third argument.
383 519
407The signal specified in the C<ev_signal> watcher has been received by a thread. 543The signal specified in the C<ev_signal> watcher has been received by a thread.
408 544
409=item C<EV_CHILD> 545=item C<EV_CHILD>
410 546
411The pid specified in the C<ev_child> watcher has received a status change. 547The pid specified in the C<ev_child> watcher has received a status change.
548
549=item C<EV_STAT>
550
551The path specified in the C<ev_stat> watcher changed its attributes somehow.
412 552
413=item C<EV_IDLE> 553=item C<EV_IDLE>
414 554
415The C<ev_idle> watcher has determined that you have nothing better to do. 555The C<ev_idle> watcher has determined that you have nothing better to do.
416 556
424received events. Callbacks of both watcher types can start and stop as 564received events. Callbacks of both watcher types can start and stop as
425many watchers as they want, and all of them will be taken into account 565many watchers as they want, and all of them will be taken into account
426(for example, a C<ev_prepare> watcher might start an idle watcher to keep 566(for example, a C<ev_prepare> watcher might start an idle watcher to keep
427C<ev_loop> from blocking). 567C<ev_loop> from blocking).
428 568
569=item C<EV_EMBED>
570
571The embedded event loop specified in the C<ev_embed> watcher needs attention.
572
573=item C<EV_FORK>
574
575The event loop has been resumed in the child process after fork (see
576C<ev_fork>).
577
429=item C<EV_ERROR> 578=item C<EV_ERROR>
430 579
431An unspecified error has occured, the watcher has been stopped. This might 580An unspecified error has occured, the watcher has been stopped. This might
432happen because the watcher could not be properly started because libev 581happen because the watcher could not be properly started because libev
433ran out of memory, a file descriptor was found to be closed or any other 582ran out of memory, a file descriptor was found to be closed or any other
439your callbacks is well-written it can just attempt the operation and cope 588your callbacks is well-written it can just attempt the operation and cope
440with the error from read() or write(). This will not work in multithreaded 589with the error from read() or write(). This will not work in multithreaded
441programs, though, so beware. 590programs, though, so beware.
442 591
443=back 592=back
593
594=head2 GENERIC WATCHER FUNCTIONS
595
596In the following description, C<TYPE> stands for the watcher type,
597e.g. C<timer> for C<ev_timer> watchers and C<io> for C<ev_io> watchers.
598
599=over 4
600
601=item C<ev_init> (ev_TYPE *watcher, callback)
602
603This macro initialises the generic portion of a watcher. The contents
604of the watcher object can be arbitrary (so C<malloc> will do). Only
605the generic parts of the watcher are initialised, you I<need> to call
606the type-specific C<ev_TYPE_set> macro afterwards to initialise the
607type-specific parts. For each type there is also a C<ev_TYPE_init> macro
608which rolls both calls into one.
609
610You can reinitialise a watcher at any time as long as it has been stopped
611(or never started) and there are no pending events outstanding.
612
613The callback is always of type C<void (*)(ev_loop *loop, ev_TYPE *watcher,
614int revents)>.
615
616=item C<ev_TYPE_set> (ev_TYPE *, [args])
617
618This macro initialises the type-specific parts of a watcher. You need to
619call C<ev_init> at least once before you call this macro, but you can
620call C<ev_TYPE_set> any number of times. You must not, however, call this
621macro on a watcher that is active (it can be pending, however, which is a
622difference to the C<ev_init> macro).
623
624Although some watcher types do not have type-specific arguments
625(e.g. C<ev_prepare>) you still need to call its C<set> macro.
626
627=item C<ev_TYPE_init> (ev_TYPE *watcher, callback, [args])
628
629This convinience macro rolls both C<ev_init> and C<ev_TYPE_set> macro
630calls into a single call. This is the most convinient method to initialise
631a watcher. The same limitations apply, of course.
632
633=item C<ev_TYPE_start> (loop *, ev_TYPE *watcher)
634
635Starts (activates) the given watcher. Only active watchers will receive
636events. If the watcher is already active nothing will happen.
637
638=item C<ev_TYPE_stop> (loop *, ev_TYPE *watcher)
639
640Stops the given watcher again (if active) and clears the pending
641status. It is possible that stopped watchers are pending (for example,
642non-repeating timers are being stopped when they become pending), but
643C<ev_TYPE_stop> ensures that the watcher is neither active nor pending. If
644you want to free or reuse the memory used by the watcher it is therefore a
645good idea to always call its C<ev_TYPE_stop> function.
646
647=item bool ev_is_active (ev_TYPE *watcher)
648
649Returns a true value iff the watcher is active (i.e. it has been started
650and not yet been stopped). As long as a watcher is active you must not modify
651it.
652
653=item bool ev_is_pending (ev_TYPE *watcher)
654
655Returns a true value iff the watcher is pending, (i.e. it has outstanding
656events but its callback has not yet been invoked). As long as a watcher
657is pending (but not active) you must not call an init function on it (but
658C<ev_TYPE_set> is safe) and you must make sure the watcher is available to
659libev (e.g. you cnanot C<free ()> it).
660
661=item callback = ev_cb (ev_TYPE *watcher)
662
663Returns the callback currently set on the watcher.
664
665=item ev_cb_set (ev_TYPE *watcher, callback)
666
667Change the callback. You can change the callback at virtually any time
668(modulo threads).
669
670=back
671
444 672
445=head2 ASSOCIATING CUSTOM DATA WITH A WATCHER 673=head2 ASSOCIATING CUSTOM DATA WITH A WATCHER
446 674
447Each watcher has, by default, a member C<void *data> that you can change 675Each watcher has, by default, a member C<void *data> that you can change
448and read at any time, libev will completely ignore it. This can be used 676and read at any time, libev will completely ignore it. This can be used
473 701
474 702
475=head1 WATCHER TYPES 703=head1 WATCHER TYPES
476 704
477This section describes each watcher in detail, but will not repeat 705This section describes each watcher in detail, but will not repeat
478information given in the last section. 706information given in the last section. Any initialisation/set macros,
707functions and members specific to the watcher type are explained.
479 708
709Members are additionally marked with either I<[read-only]>, meaning that,
710while the watcher is active, you can look at the member and expect some
711sensible content, but you must not modify it (you can modify it while the
712watcher is stopped to your hearts content), or I<[read-write]>, which
713means you can expect it to have some sensible content while the watcher
714is active, but you can also modify it. Modifying it may not do something
715sensible or take immediate effect (or do anything at all), but libev will
716not crash or malfunction in any way.
717
718
480=head2 C<ev_io> - is this file descriptor readable or writable 719=head2 C<ev_io> - is this file descriptor readable or writable?
481 720
482I/O watchers check whether a file descriptor is readable or writable 721I/O watchers check whether a file descriptor is readable or writable
483in each iteration of the event loop (This behaviour is called 722in each iteration of the event loop, or, more precisely, when reading
484level-triggering because you keep receiving events as long as the 723would not block the process and writing would at least be able to write
485condition persists. Remember you can stop the watcher if you don't want to 724some data. This behaviour is called level-triggering because you keep
486act on the event and neither want to receive future events). 725receiving events as long as the condition persists. Remember you can stop
726the watcher if you don't want to act on the event and neither want to
727receive future events.
487 728
488In general you can register as many read and/or write event watchers per 729In general you can register as many read and/or write event watchers per
489fd as you want (as long as you don't confuse yourself). Setting all file 730fd as you want (as long as you don't confuse yourself). Setting all file
490descriptors to non-blocking mode is also usually a good idea (but not 731descriptors to non-blocking mode is also usually a good idea (but not
491required if you know what you are doing). 732required if you know what you are doing).
492 733
493You have to be careful with dup'ed file descriptors, though. Some backends 734You have to be careful with dup'ed file descriptors, though. Some backends
494(the linux epoll backend is a notable example) cannot handle dup'ed file 735(the linux epoll backend is a notable example) cannot handle dup'ed file
495descriptors correctly if you register interest in two or more fds pointing 736descriptors correctly if you register interest in two or more fds pointing
496to the same underlying file/socket etc. description (that is, they share 737to the same underlying file/socket/etc. description (that is, they share
497the same underlying "file open"). 738the same underlying "file open").
498 739
499If you must do this, then force the use of a known-to-be-good backend 740If you must do this, then force the use of a known-to-be-good backend
500(at the time of this writing, this includes only EVMETHOD_SELECT and 741(at the time of this writing, this includes only C<EVBACKEND_SELECT> and
501EVMETHOD_POLL). 742C<EVBACKEND_POLL>).
743
744Another thing you have to watch out for is that it is quite easy to
745receive "spurious" readyness notifications, that is your callback might
746be called with C<EV_READ> but a subsequent C<read>(2) will actually block
747because there is no data. Not only are some backends known to create a
748lot of those (for example solaris ports), it is very easy to get into
749this situation even with a relatively standard program structure. Thus
750it is best to always use non-blocking I/O: An extra C<read>(2) returning
751C<EAGAIN> is far preferable to a program hanging until some data arrives.
752
753If you cannot run the fd in non-blocking mode (for example you should not
754play around with an Xlib connection), then you have to seperately re-test
755wether a file descriptor is really ready with a known-to-be good interface
756such as poll (fortunately in our Xlib example, Xlib already does this on
757its own, so its quite safe to use).
502 758
503=over 4 759=over 4
504 760
505=item ev_io_init (ev_io *, callback, int fd, int events) 761=item ev_io_init (ev_io *, callback, int fd, int events)
506 762
507=item ev_io_set (ev_io *, int fd, int events) 763=item ev_io_set (ev_io *, int fd, int events)
508 764
509Configures an C<ev_io> watcher. The fd is the file descriptor to rceeive 765Configures an C<ev_io> watcher. The C<fd> is the file descriptor to
510events for and events is either C<EV_READ>, C<EV_WRITE> or C<EV_READ | 766rceeive events for and events is either C<EV_READ>, C<EV_WRITE> or
511EV_WRITE> to receive the given events. 767C<EV_READ | EV_WRITE> to receive the given events.
512 768
513=back 769=item int fd [read-only]
514 770
771The file descriptor being watched.
772
773=item int events [read-only]
774
775The events being watched.
776
777=back
778
779Example: call C<stdin_readable_cb> when STDIN_FILENO has become, well
780readable, but only once. Since it is likely line-buffered, you could
781attempt to read a whole line in the callback:
782
783 static void
784 stdin_readable_cb (struct ev_loop *loop, struct ev_io *w, int revents)
785 {
786 ev_io_stop (loop, w);
787 .. read from stdin here (or from w->fd) and haqndle any I/O errors
788 }
789
790 ...
791 struct ev_loop *loop = ev_default_init (0);
792 struct ev_io stdin_readable;
793 ev_io_init (&stdin_readable, stdin_readable_cb, STDIN_FILENO, EV_READ);
794 ev_io_start (loop, &stdin_readable);
795 ev_loop (loop, 0);
796
797
515=head2 C<ev_timer> - relative and optionally recurring timeouts 798=head2 C<ev_timer> - relative and optionally repeating timeouts
516 799
517Timer watchers are simple relative timers that generate an event after a 800Timer watchers are simple relative timers that generate an event after a
518given time, and optionally repeating in regular intervals after that. 801given time, and optionally repeating in regular intervals after that.
519 802
520The timers are based on real time, that is, if you register an event that 803The timers are based on real time, that is, if you register an event that
561 844
562If the timer is repeating, either start it if necessary (with the repeat 845If the timer is repeating, either start it if necessary (with the repeat
563value), or reset the running timer to the repeat value. 846value), or reset the running timer to the repeat value.
564 847
565This sounds a bit complicated, but here is a useful and typical 848This sounds a bit complicated, but here is a useful and typical
566example: Imagine you have a tcp connection and you want a so-called idle 849example: Imagine you have a tcp connection and you want a so-called
567timeout, that is, you want to be called when there have been, say, 60 850idle timeout, that is, you want to be called when there have been,
568seconds of inactivity on the socket. The easiest way to do this is to 851say, 60 seconds of inactivity on the socket. The easiest way to do
569configure an C<ev_timer> with after=repeat=60 and calling ev_timer_again each 852this is to configure an C<ev_timer> with C<after>=C<repeat>=C<60> and calling
570time you successfully read or write some data. If you go into an idle 853C<ev_timer_again> each time you successfully read or write some data. If
571state where you do not expect data to travel on the socket, you can stop 854you go into an idle state where you do not expect data to travel on the
572the timer, and again will automatically restart it if need be. 855socket, you can stop the timer, and again will automatically restart it if
856need be.
573 857
574=back 858You can also ignore the C<after> value and C<ev_timer_start> altogether
859and only ever use the C<repeat> value:
575 860
861 ev_timer_init (timer, callback, 0., 5.);
862 ev_timer_again (loop, timer);
863 ...
864 timer->again = 17.;
865 ev_timer_again (loop, timer);
866 ...
867 timer->again = 10.;
868 ev_timer_again (loop, timer);
869
870This is more efficient then stopping/starting the timer eahc time you want
871to modify its timeout value.
872
873=item ev_tstamp repeat [read-write]
874
875The current C<repeat> value. Will be used each time the watcher times out
876or C<ev_timer_again> is called and determines the next timeout (if any),
877which is also when any modifications are taken into account.
878
879=back
880
881Example: create a timer that fires after 60 seconds.
882
883 static void
884 one_minute_cb (struct ev_loop *loop, struct ev_timer *w, int revents)
885 {
886 .. one minute over, w is actually stopped right here
887 }
888
889 struct ev_timer mytimer;
890 ev_timer_init (&mytimer, one_minute_cb, 60., 0.);
891 ev_timer_start (loop, &mytimer);
892
893Example: create a timeout timer that times out after 10 seconds of
894inactivity.
895
896 static void
897 timeout_cb (struct ev_loop *loop, struct ev_timer *w, int revents)
898 {
899 .. ten seconds without any activity
900 }
901
902 struct ev_timer mytimer;
903 ev_timer_init (&mytimer, timeout_cb, 0., 10.); /* note, only repeat used */
904 ev_timer_again (&mytimer); /* start timer */
905 ev_loop (loop, 0);
906
907 // and in some piece of code that gets executed on any "activity":
908 // reset the timeout to start ticking again at 10 seconds
909 ev_timer_again (&mytimer);
910
911
576=head2 C<ev_periodic> - to cron or not to cron 912=head2 C<ev_periodic> - to cron or not to cron?
577 913
578Periodic watchers are also timers of a kind, but they are very versatile 914Periodic watchers are also timers of a kind, but they are very versatile
579(and unfortunately a bit complex). 915(and unfortunately a bit complex).
580 916
581Unlike C<ev_timer>'s, they are not based on real time (or relative time) 917Unlike C<ev_timer>'s, they are not based on real time (or relative time)
582but on wallclock time (absolute time). You can tell a periodic watcher 918but on wallclock time (absolute time). You can tell a periodic watcher
583to trigger "at" some specific point in time. For example, if you tell a 919to trigger "at" some specific point in time. For example, if you tell a
584periodic watcher to trigger in 10 seconds (by specifiying e.g. c<ev_now () 920periodic watcher to trigger in 10 seconds (by specifiying e.g. C<ev_now ()
585+ 10.>) and then reset your system clock to the last year, then it will 921+ 10.>) and then reset your system clock to the last year, then it will
586take a year to trigger the event (unlike an C<ev_timer>, which would trigger 922take a year to trigger the event (unlike an C<ev_timer>, which would trigger
587roughly 10 seconds later and of course not if you reset your system time 923roughly 10 seconds later and of course not if you reset your system time
588again). 924again).
589 925
673Simply stops and restarts the periodic watcher again. This is only useful 1009Simply stops and restarts the periodic watcher again. This is only useful
674when you changed some parameters or the reschedule callback would return 1010when you changed some parameters or the reschedule callback would return
675a different time than the last time it was called (e.g. in a crond like 1011a different time than the last time it was called (e.g. in a crond like
676program when the crontabs have changed). 1012program when the crontabs have changed).
677 1013
678=back 1014=item ev_tstamp interval [read-write]
679 1015
1016The current interval value. Can be modified any time, but changes only
1017take effect when the periodic timer fires or C<ev_periodic_again> is being
1018called.
1019
1020=item ev_tstamp (*reschedule_cb)(struct ev_periodic *w, ev_tstamp now) [read-write]
1021
1022The current reschedule callback, or C<0>, if this functionality is
1023switched off. Can be changed any time, but changes only take effect when
1024the periodic timer fires or C<ev_periodic_again> is being called.
1025
1026=back
1027
1028Example: call a callback every hour, or, more precisely, whenever the
1029system clock is divisible by 3600. The callback invocation times have
1030potentially a lot of jittering, but good long-term stability.
1031
1032 static void
1033 clock_cb (struct ev_loop *loop, struct ev_io *w, int revents)
1034 {
1035 ... its now a full hour (UTC, or TAI or whatever your clock follows)
1036 }
1037
1038 struct ev_periodic hourly_tick;
1039 ev_periodic_init (&hourly_tick, clock_cb, 0., 3600., 0);
1040 ev_periodic_start (loop, &hourly_tick);
1041
1042Example: the same as above, but use a reschedule callback to do it:
1043
1044 #include <math.h>
1045
1046 static ev_tstamp
1047 my_scheduler_cb (struct ev_periodic *w, ev_tstamp now)
1048 {
1049 return fmod (now, 3600.) + 3600.;
1050 }
1051
1052 ev_periodic_init (&hourly_tick, clock_cb, 0., 0., my_scheduler_cb);
1053
1054Example: call a callback every hour, starting now:
1055
1056 struct ev_periodic hourly_tick;
1057 ev_periodic_init (&hourly_tick, clock_cb,
1058 fmod (ev_now (loop), 3600.), 3600., 0);
1059 ev_periodic_start (loop, &hourly_tick);
1060
1061
680=head2 C<ev_signal> - signal me when a signal gets signalled 1062=head2 C<ev_signal> - signal me when a signal gets signalled!
681 1063
682Signal watchers will trigger an event when the process receives a specific 1064Signal watchers will trigger an event when the process receives a specific
683signal one or more times. Even though signals are very asynchronous, libev 1065signal one or more times. Even though signals are very asynchronous, libev
684will try it's best to deliver signals synchronously, i.e. as part of the 1066will try it's best to deliver signals synchronously, i.e. as part of the
685normal event processing, like any other event. 1067normal event processing, like any other event.
698=item ev_signal_set (ev_signal *, int signum) 1080=item ev_signal_set (ev_signal *, int signum)
699 1081
700Configures the watcher to trigger on the given signal number (usually one 1082Configures the watcher to trigger on the given signal number (usually one
701of the C<SIGxxx> constants). 1083of the C<SIGxxx> constants).
702 1084
703=back 1085=item int signum [read-only]
704 1086
1087The signal the watcher watches out for.
1088
1089=back
1090
1091
705=head2 C<ev_child> - wait for pid status changes 1092=head2 C<ev_child> - watch out for process status changes
706 1093
707Child watchers trigger when your process receives a SIGCHLD in response to 1094Child watchers trigger when your process receives a SIGCHLD in response to
708some child status changes (most typically when a child of yours dies). 1095some child status changes (most typically when a child of yours dies).
709 1096
710=over 4 1097=over 4
718at the C<rstatus> member of the C<ev_child> watcher structure to see 1105at the C<rstatus> member of the C<ev_child> watcher structure to see
719the status word (use the macros from C<sys/wait.h> and see your systems 1106the status word (use the macros from C<sys/wait.h> and see your systems
720C<waitpid> documentation). The C<rpid> member contains the pid of the 1107C<waitpid> documentation). The C<rpid> member contains the pid of the
721process causing the status change. 1108process causing the status change.
722 1109
723=back 1110=item int pid [read-only]
724 1111
1112The process id this watcher watches out for, or C<0>, meaning any process id.
1113
1114=item int rpid [read-write]
1115
1116The process id that detected a status change.
1117
1118=item int rstatus [read-write]
1119
1120The process exit/trace status caused by C<rpid> (see your systems
1121C<waitpid> and C<sys/wait.h> documentation for details).
1122
1123=back
1124
1125Example: try to exit cleanly on SIGINT and SIGTERM.
1126
1127 static void
1128 sigint_cb (struct ev_loop *loop, struct ev_signal *w, int revents)
1129 {
1130 ev_unloop (loop, EVUNLOOP_ALL);
1131 }
1132
1133 struct ev_signal signal_watcher;
1134 ev_signal_init (&signal_watcher, sigint_cb, SIGINT);
1135 ev_signal_start (loop, &sigint_cb);
1136
1137
1138=head2 C<ev_stat> - did the file attributes just change?
1139
1140This watches a filesystem path for attribute changes. That is, it calls
1141C<stat> regularly (or when the OS says it changed) and sees if it changed
1142compared to the last time, invoking the callback if it did.
1143
1144The path does not need to exist: changing from "path exists" to "path does
1145not exist" is a status change like any other. The condition "path does
1146not exist" is signified by the C<st_nlink> field being zero (which is
1147otherwise always forced to be at least one) and all the other fields of
1148the stat buffer having unspecified contents.
1149
1150Since there is no standard to do this, the portable implementation simply
1151calls C<stat (2)> regulalry on the path to see if it changed somehow. You
1152can specify a recommended polling interval for this case. If you specify
1153a polling interval of C<0> (highly recommended!) then a I<suitable,
1154unspecified default> value will be used (which you can expect to be around
1155five seconds, although this might change dynamically). Libev will also
1156impose a minimum interval which is currently around C<0.1>, but thats
1157usually overkill.
1158
1159This watcher type is not meant for massive numbers of stat watchers,
1160as even with OS-supported change notifications, this can be
1161resource-intensive.
1162
1163At the time of this writing, no specific OS backends are implemented, but
1164if demand increases, at least a kqueue and inotify backend will be added.
1165
1166=over 4
1167
1168=item ev_stat_init (ev_stat *, callback, const char *path, ev_tstamp interval)
1169
1170=item ev_stat_set (ev_stat *, const char *path, ev_tstamp interval)
1171
1172Configures the watcher to wait for status changes of the given
1173C<path>. The C<interval> is a hint on how quickly a change is expected to
1174be detected and should normally be specified as C<0> to let libev choose
1175a suitable value. The memory pointed to by C<path> must point to the same
1176path for as long as the watcher is active.
1177
1178The callback will be receive C<EV_STAT> when a change was detected,
1179relative to the attributes at the time the watcher was started (or the
1180last change was detected).
1181
1182=item ev_stat_stat (ev_stat *)
1183
1184Updates the stat buffer immediately with new values. If you change the
1185watched path in your callback, you could call this fucntion to avoid
1186detecting this change (while introducing a race condition). Can also be
1187useful simply to find out the new values.
1188
1189=item ev_statdata attr [read-only]
1190
1191The most-recently detected attributes of the file. Although the type is of
1192C<ev_statdata>, this is usually the (or one of the) C<struct stat> types
1193suitable for your system. If the C<st_nlink> member is C<0>, then there
1194was some error while C<stat>ing the file.
1195
1196=item ev_statdata prev [read-only]
1197
1198The previous attributes of the file. The callback gets invoked whenever
1199C<prev> != C<attr>.
1200
1201=item ev_tstamp interval [read-only]
1202
1203The specified interval.
1204
1205=item const char *path [read-only]
1206
1207The filesystem path that is being watched.
1208
1209=back
1210
1211Example: Watch C</etc/passwd> for attribute changes.
1212
1213 static void
1214 passwd_cb (struct ev_loop *loop, ev_stat *w, int revents)
1215 {
1216 /* /etc/passwd changed in some way */
1217 if (w->attr.st_nlink)
1218 {
1219 printf ("passwd current size %ld\n", (long)w->attr.st_size);
1220 printf ("passwd current atime %ld\n", (long)w->attr.st_mtime);
1221 printf ("passwd current mtime %ld\n", (long)w->attr.st_mtime);
1222 }
1223 else
1224 /* you shalt not abuse printf for puts */
1225 puts ("wow, /etc/passwd is not there, expect problems. "
1226 "if this is windows, they already arrived\n");
1227 }
1228
1229 ...
1230 ev_stat passwd;
1231
1232 ev_stat_init (&passwd, passwd_cb, "/etc/passwd");
1233 ev_stat_start (loop, &passwd);
1234
1235
725=head2 C<ev_idle> - when you've got nothing better to do 1236=head2 C<ev_idle> - when you've got nothing better to do...
726 1237
727Idle watchers trigger events when there are no other events are pending 1238Idle watchers trigger events when there are no other events are pending
728(prepare, check and other idle watchers do not count). That is, as long 1239(prepare, check and other idle watchers do not count). That is, as long
729as your process is busy handling sockets or timeouts (or even signals, 1240as your process is busy handling sockets or timeouts (or even signals,
730imagine) it will not be triggered. But when your process is idle all idle 1241imagine) it will not be triggered. But when your process is idle all idle
748kind. There is a C<ev_idle_set> macro, but using it is utterly pointless, 1259kind. There is a C<ev_idle_set> macro, but using it is utterly pointless,
749believe me. 1260believe me.
750 1261
751=back 1262=back
752 1263
1264Example: dynamically allocate an C<ev_idle>, start it, and in the
1265callback, free it. Alos, use no error checking, as usual.
1266
1267 static void
1268 idle_cb (struct ev_loop *loop, struct ev_idle *w, int revents)
1269 {
1270 free (w);
1271 // now do something you wanted to do when the program has
1272 // no longer asnything immediate to do.
1273 }
1274
1275 struct ev_idle *idle_watcher = malloc (sizeof (struct ev_idle));
1276 ev_idle_init (idle_watcher, idle_cb);
1277 ev_idle_start (loop, idle_cb);
1278
1279
753=head2 C<ev_prepare> and C<ev_check> - customise your event loop 1280=head2 C<ev_prepare> and C<ev_check> - customise your event loop!
754 1281
755Prepare and check watchers are usually (but not always) used in tandem: 1282Prepare and check watchers are usually (but not always) used in tandem:
756prepare watchers get invoked before the process blocks and check watchers 1283prepare watchers get invoked before the process blocks and check watchers
757afterwards. 1284afterwards.
758 1285
1286You I<must not> call C<ev_loop> or similar functions that enter
1287the current event loop from either C<ev_prepare> or C<ev_check>
1288watchers. Other loops than the current one are fine, however. The
1289rationale behind this is that you do not need to check for recursion in
1290those watchers, i.e. the sequence will always be C<ev_prepare>, blocking,
1291C<ev_check> so if you have one watcher of each kind they will always be
1292called in pairs bracketing the blocking call.
1293
759Their main purpose is to integrate other event mechanisms into libev. This 1294Their main purpose is to integrate other event mechanisms into libev and
760could be used, for example, to track variable changes, implement your own 1295their use is somewhat advanced. This could be used, for example, to track
761watchers, integrate net-snmp or a coroutine library and lots more. 1296variable changes, implement your own watchers, integrate net-snmp or a
1297coroutine library and lots more. They are also occasionally useful if
1298you cache some data and want to flush it before blocking (for example,
1299in X programs you might want to do an C<XFlush ()> in an C<ev_prepare>
1300watcher).
762 1301
763This is done by examining in each prepare call which file descriptors need 1302This is done by examining in each prepare call which file descriptors need
764to be watched by the other library, registering C<ev_io> watchers for 1303to be watched by the other library, registering C<ev_io> watchers for
765them and starting an C<ev_timer> watcher for any timeouts (many libraries 1304them and starting an C<ev_timer> watcher for any timeouts (many libraries
766provide just this functionality). Then, in the check watcher you check for 1305provide just this functionality). Then, in the check watcher you check for
788parameters of any kind. There are C<ev_prepare_set> and C<ev_check_set> 1327parameters of any kind. There are C<ev_prepare_set> and C<ev_check_set>
789macros, but using them is utterly, utterly and completely pointless. 1328macros, but using them is utterly, utterly and completely pointless.
790 1329
791=back 1330=back
792 1331
1332Example: To include a library such as adns, you would add IO watchers
1333and a timeout watcher in a prepare handler, as required by libadns, and
1334in a check watcher, destroy them and call into libadns. What follows is
1335pseudo-code only of course:
1336
1337 static ev_io iow [nfd];
1338 static ev_timer tw;
1339
1340 static void
1341 io_cb (ev_loop *loop, ev_io *w, int revents)
1342 {
1343 // set the relevant poll flags
1344 // could also call adns_processreadable etc. here
1345 struct pollfd *fd = (struct pollfd *)w->data;
1346 if (revents & EV_READ ) fd->revents |= fd->events & POLLIN;
1347 if (revents & EV_WRITE) fd->revents |= fd->events & POLLOUT;
1348 }
1349
1350 // create io watchers for each fd and a timer before blocking
1351 static void
1352 adns_prepare_cb (ev_loop *loop, ev_prepare *w, int revents)
1353 {
1354 int timeout = 3600000;truct pollfd fds [nfd];
1355 // actual code will need to loop here and realloc etc.
1356 adns_beforepoll (ads, fds, &nfd, &timeout, timeval_from (ev_time ()));
1357
1358 /* the callback is illegal, but won't be called as we stop during check */
1359 ev_timer_init (&tw, 0, timeout * 1e-3);
1360 ev_timer_start (loop, &tw);
1361
1362 // create on ev_io per pollfd
1363 for (int i = 0; i < nfd; ++i)
1364 {
1365 ev_io_init (iow + i, io_cb, fds [i].fd,
1366 ((fds [i].events & POLLIN ? EV_READ : 0)
1367 | (fds [i].events & POLLOUT ? EV_WRITE : 0)));
1368
1369 fds [i].revents = 0;
1370 iow [i].data = fds + i;
1371 ev_io_start (loop, iow + i);
1372 }
1373 }
1374
1375 // stop all watchers after blocking
1376 static void
1377 adns_check_cb (ev_loop *loop, ev_check *w, int revents)
1378 {
1379 ev_timer_stop (loop, &tw);
1380
1381 for (int i = 0; i < nfd; ++i)
1382 ev_io_stop (loop, iow + i);
1383
1384 adns_afterpoll (adns, fds, nfd, timeval_from (ev_now (loop));
1385 }
1386
1387
1388=head2 C<ev_embed> - when one backend isn't enough...
1389
1390This is a rather advanced watcher type that lets you embed one event loop
1391into another (currently only C<ev_io> events are supported in the embedded
1392loop, other types of watchers might be handled in a delayed or incorrect
1393fashion and must not be used).
1394
1395There are primarily two reasons you would want that: work around bugs and
1396prioritise I/O.
1397
1398As an example for a bug workaround, the kqueue backend might only support
1399sockets on some platform, so it is unusable as generic backend, but you
1400still want to make use of it because you have many sockets and it scales
1401so nicely. In this case, you would create a kqueue-based loop and embed it
1402into your default loop (which might use e.g. poll). Overall operation will
1403be a bit slower because first libev has to poll and then call kevent, but
1404at least you can use both at what they are best.
1405
1406As for prioritising I/O: rarely you have the case where some fds have
1407to be watched and handled very quickly (with low latency), and even
1408priorities and idle watchers might have too much overhead. In this case
1409you would put all the high priority stuff in one loop and all the rest in
1410a second one, and embed the second one in the first.
1411
1412As long as the watcher is active, the callback will be invoked every time
1413there might be events pending in the embedded loop. The callback must then
1414call C<ev_embed_sweep (mainloop, watcher)> to make a single sweep and invoke
1415their callbacks (you could also start an idle watcher to give the embedded
1416loop strictly lower priority for example). You can also set the callback
1417to C<0>, in which case the embed watcher will automatically execute the
1418embedded loop sweep.
1419
1420As long as the watcher is started it will automatically handle events. The
1421callback will be invoked whenever some events have been handled. You can
1422set the callback to C<0> to avoid having to specify one if you are not
1423interested in that.
1424
1425Also, there have not currently been made special provisions for forking:
1426when you fork, you not only have to call C<ev_loop_fork> on both loops,
1427but you will also have to stop and restart any C<ev_embed> watchers
1428yourself.
1429
1430Unfortunately, not all backends are embeddable, only the ones returned by
1431C<ev_embeddable_backends> are, which, unfortunately, does not include any
1432portable one.
1433
1434So when you want to use this feature you will always have to be prepared
1435that you cannot get an embeddable loop. The recommended way to get around
1436this is to have a separate variables for your embeddable loop, try to
1437create it, and if that fails, use the normal loop for everything:
1438
1439 struct ev_loop *loop_hi = ev_default_init (0);
1440 struct ev_loop *loop_lo = 0;
1441 struct ev_embed embed;
1442
1443 // see if there is a chance of getting one that works
1444 // (remember that a flags value of 0 means autodetection)
1445 loop_lo = ev_embeddable_backends () & ev_recommended_backends ()
1446 ? ev_loop_new (ev_embeddable_backends () & ev_recommended_backends ())
1447 : 0;
1448
1449 // if we got one, then embed it, otherwise default to loop_hi
1450 if (loop_lo)
1451 {
1452 ev_embed_init (&embed, 0, loop_lo);
1453 ev_embed_start (loop_hi, &embed);
1454 }
1455 else
1456 loop_lo = loop_hi;
1457
1458=over 4
1459
1460=item ev_embed_init (ev_embed *, callback, struct ev_loop *embedded_loop)
1461
1462=item ev_embed_set (ev_embed *, callback, struct ev_loop *embedded_loop)
1463
1464Configures the watcher to embed the given loop, which must be
1465embeddable. If the callback is C<0>, then C<ev_embed_sweep> will be
1466invoked automatically, otherwise it is the responsibility of the callback
1467to invoke it (it will continue to be called until the sweep has been done,
1468if you do not want thta, you need to temporarily stop the embed watcher).
1469
1470=item ev_embed_sweep (loop, ev_embed *)
1471
1472Make a single, non-blocking sweep over the embedded loop. This works
1473similarly to C<ev_loop (embedded_loop, EVLOOP_NONBLOCK)>, but in the most
1474apropriate way for embedded loops.
1475
1476=item struct ev_loop *loop [read-only]
1477
1478The embedded event loop.
1479
1480=back
1481
1482
1483=head2 C<ev_fork> - the audacity to resume the event loop after a fork
1484
1485Fork watchers are called when a C<fork ()> was detected (usually because
1486whoever is a good citizen cared to tell libev about it by calling
1487C<ev_default_fork> or C<ev_loop_fork>). The invocation is done before the
1488event loop blocks next and before C<ev_check> watchers are being called,
1489and only in the child after the fork. If whoever good citizen calling
1490C<ev_default_fork> cheats and calls it in the wrong process, the fork
1491handlers will be invoked, too, of course.
1492
1493=over 4
1494
1495=item ev_fork_init (ev_signal *, callback)
1496
1497Initialises and configures the fork watcher - it has no parameters of any
1498kind. There is a C<ev_fork_set> macro, but using it is utterly pointless,
1499believe me.
1500
1501=back
1502
1503
793=head1 OTHER FUNCTIONS 1504=head1 OTHER FUNCTIONS
794 1505
795There are some other functions of possible interest. Described. Here. Now. 1506There are some other functions of possible interest. Described. Here. Now.
796 1507
797=over 4 1508=over 4
826 /* stdin might have data for us, joy! */; 1537 /* stdin might have data for us, joy! */;
827 } 1538 }
828 1539
829 ev_once (STDIN_FILENO, EV_READ, 10., stdin_ready, 0); 1540 ev_once (STDIN_FILENO, EV_READ, 10., stdin_ready, 0);
830 1541
831=item ev_feed_event (loop, watcher, int events) 1542=item ev_feed_event (ev_loop *, watcher *, int revents)
832 1543
833Feeds the given event set into the event loop, as if the specified event 1544Feeds the given event set into the event loop, as if the specified event
834had happened for the specified watcher (which must be a pointer to an 1545had happened for the specified watcher (which must be a pointer to an
835initialised but not necessarily started event watcher). 1546initialised but not necessarily started event watcher).
836 1547
837=item ev_feed_fd_event (loop, int fd, int revents) 1548=item ev_feed_fd_event (ev_loop *, int fd, int revents)
838 1549
839Feed an event on the given fd, as if a file descriptor backend detected 1550Feed an event on the given fd, as if a file descriptor backend detected
840the given events it. 1551the given events it.
841 1552
842=item ev_feed_signal_event (loop, int signum) 1553=item ev_feed_signal_event (ev_loop *loop, int signum)
843 1554
844Feed an event as if the given signal occured (loop must be the default loop!). 1555Feed an event as if the given signal occured (C<loop> must be the default
1556loop!).
845 1557
846=back 1558=back
1559
847 1560
848=head1 LIBEVENT EMULATION 1561=head1 LIBEVENT EMULATION
849 1562
850Libev offers a compatibility emulation layer for libevent. It cannot 1563Libev offers a compatibility emulation layer for libevent. It cannot
851emulate the internals of libevent, so here are some usage hints: 1564emulate the internals of libevent, so here are some usage hints:
872 1585
873=back 1586=back
874 1587
875=head1 C++ SUPPORT 1588=head1 C++ SUPPORT
876 1589
877TBD. 1590Libev comes with some simplistic wrapper classes for C++ that mainly allow
1591you to use some convinience methods to start/stop watchers and also change
1592the callback model to a model using method callbacks on objects.
1593
1594To use it,
1595
1596 #include <ev++.h>
1597
1598(it is not installed by default). This automatically includes F<ev.h>
1599and puts all of its definitions (many of them macros) into the global
1600namespace. All C++ specific things are put into the C<ev> namespace.
1601
1602It should support all the same embedding options as F<ev.h>, most notably
1603C<EV_MULTIPLICITY>.
1604
1605Here is a list of things available in the C<ev> namespace:
1606
1607=over 4
1608
1609=item C<ev::READ>, C<ev::WRITE> etc.
1610
1611These are just enum values with the same values as the C<EV_READ> etc.
1612macros from F<ev.h>.
1613
1614=item C<ev::tstamp>, C<ev::now>
1615
1616Aliases to the same types/functions as with the C<ev_> prefix.
1617
1618=item C<ev::io>, C<ev::timer>, C<ev::periodic>, C<ev::idle>, C<ev::sig> etc.
1619
1620For each C<ev_TYPE> watcher in F<ev.h> there is a corresponding class of
1621the same name in the C<ev> namespace, with the exception of C<ev_signal>
1622which is called C<ev::sig> to avoid clashes with the C<signal> macro
1623defines by many implementations.
1624
1625All of those classes have these methods:
1626
1627=over 4
1628
1629=item ev::TYPE::TYPE (object *, object::method *)
1630
1631=item ev::TYPE::TYPE (object *, object::method *, struct ev_loop *)
1632
1633=item ev::TYPE::~TYPE
1634
1635The constructor takes a pointer to an object and a method pointer to
1636the event handler callback to call in this class. The constructor calls
1637C<ev_init> for you, which means you have to call the C<set> method
1638before starting it. If you do not specify a loop then the constructor
1639automatically associates the default loop with this watcher.
1640
1641The destructor automatically stops the watcher if it is active.
1642
1643=item w->set (struct ev_loop *)
1644
1645Associates a different C<struct ev_loop> with this watcher. You can only
1646do this when the watcher is inactive (and not pending either).
1647
1648=item w->set ([args])
1649
1650Basically the same as C<ev_TYPE_set>, with the same args. Must be
1651called at least once. Unlike the C counterpart, an active watcher gets
1652automatically stopped and restarted.
1653
1654=item w->start ()
1655
1656Starts the watcher. Note that there is no C<loop> argument as the
1657constructor already takes the loop.
1658
1659=item w->stop ()
1660
1661Stops the watcher if it is active. Again, no C<loop> argument.
1662
1663=item w->again () C<ev::timer>, C<ev::periodic> only
1664
1665For C<ev::timer> and C<ev::periodic>, this invokes the corresponding
1666C<ev_TYPE_again> function.
1667
1668=item w->sweep () C<ev::embed> only
1669
1670Invokes C<ev_embed_sweep>.
1671
1672=item w->update () C<ev::stat> only
1673
1674Invokes C<ev_stat_stat>.
1675
1676=back
1677
1678=back
1679
1680Example: Define a class with an IO and idle watcher, start one of them in
1681the constructor.
1682
1683 class myclass
1684 {
1685 ev_io io; void io_cb (ev::io &w, int revents);
1686 ev_idle idle void idle_cb (ev::idle &w, int revents);
1687
1688 myclass ();
1689 }
1690
1691 myclass::myclass (int fd)
1692 : io (this, &myclass::io_cb),
1693 idle (this, &myclass::idle_cb)
1694 {
1695 io.start (fd, ev::READ);
1696 }
1697
1698
1699=head1 MACRO MAGIC
1700
1701Libev can be compiled with a variety of options, the most fundemantal is
1702C<EV_MULTIPLICITY>. This option determines wether (most) functions and
1703callbacks have an initial C<struct ev_loop *> argument.
1704
1705To make it easier to write programs that cope with either variant, the
1706following macros are defined:
1707
1708=over 4
1709
1710=item C<EV_A>, C<EV_A_>
1711
1712This provides the loop I<argument> for functions, if one is required ("ev
1713loop argument"). The C<EV_A> form is used when this is the sole argument,
1714C<EV_A_> is used when other arguments are following. Example:
1715
1716 ev_unref (EV_A);
1717 ev_timer_add (EV_A_ watcher);
1718 ev_loop (EV_A_ 0);
1719
1720It assumes the variable C<loop> of type C<struct ev_loop *> is in scope,
1721which is often provided by the following macro.
1722
1723=item C<EV_P>, C<EV_P_>
1724
1725This provides the loop I<parameter> for functions, if one is required ("ev
1726loop parameter"). The C<EV_P> form is used when this is the sole parameter,
1727C<EV_P_> is used when other parameters are following. Example:
1728
1729 // this is how ev_unref is being declared
1730 static void ev_unref (EV_P);
1731
1732 // this is how you can declare your typical callback
1733 static void cb (EV_P_ ev_timer *w, int revents)
1734
1735It declares a parameter C<loop> of type C<struct ev_loop *>, quite
1736suitable for use with C<EV_A>.
1737
1738=item C<EV_DEFAULT>, C<EV_DEFAULT_>
1739
1740Similar to the other two macros, this gives you the value of the default
1741loop, if multiple loops are supported ("ev loop default").
1742
1743=back
1744
1745Example: Declare and initialise a check watcher, working regardless of
1746wether multiple loops are supported or not.
1747
1748 static void
1749 check_cb (EV_P_ ev_timer *w, int revents)
1750 {
1751 ev_check_stop (EV_A_ w);
1752 }
1753
1754 ev_check check;
1755 ev_check_init (&check, check_cb);
1756 ev_check_start (EV_DEFAULT_ &check);
1757 ev_loop (EV_DEFAULT_ 0);
1758
1759
1760=head1 EMBEDDING
1761
1762Libev can (and often is) directly embedded into host
1763applications. Examples of applications that embed it include the Deliantra
1764Game Server, the EV perl module, the GNU Virtual Private Ethernet (gvpe)
1765and rxvt-unicode.
1766
1767The goal is to enable you to just copy the neecssary files into your
1768source directory without having to change even a single line in them, so
1769you can easily upgrade by simply copying (or having a checked-out copy of
1770libev somewhere in your source tree).
1771
1772=head2 FILESETS
1773
1774Depending on what features you need you need to include one or more sets of files
1775in your app.
1776
1777=head3 CORE EVENT LOOP
1778
1779To include only the libev core (all the C<ev_*> functions), with manual
1780configuration (no autoconf):
1781
1782 #define EV_STANDALONE 1
1783 #include "ev.c"
1784
1785This will automatically include F<ev.h>, too, and should be done in a
1786single C source file only to provide the function implementations. To use
1787it, do the same for F<ev.h> in all files wishing to use this API (best
1788done by writing a wrapper around F<ev.h> that you can include instead and
1789where you can put other configuration options):
1790
1791 #define EV_STANDALONE 1
1792 #include "ev.h"
1793
1794Both header files and implementation files can be compiled with a C++
1795compiler (at least, thats a stated goal, and breakage will be treated
1796as a bug).
1797
1798You need the following files in your source tree, or in a directory
1799in your include path (e.g. in libev/ when using -Ilibev):
1800
1801 ev.h
1802 ev.c
1803 ev_vars.h
1804 ev_wrap.h
1805
1806 ev_win32.c required on win32 platforms only
1807
1808 ev_select.c only when select backend is enabled (which is by default)
1809 ev_poll.c only when poll backend is enabled (disabled by default)
1810 ev_epoll.c only when the epoll backend is enabled (disabled by default)
1811 ev_kqueue.c only when the kqueue backend is enabled (disabled by default)
1812 ev_port.c only when the solaris port backend is enabled (disabled by default)
1813
1814F<ev.c> includes the backend files directly when enabled, so you only need
1815to compile this single file.
1816
1817=head3 LIBEVENT COMPATIBILITY API
1818
1819To include the libevent compatibility API, also include:
1820
1821 #include "event.c"
1822
1823in the file including F<ev.c>, and:
1824
1825 #include "event.h"
1826
1827in the files that want to use the libevent API. This also includes F<ev.h>.
1828
1829You need the following additional files for this:
1830
1831 event.h
1832 event.c
1833
1834=head3 AUTOCONF SUPPORT
1835
1836Instead of using C<EV_STANDALONE=1> and providing your config in
1837whatever way you want, you can also C<m4_include([libev.m4])> in your
1838F<configure.ac> and leave C<EV_STANDALONE> undefined. F<ev.c> will then
1839include F<config.h> and configure itself accordingly.
1840
1841For this of course you need the m4 file:
1842
1843 libev.m4
1844
1845=head2 PREPROCESSOR SYMBOLS/MACROS
1846
1847Libev can be configured via a variety of preprocessor symbols you have to define
1848before including any of its files. The default is not to build for multiplicity
1849and only include the select backend.
1850
1851=over 4
1852
1853=item EV_STANDALONE
1854
1855Must always be C<1> if you do not use autoconf configuration, which
1856keeps libev from including F<config.h>, and it also defines dummy
1857implementations for some libevent functions (such as logging, which is not
1858supported). It will also not define any of the structs usually found in
1859F<event.h> that are not directly supported by the libev core alone.
1860
1861=item EV_USE_MONOTONIC
1862
1863If defined to be C<1>, libev will try to detect the availability of the
1864monotonic clock option at both compiletime and runtime. Otherwise no use
1865of the monotonic clock option will be attempted. If you enable this, you
1866usually have to link against librt or something similar. Enabling it when
1867the functionality isn't available is safe, though, althoguh you have
1868to make sure you link against any libraries where the C<clock_gettime>
1869function is hiding in (often F<-lrt>).
1870
1871=item EV_USE_REALTIME
1872
1873If defined to be C<1>, libev will try to detect the availability of the
1874realtime clock option at compiletime (and assume its availability at
1875runtime if successful). Otherwise no use of the realtime clock option will
1876be attempted. This effectively replaces C<gettimeofday> by C<clock_get
1877(CLOCK_REALTIME, ...)> and will not normally affect correctness. See tzhe note about libraries
1878in the description of C<EV_USE_MONOTONIC>, though.
1879
1880=item EV_USE_SELECT
1881
1882If undefined or defined to be C<1>, libev will compile in support for the
1883C<select>(2) backend. No attempt at autodetection will be done: if no
1884other method takes over, select will be it. Otherwise the select backend
1885will not be compiled in.
1886
1887=item EV_SELECT_USE_FD_SET
1888
1889If defined to C<1>, then the select backend will use the system C<fd_set>
1890structure. This is useful if libev doesn't compile due to a missing
1891C<NFDBITS> or C<fd_mask> definition or it misguesses the bitset layout on
1892exotic systems. This usually limits the range of file descriptors to some
1893low limit such as 1024 or might have other limitations (winsocket only
1894allows 64 sockets). The C<FD_SETSIZE> macro, set before compilation, might
1895influence the size of the C<fd_set> used.
1896
1897=item EV_SELECT_IS_WINSOCKET
1898
1899When defined to C<1>, the select backend will assume that
1900select/socket/connect etc. don't understand file descriptors but
1901wants osf handles on win32 (this is the case when the select to
1902be used is the winsock select). This means that it will call
1903C<_get_osfhandle> on the fd to convert it to an OS handle. Otherwise,
1904it is assumed that all these functions actually work on fds, even
1905on win32. Should not be defined on non-win32 platforms.
1906
1907=item EV_USE_POLL
1908
1909If defined to be C<1>, libev will compile in support for the C<poll>(2)
1910backend. Otherwise it will be enabled on non-win32 platforms. It
1911takes precedence over select.
1912
1913=item EV_USE_EPOLL
1914
1915If defined to be C<1>, libev will compile in support for the Linux
1916C<epoll>(7) backend. Its availability will be detected at runtime,
1917otherwise another method will be used as fallback. This is the
1918preferred backend for GNU/Linux systems.
1919
1920=item EV_USE_KQUEUE
1921
1922If defined to be C<1>, libev will compile in support for the BSD style
1923C<kqueue>(2) backend. Its actual availability will be detected at runtime,
1924otherwise another method will be used as fallback. This is the preferred
1925backend for BSD and BSD-like systems, although on most BSDs kqueue only
1926supports some types of fds correctly (the only platform we found that
1927supports ptys for example was NetBSD), so kqueue might be compiled in, but
1928not be used unless explicitly requested. The best way to use it is to find
1929out whether kqueue supports your type of fd properly and use an embedded
1930kqueue loop.
1931
1932=item EV_USE_PORT
1933
1934If defined to be C<1>, libev will compile in support for the Solaris
193510 port style backend. Its availability will be detected at runtime,
1936otherwise another method will be used as fallback. This is the preferred
1937backend for Solaris 10 systems.
1938
1939=item EV_USE_DEVPOLL
1940
1941reserved for future expansion, works like the USE symbols above.
1942
1943=item EV_H
1944
1945The name of the F<ev.h> header file used to include it. The default if
1946undefined is C<< <ev.h> >> in F<event.h> and C<"ev.h"> in F<ev.c>. This
1947can be used to virtually rename the F<ev.h> header file in case of conflicts.
1948
1949=item EV_CONFIG_H
1950
1951If C<EV_STANDALONE> isn't C<1>, this variable can be used to override
1952F<ev.c>'s idea of where to find the F<config.h> file, similarly to
1953C<EV_H>, above.
1954
1955=item EV_EVENT_H
1956
1957Similarly to C<EV_H>, this macro can be used to override F<event.c>'s idea
1958of how the F<event.h> header can be found.
1959
1960=item EV_PROTOTYPES
1961
1962If defined to be C<0>, then F<ev.h> will not define any function
1963prototypes, but still define all the structs and other symbols. This is
1964occasionally useful if you want to provide your own wrapper functions
1965around libev functions.
1966
1967=item EV_MULTIPLICITY
1968
1969If undefined or defined to C<1>, then all event-loop-specific functions
1970will have the C<struct ev_loop *> as first argument, and you can create
1971additional independent event loops. Otherwise there will be no support
1972for multiple event loops and there is no first event loop pointer
1973argument. Instead, all functions act on the single default loop.
1974
1975=item EV_PERIODIC_ENABLE
1976
1977If undefined or defined to be C<1>, then periodic timers are supported. If
1978defined to be C<0>, then they are not. Disabling them saves a few kB of
1979code.
1980
1981=item EV_EMBED_ENABLE
1982
1983If undefined or defined to be C<1>, then embed watchers are supported. If
1984defined to be C<0>, then they are not.
1985
1986=item EV_STAT_ENABLE
1987
1988If undefined or defined to be C<1>, then stat watchers are supported. If
1989defined to be C<0>, then they are not.
1990
1991=item EV_FORK_ENABLE
1992
1993If undefined or defined to be C<1>, then fork watchers are supported. If
1994defined to be C<0>, then they are not.
1995
1996=item EV_MINIMAL
1997
1998If you need to shave off some kilobytes of code at the expense of some
1999speed, define this symbol to C<1>. Currently only used for gcc to override
2000some inlining decisions, saves roughly 30% codesize of amd64.
2001
2002=item EV_PID_HASHSIZE
2003
2004C<ev_child> watchers use a small hash table to distribute workload by
2005pid. The default size is C<16> (or C<1> with C<EV_MINIMAL>), usually more
2006than enough. If you need to manage thousands of children you might want to
2007increase this value.
2008
2009=item EV_COMMON
2010
2011By default, all watchers have a C<void *data> member. By redefining
2012this macro to a something else you can include more and other types of
2013members. You have to define it each time you include one of the files,
2014though, and it must be identical each time.
2015
2016For example, the perl EV module uses something like this:
2017
2018 #define EV_COMMON \
2019 SV *self; /* contains this struct */ \
2020 SV *cb_sv, *fh /* note no trailing ";" */
2021
2022=item EV_CB_DECLARE (type)
2023
2024=item EV_CB_INVOKE (watcher, revents)
2025
2026=item ev_set_cb (ev, cb)
2027
2028Can be used to change the callback member declaration in each watcher,
2029and the way callbacks are invoked and set. Must expand to a struct member
2030definition and a statement, respectively. See the F<ev.v> header file for
2031their default definitions. One possible use for overriding these is to
2032avoid the C<struct ev_loop *> as first argument in all cases, or to use
2033method calls instead of plain function calls in C++.
2034
2035=head2 EXAMPLES
2036
2037For a real-world example of a program the includes libev
2038verbatim, you can have a look at the EV perl module
2039(L<http://software.schmorp.de/pkg/EV.html>). It has the libev files in
2040the F<libev/> subdirectory and includes them in the F<EV/EVAPI.h> (public
2041interface) and F<EV.xs> (implementation) files. Only the F<EV.xs> file
2042will be compiled. It is pretty complex because it provides its own header
2043file.
2044
2045The usage in rxvt-unicode is simpler. It has a F<ev_cpp.h> header file
2046that everybody includes and which overrides some autoconf choices:
2047
2048 #define EV_USE_POLL 0
2049 #define EV_MULTIPLICITY 0
2050 #define EV_PERIODICS 0
2051 #define EV_CONFIG_H <config.h>
2052
2053 #include "ev++.h"
2054
2055And a F<ev_cpp.C> implementation file that contains libev proper and is compiled:
2056
2057 #include "ev_cpp.h"
2058 #include "ev.c"
2059
2060
2061=head1 COMPLEXITIES
2062
2063In this section the complexities of (many of) the algorithms used inside
2064libev will be explained. For complexity discussions about backends see the
2065documentation for C<ev_default_init>.
2066
2067=over 4
2068
2069=item Starting and stopping timer/periodic watchers: O(log skipped_other_timers)
2070
2071=item Changing timer/periodic watchers (by autorepeat, again): O(log skipped_other_timers)
2072
2073=item Starting io/check/prepare/idle/signal/child watchers: O(1)
2074
2075=item Stopping check/prepare/idle watchers: O(1)
2076
2077=item Stopping an io/signal/child watcher: O(number_of_watchers_for_this_(fd/signal/pid % 16))
2078
2079=item Finding the next timer per loop iteration: O(1)
2080
2081=item Each change on a file descriptor per loop iteration: O(number_of_watchers_for_this_fd)
2082
2083=item Activating one watcher: O(1)
2084
2085=back
2086
878 2087
879=head1 AUTHOR 2088=head1 AUTHOR
880 2089
881Marc Lehmann <libev@schmorp.de>. 2090Marc Lehmann <libev@schmorp.de>.
882 2091

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines