1=encoding utf-8 2 3=head1 NAME 4 5libev - a high performance full-featured event loop written in C 6 7=head1 SYNOPSIS 8 9 #include <ev.h> 10 11=head2 EXAMPLE PROGRAM 12 13 // a single header file is required 14 #include <ev.h> 15 16 #include <stdio.h> // for puts 17 18 // every watcher type has its own typedef'd struct 19 // with the name ev_TYPE 20 ev_io stdin_watcher; 21 ev_timer timeout_watcher; 22 23 // all watcher callbacks have a similar signature 24 // this callback is called when data is readable on stdin 25 static void 26 stdin_cb (EV_P_ ev_io *w, int revents) 27 { 28 puts ("stdin ready"); 29 // for one-shot events, one must manually stop the watcher 30 // with its corresponding stop function. 31 ev_io_stop (EV_A_ w); 32 33 // this causes all nested ev_run's to stop iterating 34 ev_break (EV_A_ EVBREAK_ALL); 35 } 36 37 // another callback, this time for a time-out 38 static void 39 timeout_cb (EV_P_ ev_timer *w, int revents) 40 { 41 puts ("timeout"); 42 // this causes the innermost ev_run to stop iterating 43 ev_break (EV_A_ EVBREAK_ONE); 44 } 45 46 int 47 main (void) 48 { 49 // use the default event loop unless you have special needs 50 struct ev_loop *loop = EV_DEFAULT; 51 52 // initialise an io watcher, then start it 53 // this one will watch for stdin to become readable 54 ev_io_init (&stdin_watcher, stdin_cb, /*STDIN_FILENO*/ 0, EV_READ); 55 ev_io_start (loop, &stdin_watcher); 56 57 // initialise a timer watcher, then start it 58 // simple non-repeating 5.5 second timeout 59 ev_timer_init (&timeout_watcher, timeout_cb, 5.5, 0.); 60 ev_timer_start (loop, &timeout_watcher); 61 62 // now wait for events to arrive 63 ev_run (loop, 0); 64 65 // break was called, so exit 66 return 0; 67 } 68 69=head1 ABOUT THIS DOCUMENT 70 71This document documents the libev software package. 72 73The newest version of this document is also available as an html-formatted 74web page you might find easier to navigate when reading it for the first 75time: L<http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod>. 76 77While this document tries to be as complete as possible in documenting 78libev, its usage and the rationale behind its design, it is not a tutorial 79on event-based programming, nor will it introduce event-based programming 80with libev. 81 82Familiarity with event based programming techniques in general is assumed 83throughout this document. 84 85=head1 WHAT TO READ WHEN IN A HURRY 86 87This manual tries to be very detailed, but unfortunately, this also makes 88it very long. If you just want to know the basics of libev, I suggest 89reading L</ANATOMY OF A WATCHER>, then the L</EXAMPLE PROGRAM> above and 90look up the missing functions in L</GLOBAL FUNCTIONS> and the C<ev_io> and 91C<ev_timer> sections in L</WATCHER TYPES>. 92 93=head1 ABOUT LIBEV 94 95Libev is an event loop: you register interest in certain events (such as a 96file descriptor being readable or a timeout occurring), and it will manage 97these event sources and provide your program with events. 98 99To do this, it must take more or less complete control over your process 100(or thread) by executing the I<event loop> handler, and will then 101communicate events via a callback mechanism. 102 103You register interest in certain events by registering so-called I<event 104watchers>, which are relatively small C structures you initialise with the 105details of the event, and then hand it over to libev by I<starting> the 106watcher. 107 108=head2 FEATURES 109 110Libev supports C<select>, C<poll>, the Linux-specific C<epoll>, the 111BSD-specific C<kqueue> and the Solaris-specific event port mechanisms 112for file descriptor events (C<ev_io>), the Linux C<inotify> interface 113(for C<ev_stat>), Linux eventfd/signalfd (for faster and cleaner 114inter-thread wakeup (C<ev_async>)/signal handling (C<ev_signal>)) relative 115timers (C<ev_timer>), absolute timers with customised rescheduling 116(C<ev_periodic>), synchronous signals (C<ev_signal>), process status 117change events (C<ev_child>), and event watchers dealing with the event 118loop mechanism itself (C<ev_idle>, C<ev_embed>, C<ev_prepare> and 119C<ev_check> watchers) as well as file watchers (C<ev_stat>) and even 120limited support for fork events (C<ev_fork>). 121 122It also is quite fast (see this 123L<benchmark|http://libev.schmorp.de/bench.html> comparing it to libevent 124for example). 125 126=head2 CONVENTIONS 127 128Libev is very configurable. In this manual the default (and most common) 129configuration will be described, which supports multiple event loops. For 130more info about various configuration options please have a look at 131B<EMBED> section in this manual. If libev was configured without support 132for multiple event loops, then all functions taking an initial argument of 133name C<loop> (which is always of type C<struct ev_loop *>) will not have 134this argument. 135 136=head2 TIME REPRESENTATION 137 138Libev represents time as a single floating point number, representing 139the (fractional) number of seconds since the (POSIX) epoch (in practice 140somewhere near the beginning of 1970, details are complicated, don't 141ask). This type is called C<ev_tstamp>, which is what you should use 142too. It usually aliases to the C<double> type in C. When you need to do 143any calculations on it, you should treat it as some floating point value. 144 145Unlike the name component C<stamp> might indicate, it is also used for 146time differences (e.g. delays) throughout libev. 147 148=head1 ERROR HANDLING 149 150Libev knows three classes of errors: operating system errors, usage errors 151and internal errors (bugs). 152 153When libev catches an operating system error it cannot handle (for example 154a system call indicating a condition libev cannot fix), it calls the callback 155set via C<ev_set_syserr_cb>, which is supposed to fix the problem or 156abort. The default is to print a diagnostic message and to call C<abort 157()>. 158 159When libev detects a usage error such as a negative timer interval, then 160it will print a diagnostic message and abort (via the C<assert> mechanism, 161so C<NDEBUG> will disable this checking): these are programming errors in 162the libev caller and need to be fixed there. 163 164Libev also has a few internal error-checking C<assert>ions, and also has 165extensive consistency checking code. These do not trigger under normal 166circumstances, as they indicate either a bug in libev or worse. 167 168 169=head1 GLOBAL FUNCTIONS 170 171These functions can be called anytime, even before initialising the 172library in any way. 173 174=over 4 175 176=item ev_tstamp ev_time () 177 178Returns the current time as libev would use it. Please note that the 179C<ev_now> function is usually faster and also often returns the timestamp 180you actually want to know. Also interesting is the combination of 181C<ev_now_update> and C<ev_now>. 182 183=item ev_sleep (ev_tstamp interval) 184 185Sleep for the given interval: The current thread will be blocked 186until either it is interrupted or the given time interval has 187passed (approximately - it might return a bit earlier even if not 188interrupted). Returns immediately if C<< interval <= 0 >>. 189 190Basically this is a sub-second-resolution C<sleep ()>. 191 192The range of the C<interval> is limited - libev only guarantees to work 193with sleep times of up to one day (C<< interval <= 86400 >>). 194 195=item int ev_version_major () 196 197=item int ev_version_minor () 198 199You can find out the major and minor ABI version numbers of the library 200you linked against by calling the functions C<ev_version_major> and 201C<ev_version_minor>. If you want, you can compare against the global 202symbols C<EV_VERSION_MAJOR> and C<EV_VERSION_MINOR>, which specify the 203version of the library your program was compiled against. 204 205These version numbers refer to the ABI version of the library, not the 206release version. 207 208Usually, it's a good idea to terminate if the major versions mismatch, 209as this indicates an incompatible change. Minor versions are usually 210compatible to older versions, so a larger minor version alone is usually 211not a problem. 212 213Example: Make sure we haven't accidentally been linked against the wrong 214version (note, however, that this will not detect other ABI mismatches, 215such as LFS or reentrancy). 216 217 assert (("libev version mismatch", 218 ev_version_major () == EV_VERSION_MAJOR 219 && ev_version_minor () >= EV_VERSION_MINOR)); 220 221=item unsigned int ev_supported_backends () 222 223Return the set of all backends (i.e. their corresponding C<EV_BACKEND_*> 224value) compiled into this binary of libev (independent of their 225availability on the system you are running on). See C<ev_default_loop> for 226a description of the set values. 227 228Example: make sure we have the epoll method, because yeah this is cool and 229a must have and can we have a torrent of it please!!!11 230 231 assert (("sorry, no epoll, no sex", 232 ev_supported_backends () & EVBACKEND_EPOLL)); 233 234=item unsigned int ev_recommended_backends () 235 236Return the set of all backends compiled into this binary of libev and 237also recommended for this platform, meaning it will work for most file 238descriptor types. This set is often smaller than the one returned by 239C<ev_supported_backends>, as for example kqueue is broken on most BSDs 240and will not be auto-detected unless you explicitly request it (assuming 241you know what you are doing). This is the set of backends that libev will 242probe for if you specify no backends explicitly. 243 244=item unsigned int ev_embeddable_backends () 245 246Returns the set of backends that are embeddable in other event loops. This 247value is platform-specific but can include backends not available on the 248current system. To find which embeddable backends might be supported on 249the current system, you would need to look at C<ev_embeddable_backends () 250& ev_supported_backends ()>, likewise for recommended ones. 251 252See the description of C<ev_embed> watchers for more info. 253 254=item ev_set_allocator (void *(*cb)(void *ptr, long size) throw ()) 255 256Sets the allocation function to use (the prototype is similar - the 257semantics are identical to the C<realloc> C89/SuS/POSIX function). It is 258used to allocate and free memory (no surprises here). If it returns zero 259when memory needs to be allocated (C<size != 0>), the library might abort 260or take some potentially destructive action. 261 262Since some systems (at least OpenBSD and Darwin) fail to implement 263correct C<realloc> semantics, libev will use a wrapper around the system 264C<realloc> and C<free> functions by default. 265 266You could override this function in high-availability programs to, say, 267free some memory if it cannot allocate memory, to use a special allocator, 268or even to sleep a while and retry until some memory is available. 269 270Example: Replace the libev allocator with one that waits a bit and then 271retries (example requires a standards-compliant C<realloc>). 272 273 static void * 274 persistent_realloc (void *ptr, size_t size) 275 { 276 for (;;) 277 { 278 void *newptr = realloc (ptr, size); 279 280 if (newptr) 281 return newptr; 282 283 sleep (60); 284 } 285 } 286 287 ... 288 ev_set_allocator (persistent_realloc); 289 290=item ev_set_syserr_cb (void (*cb)(const char *msg) throw ()) 291 292Set the callback function to call on a retryable system call error (such 293as failed select, poll, epoll_wait). The message is a printable string 294indicating the system call or subsystem causing the problem. If this 295callback is set, then libev will expect it to remedy the situation, no 296matter what, when it returns. That is, libev will generally retry the 297requested operation, or, if the condition doesn't go away, do bad stuff 298(such as abort). 299 300Example: This is basically the same thing that libev does internally, too. 301 302 static void 303 fatal_error (const char *msg) 304 { 305 perror (msg); 306 abort (); 307 } 308 309 ... 310 ev_set_syserr_cb (fatal_error); 311 312=item ev_feed_signal (int signum) 313 314This function can be used to "simulate" a signal receive. It is completely 315safe to call this function at any time, from any context, including signal 316handlers or random threads. 317 318Its main use is to customise signal handling in your process, especially 319in the presence of threads. For example, you could block signals 320by default in all threads (and specifying C<EVFLAG_NOSIGMASK> when 321creating any loops), and in one thread, use C<sigwait> or any other 322mechanism to wait for signals, then "deliver" them to libev by calling 323C<ev_feed_signal>. 324 325=back 326 327=head1 FUNCTIONS CONTROLLING EVENT LOOPS 328 329An event loop is described by a C<struct ev_loop *> (the C<struct> is 330I<not> optional in this case unless libev 3 compatibility is disabled, as 331libev 3 had an C<ev_loop> function colliding with the struct name). 332 333The library knows two types of such loops, the I<default> loop, which 334supports child process events, and dynamically created event loops which 335do not. 336 337=over 4 338 339=item struct ev_loop *ev_default_loop (unsigned int flags) 340 341This returns the "default" event loop object, which is what you should 342normally use when you just need "the event loop". Event loop objects and 343the C<flags> parameter are described in more detail in the entry for 344C<ev_loop_new>. 345 346If the default loop is already initialised then this function simply 347returns it (and ignores the flags. If that is troubling you, check 348C<ev_backend ()> afterwards). Otherwise it will create it with the given 349flags, which should almost always be C<0>, unless the caller is also the 350one calling C<ev_run> or otherwise qualifies as "the main program". 351 352If you don't know what event loop to use, use the one returned from this 353function (or via the C<EV_DEFAULT> macro). 354 355Note that this function is I<not> thread-safe, so if you want to use it 356from multiple threads, you have to employ some kind of mutex (note also 357that this case is unlikely, as loops cannot be shared easily between 358threads anyway). 359 360The default loop is the only loop that can handle C<ev_child> watchers, 361and to do this, it always registers a handler for C<SIGCHLD>. If this is 362a problem for your application you can either create a dynamic loop with 363C<ev_loop_new> which doesn't do that, or you can simply overwrite the 364C<SIGCHLD> signal handler I<after> calling C<ev_default_init>. 365 366Example: This is the most typical usage. 367 368 if (!ev_default_loop (0)) 369 fatal ("could not initialise libev, bad $LIBEV_FLAGS in environment?"); 370 371Example: Restrict libev to the select and poll backends, and do not allow 372environment settings to be taken into account: 373 374 ev_default_loop (EVBACKEND_POLL | EVBACKEND_SELECT | EVFLAG_NOENV); 375 376=item struct ev_loop *ev_loop_new (unsigned int flags) 377 378This will create and initialise a new event loop object. If the loop 379could not be initialised, returns false. 380 381This function is thread-safe, and one common way to use libev with 382threads is indeed to create one loop per thread, and using the default 383loop in the "main" or "initial" thread. 384 385The flags argument can be used to specify special behaviour or specific 386backends to use, and is usually specified as C<0> (or C<EVFLAG_AUTO>). 387 388The following flags are supported: 389 390=over 4 391 392=item C<EVFLAG_AUTO> 393 394The default flags value. Use this if you have no clue (it's the right 395thing, believe me). 396 397=item C<EVFLAG_NOENV> 398 399If this flag bit is or'ed into the flag value (or the program runs setuid 400or setgid) then libev will I<not> look at the environment variable 401C<LIBEV_FLAGS>. Otherwise (the default), this environment variable will 402override the flags completely if it is found in the environment. This is 403useful to try out specific backends to test their performance, to work 404around bugs, or to make libev threadsafe (accessing environment variables 405cannot be done in a threadsafe way, but usually it works if no other 406thread modifies them). 407 408=item C<EVFLAG_FORKCHECK> 409 410Instead of calling C<ev_loop_fork> manually after a fork, you can also 411make libev check for a fork in each iteration by enabling this flag. 412 413This works by calling C<getpid ()> on every iteration of the loop, 414and thus this might slow down your event loop if you do a lot of loop 415iterations and little real work, but is usually not noticeable (on my 416GNU/Linux system for example, C<getpid> is actually a simple 5-insn sequence 417without a system call and thus I<very> fast, but my GNU/Linux system also has 418C<pthread_atfork> which is even faster). 419 420The big advantage of this flag is that you can forget about fork (and 421forget about forgetting to tell libev about forking, although you still 422have to ignore C<SIGPIPE>) when you use this flag. 423 424This flag setting cannot be overridden or specified in the C<LIBEV_FLAGS> 425environment variable. 426 427=item C<EVFLAG_NOINOTIFY> 428 429When this flag is specified, then libev will not attempt to use the 430I<inotify> API for its C<ev_stat> watchers. Apart from debugging and 431testing, this flag can be useful to conserve inotify file descriptors, as 432otherwise each loop using C<ev_stat> watchers consumes one inotify handle. 433 434=item C<EVFLAG_SIGNALFD> 435 436When this flag is specified, then libev will attempt to use the 437I<signalfd> API for its C<ev_signal> (and C<ev_child>) watchers. This API 438delivers signals synchronously, which makes it both faster and might make 439it possible to get the queued signal data. It can also simplify signal 440handling with threads, as long as you properly block signals in your 441threads that are not interested in handling them. 442 443Signalfd will not be used by default as this changes your signal mask, and 444there are a lot of shoddy libraries and programs (glib's threadpool for 445example) that can't properly initialise their signal masks. 446 447=item C<EVFLAG_NOSIGMASK> 448 449When this flag is specified, then libev will avoid to modify the signal 450mask. Specifically, this means you have to make sure signals are unblocked 451when you want to receive them. 452 453This behaviour is useful when you want to do your own signal handling, or 454want to handle signals only in specific threads and want to avoid libev 455unblocking the signals. 456 457It's also required by POSIX in a threaded program, as libev calls 458C<sigprocmask>, whose behaviour is officially unspecified. 459 460This flag's behaviour will become the default in future versions of libev. 461 462=item C<EVBACKEND_SELECT> (value 1, portable select backend) 463 464This is your standard select(2) backend. Not I<completely> standard, as 465libev tries to roll its own fd_set with no limits on the number of fds, 466but if that fails, expect a fairly low limit on the number of fds when 467using this backend. It doesn't scale too well (O(highest_fd)), but its 468usually the fastest backend for a low number of (low-numbered :) fds. 469 470To get good performance out of this backend you need a high amount of 471parallelism (most of the file descriptors should be busy). If you are 472writing a server, you should C<accept ()> in a loop to accept as many 473connections as possible during one iteration. You might also want to have 474a look at C<ev_set_io_collect_interval ()> to increase the amount of 475readiness notifications you get per iteration. 476 477This backend maps C<EV_READ> to the C<readfds> set and C<EV_WRITE> to the 478C<writefds> set (and to work around Microsoft Windows bugs, also onto the 479C<exceptfds> set on that platform). 480 481=item C<EVBACKEND_POLL> (value 2, poll backend, available everywhere except on windows) 482 483And this is your standard poll(2) backend. It's more complicated 484than select, but handles sparse fds better and has no artificial 485limit on the number of fds you can use (except it will slow down 486considerably with a lot of inactive fds). It scales similarly to select, 487i.e. O(total_fds). See the entry for C<EVBACKEND_SELECT>, above, for 488performance tips. 489 490This backend maps C<EV_READ> to C<POLLIN | POLLERR | POLLHUP>, and 491C<EV_WRITE> to C<POLLOUT | POLLERR | POLLHUP>. 492 493=item C<EVBACKEND_EPOLL> (value 4, Linux) 494 495Use the linux-specific epoll(7) interface (for both pre- and post-2.6.9 496kernels). 497 498For few fds, this backend is a bit little slower than poll and select, but 499it scales phenomenally better. While poll and select usually scale like 500O(total_fds) where total_fds is the total number of fds (or the highest 501fd), epoll scales either O(1) or O(active_fds). 502 503The epoll mechanism deserves honorable mention as the most misdesigned 504of the more advanced event mechanisms: mere annoyances include silently 505dropping file descriptors, requiring a system call per change per file 506descriptor (and unnecessary guessing of parameters), problems with dup, 507returning before the timeout value, resulting in additional iterations 508(and only giving 5ms accuracy while select on the same platform gives 5090.1ms) and so on. The biggest issue is fork races, however - if a program 510forks then I<both> parent and child process have to recreate the epoll 511set, which can take considerable time (one syscall per file descriptor) 512and is of course hard to detect. 513 514Epoll is also notoriously buggy - embedding epoll fds I<should> work, 515but of course I<doesn't>, and epoll just loves to report events for 516totally I<different> file descriptors (even already closed ones, so 517one cannot even remove them from the set) than registered in the set 518(especially on SMP systems). Libev tries to counter these spurious 519notifications by employing an additional generation counter and comparing 520that against the events to filter out spurious ones, recreating the set 521when required. Epoll also erroneously rounds down timeouts, but gives you 522no way to know when and by how much, so sometimes you have to busy-wait 523because epoll returns immediately despite a nonzero timeout. And last 524not least, it also refuses to work with some file descriptors which work 525perfectly fine with C<select> (files, many character devices...). 526 527Epoll is truly the train wreck among event poll mechanisms, a frankenpoll, 528cobbled together in a hurry, no thought to design or interaction with 529others. Oh, the pain, will it ever stop... 530 531While stopping, setting and starting an I/O watcher in the same iteration 532will result in some caching, there is still a system call per such 533incident (because the same I<file descriptor> could point to a different 534I<file description> now), so its best to avoid that. Also, C<dup ()>'ed 535file descriptors might not work very well if you register events for both 536file descriptors. 537 538Best performance from this backend is achieved by not unregistering all 539watchers for a file descriptor until it has been closed, if possible, 540i.e. keep at least one watcher active per fd at all times. Stopping and 541starting a watcher (without re-setting it) also usually doesn't cause 542extra overhead. A fork can both result in spurious notifications as well 543as in libev having to destroy and recreate the epoll object, which can 544take considerable time and thus should be avoided. 545 546All this means that, in practice, C<EVBACKEND_SELECT> can be as fast or 547faster than epoll for maybe up to a hundred file descriptors, depending on 548the usage. So sad. 549 550While nominally embeddable in other event loops, this feature is broken in 551all kernel versions tested so far. 552 553This backend maps C<EV_READ> and C<EV_WRITE> in the same way as 554C<EVBACKEND_POLL>. 555 556=item C<EVBACKEND_KQUEUE> (value 8, most BSD clones) 557 558Kqueue deserves special mention, as at the time of this writing, it 559was broken on all BSDs except NetBSD (usually it doesn't work reliably 560with anything but sockets and pipes, except on Darwin, where of course 561it's completely useless). Unlike epoll, however, whose brokenness 562is by design, these kqueue bugs can (and eventually will) be fixed 563without API changes to existing programs. For this reason it's not being 564"auto-detected" unless you explicitly specify it in the flags (i.e. using 565C<EVBACKEND_KQUEUE>) or libev was compiled on a known-to-be-good (-enough) 566system like NetBSD. 567 568You still can embed kqueue into a normal poll or select backend and use it 569only for sockets (after having made sure that sockets work with kqueue on 570the target platform). See C<ev_embed> watchers for more info. 571 572It scales in the same way as the epoll backend, but the interface to the 573kernel is more efficient (which says nothing about its actual speed, of 574course). While stopping, setting and starting an I/O watcher does never 575cause an extra system call as with C<EVBACKEND_EPOLL>, it still adds up to 576two event changes per incident. Support for C<fork ()> is very bad (you 577might have to leak fd's on fork, but it's more sane than epoll) and it 578drops fds silently in similarly hard-to-detect cases. 579 580This backend usually performs well under most conditions. 581 582While nominally embeddable in other event loops, this doesn't work 583everywhere, so you might need to test for this. And since it is broken 584almost everywhere, you should only use it when you have a lot of sockets 585(for which it usually works), by embedding it into another event loop 586(e.g. C<EVBACKEND_SELECT> or C<EVBACKEND_POLL> (but C<poll> is of course 587also broken on OS X)) and, did I mention it, using it only for sockets. 588 589This backend maps C<EV_READ> into an C<EVFILT_READ> kevent with 590C<NOTE_EOF>, and C<EV_WRITE> into an C<EVFILT_WRITE> kevent with 591C<NOTE_EOF>. 592 593=item C<EVBACKEND_DEVPOLL> (value 16, Solaris 8) 594 595This is not implemented yet (and might never be, unless you send me an 596implementation). According to reports, C</dev/poll> only supports sockets 597and is not embeddable, which would limit the usefulness of this backend 598immensely. 599 600=item C<EVBACKEND_PORT> (value 32, Solaris 10) 601 602This uses the Solaris 10 event port mechanism. As with everything on Solaris, 603it's really slow, but it still scales very well (O(active_fds)). 604 605While this backend scales well, it requires one system call per active 606file descriptor per loop iteration. For small and medium numbers of file 607descriptors a "slow" C<EVBACKEND_SELECT> or C<EVBACKEND_POLL> backend 608might perform better. 609 610On the positive side, this backend actually performed fully to 611specification in all tests and is fully embeddable, which is a rare feat 612among the OS-specific backends (I vastly prefer correctness over speed 613hacks). 614 615On the negative side, the interface is I<bizarre> - so bizarre that 616even sun itself gets it wrong in their code examples: The event polling 617function sometimes returns events to the caller even though an error 618occurred, but with no indication whether it has done so or not (yes, it's 619even documented that way) - deadly for edge-triggered interfaces where you 620absolutely have to know whether an event occurred or not because you have 621to re-arm the watcher. 622 623Fortunately libev seems to be able to work around these idiocies. 624 625This backend maps C<EV_READ> and C<EV_WRITE> in the same way as 626C<EVBACKEND_POLL>. 627 628=item C<EVBACKEND_ALL> 629 630Try all backends (even potentially broken ones that wouldn't be tried 631with C<EVFLAG_AUTO>). Since this is a mask, you can do stuff such as 632C<EVBACKEND_ALL & ~EVBACKEND_KQUEUE>. 633 634It is definitely not recommended to use this flag, use whatever 635C<ev_recommended_backends ()> returns, or simply do not specify a backend 636at all. 637 638=item C<EVBACKEND_MASK> 639 640Not a backend at all, but a mask to select all backend bits from a 641C<flags> value, in case you want to mask out any backends from a flags 642value (e.g. when modifying the C<LIBEV_FLAGS> environment variable). 643 644=back 645 646If one or more of the backend flags are or'ed into the flags value, 647then only these backends will be tried (in the reverse order as listed 648here). If none are specified, all backends in C<ev_recommended_backends 649()> will be tried. 650 651Example: Try to create a event loop that uses epoll and nothing else. 652 653 struct ev_loop *epoller = ev_loop_new (EVBACKEND_EPOLL | EVFLAG_NOENV); 654 if (!epoller) 655 fatal ("no epoll found here, maybe it hides under your chair"); 656 657Example: Use whatever libev has to offer, but make sure that kqueue is 658used if available. 659 660 struct ev_loop *loop = ev_loop_new (ev_recommended_backends () | EVBACKEND_KQUEUE); 661 662=item ev_loop_destroy (loop) 663 664Destroys an event loop object (frees all memory and kernel state 665etc.). None of the active event watchers will be stopped in the normal 666sense, so e.g. C<ev_is_active> might still return true. It is your 667responsibility to either stop all watchers cleanly yourself I<before> 668calling this function, or cope with the fact afterwards (which is usually 669the easiest thing, you can just ignore the watchers and/or C<free ()> them 670for example). 671 672Note that certain global state, such as signal state (and installed signal 673handlers), will not be freed by this function, and related watchers (such 674as signal and child watchers) would need to be stopped manually. 675 676This function is normally used on loop objects allocated by 677C<ev_loop_new>, but it can also be used on the default loop returned by 678C<ev_default_loop>, in which case it is not thread-safe. 679 680Note that it is not advisable to call this function on the default loop 681except in the rare occasion where you really need to free its resources. 682If you need dynamically allocated loops it is better to use C<ev_loop_new> 683and C<ev_loop_destroy>. 684 685=item ev_loop_fork (loop) 686 687This function sets a flag that causes subsequent C<ev_run> iterations 688to reinitialise the kernel state for backends that have one. Despite 689the name, you can call it anytime you are allowed to start or stop 690watchers (except inside an C<ev_prepare> callback), but it makes most 691sense after forking, in the child process. You I<must> call it (or use 692C<EVFLAG_FORKCHECK>) in the child before resuming or calling C<ev_run>. 693 694In addition, if you want to reuse a loop (via this function or 695C<EVFLAG_FORKCHECK>), you I<also> have to ignore C<SIGPIPE>. 696 697Again, you I<have> to call it on I<any> loop that you want to re-use after 698a fork, I<even if you do not plan to use the loop in the parent>. This is 699because some kernel interfaces *cough* I<kqueue> *cough* do funny things 700during fork. 701 702On the other hand, you only need to call this function in the child 703process if and only if you want to use the event loop in the child. If 704you just fork+exec or create a new loop in the child, you don't have to 705call it at all (in fact, C<epoll> is so badly broken that it makes a 706difference, but libev will usually detect this case on its own and do a 707costly reset of the backend). 708 709The function itself is quite fast and it's usually not a problem to call 710it just in case after a fork. 711 712Example: Automate calling C<ev_loop_fork> on the default loop when 713using pthreads. 714 715 static void 716 post_fork_child (void) 717 { 718 ev_loop_fork (EV_DEFAULT); 719 } 720 721 ... 722 pthread_atfork (0, 0, post_fork_child); 723 724=item int ev_is_default_loop (loop) 725 726Returns true when the given loop is, in fact, the default loop, and false 727otherwise. 728 729=item unsigned int ev_iteration (loop) 730 731Returns the current iteration count for the event loop, which is identical 732to the number of times libev did poll for new events. It starts at C<0> 733and happily wraps around with enough iterations. 734 735This value can sometimes be useful as a generation counter of sorts (it 736"ticks" the number of loop iterations), as it roughly corresponds with 737C<ev_prepare> and C<ev_check> calls - and is incremented between the 738prepare and check phases. 739 740=item unsigned int ev_depth (loop) 741 742Returns the number of times C<ev_run> was entered minus the number of 743times C<ev_run> was exited normally, in other words, the recursion depth. 744 745Outside C<ev_run>, this number is zero. In a callback, this number is 746C<1>, unless C<ev_run> was invoked recursively (or from another thread), 747in which case it is higher. 748 749Leaving C<ev_run> abnormally (setjmp/longjmp, cancelling the thread, 750throwing an exception etc.), doesn't count as "exit" - consider this 751as a hint to avoid such ungentleman-like behaviour unless it's really 752convenient, in which case it is fully supported. 753 754=item unsigned int ev_backend (loop) 755 756Returns one of the C<EVBACKEND_*> flags indicating the event backend in 757use. 758 759=item ev_tstamp ev_now (loop) 760 761Returns the current "event loop time", which is the time the event loop 762received events and started processing them. This timestamp does not 763change as long as callbacks are being processed, and this is also the base 764time used for relative timers. You can treat it as the timestamp of the 765event occurring (or more correctly, libev finding out about it). 766 767=item ev_now_update (loop) 768 769Establishes the current time by querying the kernel, updating the time 770returned by C<ev_now ()> in the progress. This is a costly operation and 771is usually done automatically within C<ev_run ()>. 772 773This function is rarely useful, but when some event callback runs for a 774very long time without entering the event loop, updating libev's idea of 775the current time is a good idea. 776 777See also L</The special problem of time updates> in the C<ev_timer> section. 778 779=item ev_suspend (loop) 780 781=item ev_resume (loop) 782 783These two functions suspend and resume an event loop, for use when the 784loop is not used for a while and timeouts should not be processed. 785 786A typical use case would be an interactive program such as a game: When 787the user presses C<^Z> to suspend the game and resumes it an hour later it 788would be best to handle timeouts as if no time had actually passed while 789the program was suspended. This can be achieved by calling C<ev_suspend> 790in your C<SIGTSTP> handler, sending yourself a C<SIGSTOP> and calling 791C<ev_resume> directly afterwards to resume timer processing. 792 793Effectively, all C<ev_timer> watchers will be delayed by the time spend 794between C<ev_suspend> and C<ev_resume>, and all C<ev_periodic> watchers 795will be rescheduled (that is, they will lose any events that would have 796occurred while suspended). 797 798After calling C<ev_suspend> you B<must not> call I<any> function on the 799given loop other than C<ev_resume>, and you B<must not> call C<ev_resume> 800without a previous call to C<ev_suspend>. 801 802Calling C<ev_suspend>/C<ev_resume> has the side effect of updating the 803event loop time (see C<ev_now_update>). 804 805=item bool ev_run (loop, int flags) 806 807Finally, this is it, the event handler. This function usually is called 808after you have initialised all your watchers and you want to start 809handling events. It will ask the operating system for any new events, call 810the watcher callbacks, and then repeat the whole process indefinitely: This 811is why event loops are called I<loops>. 812 813If the flags argument is specified as C<0>, it will keep handling events 814until either no event watchers are active anymore or C<ev_break> was 815called. 816 817The return value is false if there are no more active watchers (which 818usually means "all jobs done" or "deadlock"), and true in all other cases 819(which usually means " you should call C<ev_run> again"). 820 821Please note that an explicit C<ev_break> is usually better than 822relying on all watchers to be stopped when deciding when a program has 823finished (especially in interactive programs), but having a program 824that automatically loops as long as it has to and no longer by virtue 825of relying on its watchers stopping correctly, that is truly a thing of 826beauty. 827 828This function is I<mostly> exception-safe - you can break out of a 829C<ev_run> call by calling C<longjmp> in a callback, throwing a C++ 830exception and so on. This does not decrement the C<ev_depth> value, nor 831will it clear any outstanding C<EVBREAK_ONE> breaks. 832 833A flags value of C<EVRUN_NOWAIT> will look for new events, will handle 834those events and any already outstanding ones, but will not wait and 835block your process in case there are no events and will return after one 836iteration of the loop. This is sometimes useful to poll and handle new 837events while doing lengthy calculations, to keep the program responsive. 838 839A flags value of C<EVRUN_ONCE> will look for new events (waiting if 840necessary) and will handle those and any already outstanding ones. It 841will block your process until at least one new event arrives (which could 842be an event internal to libev itself, so there is no guarantee that a 843user-registered callback will be called), and will return after one 844iteration of the loop. 845 846This is useful if you are waiting for some external event in conjunction 847with something not expressible using other libev watchers (i.e. "roll your 848own C<ev_run>"). However, a pair of C<ev_prepare>/C<ev_check> watchers is 849usually a better approach for this kind of thing. 850 851Here are the gory details of what C<ev_run> does (this is for your 852understanding, not a guarantee that things will work exactly like this in 853future versions): 854 855 - Increment loop depth. 856 - Reset the ev_break status. 857 - Before the first iteration, call any pending watchers. 858 LOOP: 859 - If EVFLAG_FORKCHECK was used, check for a fork. 860 - If a fork was detected (by any means), queue and call all fork watchers. 861 - Queue and call all prepare watchers. 862 - If ev_break was called, goto FINISH. 863 - If we have been forked, detach and recreate the kernel state 864 as to not disturb the other process. 865 - Update the kernel state with all outstanding changes. 866 - Update the "event loop time" (ev_now ()). 867 - Calculate for how long to sleep or block, if at all 868 (active idle watchers, EVRUN_NOWAIT or not having 869 any active watchers at all will result in not sleeping). 870 - Sleep if the I/O and timer collect interval say so. 871 - Increment loop iteration counter. 872 - Block the process, waiting for any events. 873 - Queue all outstanding I/O (fd) events. 874 - Update the "event loop time" (ev_now ()), and do time jump adjustments. 875 - Queue all expired timers. 876 - Queue all expired periodics. 877 - Queue all idle watchers with priority higher than that of pending events. 878 - Queue all check watchers. 879 - Call all queued watchers in reverse order (i.e. check watchers first). 880 Signals and child watchers are implemented as I/O watchers, and will 881 be handled here by queueing them when their watcher gets executed. 882 - If ev_break has been called, or EVRUN_ONCE or EVRUN_NOWAIT 883 were used, or there are no active watchers, goto FINISH, otherwise 884 continue with step LOOP. 885 FINISH: 886 - Reset the ev_break status iff it was EVBREAK_ONE. 887 - Decrement the loop depth. 888 - Return. 889 890Example: Queue some jobs and then loop until no events are outstanding 891anymore. 892 893 ... queue jobs here, make sure they register event watchers as long 894 ... as they still have work to do (even an idle watcher will do..) 895 ev_run (my_loop, 0); 896 ... jobs done or somebody called break. yeah! 897 898=item ev_break (loop, how) 899 900Can be used to make a call to C<ev_run> return early (but only after it 901has processed all outstanding events). The C<how> argument must be either 902C<EVBREAK_ONE>, which will make the innermost C<ev_run> call return, or 903C<EVBREAK_ALL>, which will make all nested C<ev_run> calls return. 904 905This "break state" will be cleared on the next call to C<ev_run>. 906 907It is safe to call C<ev_break> from outside any C<ev_run> calls, too, in 908which case it will have no effect. 909 910=item ev_ref (loop) 911 912=item ev_unref (loop) 913 914Ref/unref can be used to add or remove a reference count on the event 915loop: Every watcher keeps one reference, and as long as the reference 916count is nonzero, C<ev_run> will not return on its own. 917 918This is useful when you have a watcher that you never intend to 919unregister, but that nevertheless should not keep C<ev_run> from 920returning. In such a case, call C<ev_unref> after starting, and C<ev_ref> 921before stopping it. 922 923As an example, libev itself uses this for its internal signal pipe: It 924is not visible to the libev user and should not keep C<ev_run> from 925exiting if no event watchers registered by it are active. It is also an 926excellent way to do this for generic recurring timers or from within 927third-party libraries. Just remember to I<unref after start> and I<ref 928before stop> (but only if the watcher wasn't active before, or was active 929before, respectively. Note also that libev might stop watchers itself 930(e.g. non-repeating timers) in which case you have to C<ev_ref> 931in the callback). 932 933Example: Create a signal watcher, but keep it from keeping C<ev_run> 934running when nothing else is active. 935 936 ev_signal exitsig; 937 ev_signal_init (&exitsig, sig_cb, SIGINT); 938 ev_signal_start (loop, &exitsig); 939 ev_unref (loop); 940 941Example: For some weird reason, unregister the above signal handler again. 942 943 ev_ref (loop); 944 ev_signal_stop (loop, &exitsig); 945 946=item ev_set_io_collect_interval (loop, ev_tstamp interval) 947 948=item ev_set_timeout_collect_interval (loop, ev_tstamp interval) 949 950These advanced functions influence the time that libev will spend waiting 951for events. Both time intervals are by default C<0>, meaning that libev 952will try to invoke timer/periodic callbacks and I/O callbacks with minimum 953latency. 954 955Setting these to a higher value (the C<interval> I<must> be >= C<0>) 956allows libev to delay invocation of I/O and timer/periodic callbacks 957to increase efficiency of loop iterations (or to increase power-saving 958opportunities). 959 960The idea is that sometimes your program runs just fast enough to handle 961one (or very few) event(s) per loop iteration. While this makes the 962program responsive, it also wastes a lot of CPU time to poll for new 963events, especially with backends like C<select ()> which have a high 964overhead for the actual polling but can deliver many events at once. 965 966By setting a higher I<io collect interval> you allow libev to spend more 967time collecting I/O events, so you can handle more events per iteration, 968at the cost of increasing latency. Timeouts (both C<ev_periodic> and 969C<ev_timer>) will not be affected. Setting this to a non-null value will 970introduce an additional C<ev_sleep ()> call into most loop iterations. The 971sleep time ensures that libev will not poll for I/O events more often then 972once per this interval, on average (as long as the host time resolution is 973good enough). 974 975Likewise, by setting a higher I<timeout collect interval> you allow libev 976to spend more time collecting timeouts, at the expense of increased 977latency/jitter/inexactness (the watcher callback will be called 978later). C<ev_io> watchers will not be affected. Setting this to a non-null 979value will not introduce any overhead in libev. 980 981Many (busy) programs can usually benefit by setting the I/O collect 982interval to a value near C<0.1> or so, which is often enough for 983interactive servers (of course not for games), likewise for timeouts. It 984usually doesn't make much sense to set it to a lower value than C<0.01>, 985as this approaches the timing granularity of most systems. Note that if 986you do transactions with the outside world and you can't increase the 987parallelity, then this setting will limit your transaction rate (if you 988need to poll once per transaction and the I/O collect interval is 0.01, 989then you can't do more than 100 transactions per second). 990 991Setting the I<timeout collect interval> can improve the opportunity for 992saving power, as the program will "bundle" timer callback invocations that 993are "near" in time together, by delaying some, thus reducing the number of 994times the process sleeps and wakes up again. Another useful technique to 995reduce iterations/wake-ups is to use C<ev_periodic> watchers and make sure 996they fire on, say, one-second boundaries only. 997 998Example: we only need 0.1s timeout granularity, and we wish not to poll 999more often than 100 times per second: 1000 1001 ev_set_timeout_collect_interval (EV_DEFAULT_UC_ 0.1); 1002 ev_set_io_collect_interval (EV_DEFAULT_UC_ 0.01); 1003 1004=item ev_invoke_pending (loop) 1005 1006This call will simply invoke all pending watchers while resetting their 1007pending state. Normally, C<ev_run> does this automatically when required, 1008but when overriding the invoke callback this call comes handy. This 1009function can be invoked from a watcher - this can be useful for example 1010when you want to do some lengthy calculation and want to pass further 1011event handling to another thread (you still have to make sure only one 1012thread executes within C<ev_invoke_pending> or C<ev_run> of course). 1013 1014=item int ev_pending_count (loop) 1015 1016Returns the number of pending watchers - zero indicates that no watchers 1017are pending. 1018 1019=item ev_set_invoke_pending_cb (loop, void (*invoke_pending_cb)(EV_P)) 1020 1021This overrides the invoke pending functionality of the loop: Instead of 1022invoking all pending watchers when there are any, C<ev_run> will call 1023this callback instead. This is useful, for example, when you want to 1024invoke the actual watchers inside another context (another thread etc.). 1025 1026If you want to reset the callback, use C<ev_invoke_pending> as new 1027callback. 1028 1029=item ev_set_loop_release_cb (loop, void (*release)(EV_P) throw (), void (*acquire)(EV_P) throw ()) 1030 1031Sometimes you want to share the same loop between multiple threads. This 1032can be done relatively simply by putting mutex_lock/unlock calls around 1033each call to a libev function. 1034 1035However, C<ev_run> can run an indefinite time, so it is not feasible 1036to wait for it to return. One way around this is to wake up the event 1037loop via C<ev_break> and C<ev_async_send>, another way is to set these 1038I<release> and I<acquire> callbacks on the loop. 1039 1040When set, then C<release> will be called just before the thread is 1041suspended waiting for new events, and C<acquire> is called just 1042afterwards. 1043 1044Ideally, C<release> will just call your mutex_unlock function, and 1045C<acquire> will just call the mutex_lock function again. 1046 1047While event loop modifications are allowed between invocations of 1048C<release> and C<acquire> (that's their only purpose after all), no 1049modifications done will affect the event loop, i.e. adding watchers will 1050have no effect on the set of file descriptors being watched, or the time 1051waited. Use an C<ev_async> watcher to wake up C<ev_run> when you want it 1052to take note of any changes you made. 1053 1054In theory, threads executing C<ev_run> will be async-cancel safe between 1055invocations of C<release> and C<acquire>. 1056 1057See also the locking example in the C<THREADS> section later in this 1058document. 1059 1060=item ev_set_userdata (loop, void *data) 1061 1062=item void *ev_userdata (loop) 1063 1064Set and retrieve a single C<void *> associated with a loop. When 1065C<ev_set_userdata> has never been called, then C<ev_userdata> returns 1066C<0>. 1067 1068These two functions can be used to associate arbitrary data with a loop, 1069and are intended solely for the C<invoke_pending_cb>, C<release> and 1070C<acquire> callbacks described above, but of course can be (ab-)used for 1071any other purpose as well. 1072 1073=item ev_verify (loop) 1074 1075This function only does something when C<EV_VERIFY> support has been 1076compiled in, which is the default for non-minimal builds. It tries to go 1077through all internal structures and checks them for validity. If anything 1078is found to be inconsistent, it will print an error message to standard 1079error and call C<abort ()>. 1080 1081This can be used to catch bugs inside libev itself: under normal 1082circumstances, this function will never abort as of course libev keeps its 1083data structures consistent. 1084 1085=back 1086 1087 1088=head1 ANATOMY OF A WATCHER 1089 1090In the following description, uppercase C<TYPE> in names stands for the 1091watcher type, e.g. C<ev_TYPE_start> can mean C<ev_timer_start> for timer 1092watchers and C<ev_io_start> for I/O watchers. 1093 1094A watcher is an opaque structure that you allocate and register to record 1095your interest in some event. To make a concrete example, imagine you want 1096to wait for STDIN to become readable, you would create an C<ev_io> watcher 1097for that: 1098 1099 static void my_cb (struct ev_loop *loop, ev_io *w, int revents) 1100 { 1101 ev_io_stop (w); 1102 ev_break (loop, EVBREAK_ALL); 1103 } 1104 1105 struct ev_loop *loop = ev_default_loop (0); 1106 1107 ev_io stdin_watcher; 1108 1109 ev_init (&stdin_watcher, my_cb); 1110 ev_io_set (&stdin_watcher, STDIN_FILENO, EV_READ); 1111 ev_io_start (loop, &stdin_watcher); 1112 1113 ev_run (loop, 0); 1114 1115As you can see, you are responsible for allocating the memory for your 1116watcher structures (and it is I<usually> a bad idea to do this on the 1117stack). 1118 1119Each watcher has an associated watcher structure (called C<struct ev_TYPE> 1120or simply C<ev_TYPE>, as typedefs are provided for all watcher structs). 1121 1122Each watcher structure must be initialised by a call to C<ev_init (watcher 1123*, callback)>, which expects a callback to be provided. This callback is 1124invoked each time the event occurs (or, in the case of I/O watchers, each 1125time the event loop detects that the file descriptor given is readable 1126and/or writable). 1127 1128Each watcher type further has its own C<< ev_TYPE_set (watcher *, ...) >> 1129macro to configure it, with arguments specific to the watcher type. There 1130is also a macro to combine initialisation and setting in one call: C<< 1131ev_TYPE_init (watcher *, callback, ...) >>. 1132 1133To make the watcher actually watch out for events, you have to start it 1134with a watcher-specific start function (C<< ev_TYPE_start (loop, watcher 1135*) >>), and you can stop watching for events at any time by calling the 1136corresponding stop function (C<< ev_TYPE_stop (loop, watcher *) >>. 1137 1138As long as your watcher is active (has been started but not stopped) you 1139must not touch the values stored in it. Most specifically you must never 1140reinitialise it or call its C<ev_TYPE_set> macro. 1141 1142Each and every callback receives the event loop pointer as first, the 1143registered watcher structure as second, and a bitset of received events as 1144third argument. 1145 1146The received events usually include a single bit per event type received 1147(you can receive multiple events at the same time). The possible bit masks 1148are: 1149 1150=over 4 1151 1152=item C<EV_READ> 1153 1154=item C<EV_WRITE> 1155 1156The file descriptor in the C<ev_io> watcher has become readable and/or 1157writable. 1158 1159=item C<EV_TIMER> 1160 1161The C<ev_timer> watcher has timed out. 1162 1163=item C<EV_PERIODIC> 1164 1165The C<ev_periodic> watcher has timed out. 1166 1167=item C<EV_SIGNAL> 1168 1169The signal specified in the C<ev_signal> watcher has been received by a thread. 1170 1171=item C<EV_CHILD> 1172 1173The pid specified in the C<ev_child> watcher has received a status change. 1174 1175=item C<EV_STAT> 1176 1177The path specified in the C<ev_stat> watcher changed its attributes somehow. 1178 1179=item C<EV_IDLE> 1180 1181The C<ev_idle> watcher has determined that you have nothing better to do. 1182 1183=item C<EV_PREPARE> 1184 1185=item C<EV_CHECK> 1186 1187All C<ev_prepare> watchers are invoked just I<before> C<ev_run> starts to 1188gather new events, and all C<ev_check> watchers are queued (not invoked) 1189just after C<ev_run> has gathered them, but before it queues any callbacks 1190for any received events. That means C<ev_prepare> watchers are the last 1191watchers invoked before the event loop sleeps or polls for new events, and 1192C<ev_check> watchers will be invoked before any other watchers of the same 1193or lower priority within an event loop iteration. 1194 1195Callbacks of both watcher types can start and stop as many watchers as 1196they want, and all of them will be taken into account (for example, a 1197C<ev_prepare> watcher might start an idle watcher to keep C<ev_run> from 1198blocking). 1199 1200=item C<EV_EMBED> 1201 1202The embedded event loop specified in the C<ev_embed> watcher needs attention. 1203 1204=item C<EV_FORK> 1205 1206The event loop has been resumed in the child process after fork (see 1207C<ev_fork>). 1208 1209=item C<EV_CLEANUP> 1210 1211The event loop is about to be destroyed (see C<ev_cleanup>). 1212 1213=item C<EV_ASYNC> 1214 1215The given async watcher has been asynchronously notified (see C<ev_async>). 1216 1217=item C<EV_CUSTOM> 1218 1219Not ever sent (or otherwise used) by libev itself, but can be freely used 1220by libev users to signal watchers (e.g. via C<ev_feed_event>). 1221 1222=item C<EV_ERROR> 1223 1224An unspecified error has occurred, the watcher has been stopped. This might 1225happen because the watcher could not be properly started because libev 1226ran out of memory, a file descriptor was found to be closed or any other 1227problem. Libev considers these application bugs. 1228 1229You best act on it by reporting the problem and somehow coping with the 1230watcher being stopped. Note that well-written programs should not receive 1231an error ever, so when your watcher receives it, this usually indicates a 1232bug in your program. 1233 1234Libev will usually signal a few "dummy" events together with an error, for 1235example it might indicate that a fd is readable or writable, and if your 1236callbacks is well-written it can just attempt the operation and cope with 1237the error from read() or write(). This will not work in multi-threaded 1238programs, though, as the fd could already be closed and reused for another 1239thing, so beware. 1240 1241=back 1242 1243=head2 GENERIC WATCHER FUNCTIONS 1244 1245=over 4 1246 1247=item C<ev_init> (ev_TYPE *watcher, callback) 1248 1249This macro initialises the generic portion of a watcher. The contents 1250of the watcher object can be arbitrary (so C<malloc> will do). Only 1251the generic parts of the watcher are initialised, you I<need> to call 1252the type-specific C<ev_TYPE_set> macro afterwards to initialise the 1253type-specific parts. For each type there is also a C<ev_TYPE_init> macro 1254which rolls both calls into one. 1255 1256You can reinitialise a watcher at any time as long as it has been stopped 1257(or never started) and there are no pending events outstanding. 1258 1259The callback is always of type C<void (*)(struct ev_loop *loop, ev_TYPE *watcher, 1260int revents)>. 1261 1262Example: Initialise an C<ev_io> watcher in two steps. 1263 1264 ev_io w; 1265 ev_init (&w, my_cb); 1266 ev_io_set (&w, STDIN_FILENO, EV_READ); 1267 1268=item C<ev_TYPE_set> (ev_TYPE *watcher, [args]) 1269 1270This macro initialises the type-specific parts of a watcher. You need to 1271call C<ev_init> at least once before you call this macro, but you can 1272call C<ev_TYPE_set> any number of times. You must not, however, call this 1273macro on a watcher that is active (it can be pending, however, which is a 1274difference to the C<ev_init> macro). 1275 1276Although some watcher types do not have type-specific arguments 1277(e.g. C<ev_prepare>) you still need to call its C<set> macro. 1278 1279See C<ev_init>, above, for an example. 1280 1281=item C<ev_TYPE_init> (ev_TYPE *watcher, callback, [args]) 1282 1283This convenience macro rolls both C<ev_init> and C<ev_TYPE_set> macro 1284calls into a single call. This is the most convenient method to initialise 1285a watcher. The same limitations apply, of course. 1286 1287Example: Initialise and set an C<ev_io> watcher in one step. 1288 1289 ev_io_init (&w, my_cb, STDIN_FILENO, EV_READ); 1290 1291=item C<ev_TYPE_start> (loop, ev_TYPE *watcher) 1292 1293Starts (activates) the given watcher. Only active watchers will receive 1294events. If the watcher is already active nothing will happen. 1295 1296Example: Start the C<ev_io> watcher that is being abused as example in this 1297whole section. 1298 1299 ev_io_start (EV_DEFAULT_UC, &w); 1300 1301=item C<ev_TYPE_stop> (loop, ev_TYPE *watcher) 1302 1303Stops the given watcher if active, and clears the pending status (whether 1304the watcher was active or not). 1305 1306It is possible that stopped watchers are pending - for example, 1307non-repeating timers are being stopped when they become pending - but 1308calling C<ev_TYPE_stop> ensures that the watcher is neither active nor 1309pending. If you want to free or reuse the memory used by the watcher it is 1310therefore a good idea to always call its C<ev_TYPE_stop> function. 1311 1312=item bool ev_is_active (ev_TYPE *watcher) 1313 1314Returns a true value iff the watcher is active (i.e. it has been started 1315and not yet been stopped). As long as a watcher is active you must not modify 1316it. 1317 1318=item bool ev_is_pending (ev_TYPE *watcher) 1319 1320Returns a true value iff the watcher is pending, (i.e. it has outstanding 1321events but its callback has not yet been invoked). As long as a watcher 1322is pending (but not active) you must not call an init function on it (but 1323C<ev_TYPE_set> is safe), you must not change its priority, and you must 1324make sure the watcher is available to libev (e.g. you cannot C<free ()> 1325it). 1326 1327=item callback ev_cb (ev_TYPE *watcher) 1328 1329Returns the callback currently set on the watcher. 1330 1331=item ev_set_cb (ev_TYPE *watcher, callback) 1332 1333Change the callback. You can change the callback at virtually any time 1334(modulo threads). 1335 1336=item ev_set_priority (ev_TYPE *watcher, int priority) 1337 1338=item int ev_priority (ev_TYPE *watcher) 1339 1340Set and query the priority of the watcher. The priority is a small 1341integer between C<EV_MAXPRI> (default: C<2>) and C<EV_MINPRI> 1342(default: C<-2>). Pending watchers with higher priority will be invoked 1343before watchers with lower priority, but priority will not keep watchers 1344from being executed (except for C<ev_idle> watchers). 1345 1346If you need to suppress invocation when higher priority events are pending 1347you need to look at C<ev_idle> watchers, which provide this functionality. 1348 1349You I<must not> change the priority of a watcher as long as it is active or 1350pending. 1351 1352Setting a priority outside the range of C<EV_MINPRI> to C<EV_MAXPRI> is 1353fine, as long as you do not mind that the priority value you query might 1354or might not have been clamped to the valid range. 1355 1356The default priority used by watchers when no priority has been set is 1357always C<0>, which is supposed to not be too high and not be too low :). 1358 1359See L</WATCHER PRIORITY MODELS>, below, for a more thorough treatment of 1360priorities. 1361 1362=item ev_invoke (loop, ev_TYPE *watcher, int revents) 1363 1364Invoke the C<watcher> with the given C<loop> and C<revents>. Neither 1365C<loop> nor C<revents> need to be valid as long as the watcher callback 1366can deal with that fact, as both are simply passed through to the 1367callback. 1368 1369=item int ev_clear_pending (loop, ev_TYPE *watcher) 1370 1371If the watcher is pending, this function clears its pending status and 1372returns its C<revents> bitset (as if its callback was invoked). If the 1373watcher isn't pending it does nothing and returns C<0>. 1374 1375Sometimes it can be useful to "poll" a watcher instead of waiting for its 1376callback to be invoked, which can be accomplished with this function. 1377 1378=item ev_feed_event (loop, ev_TYPE *watcher, int revents) 1379 1380Feeds the given event set into the event loop, as if the specified event 1381had happened for the specified watcher (which must be a pointer to an 1382initialised but not necessarily started event watcher). Obviously you must 1383not free the watcher as long as it has pending events. 1384 1385Stopping the watcher, letting libev invoke it, or calling 1386C<ev_clear_pending> will clear the pending event, even if the watcher was 1387not started in the first place. 1388 1389See also C<ev_feed_fd_event> and C<ev_feed_signal_event> for related 1390functions that do not need a watcher. 1391 1392=back 1393 1394See also the L</ASSOCIATING CUSTOM DATA WITH A WATCHER> and L</BUILDING YOUR 1395OWN COMPOSITE WATCHERS> idioms. 1396 1397=head2 WATCHER STATES 1398 1399There are various watcher states mentioned throughout this manual - 1400active, pending and so on. In this section these states and the rules to 1401transition between them will be described in more detail - and while these 1402rules might look complicated, they usually do "the right thing". 1403 1404=over 4 1405 1406=item initialised 1407 1408Before a watcher can be registered with the event loop it has to be 1409initialised. This can be done with a call to C<ev_TYPE_init>, or calls to 1410C<ev_init> followed by the watcher-specific C<ev_TYPE_set> function. 1411 1412In this state it is simply some block of memory that is suitable for 1413use in an event loop. It can be moved around, freed, reused etc. at 1414will - as long as you either keep the memory contents intact, or call 1415C<ev_TYPE_init> again. 1416 1417=item started/running/active 1418 1419Once a watcher has been started with a call to C<ev_TYPE_start> it becomes 1420property of the event loop, and is actively waiting for events. While in 1421this state it cannot be accessed (except in a few documented ways), moved, 1422freed or anything else - the only legal thing is to keep a pointer to it, 1423and call libev functions on it that are documented to work on active watchers. 1424 1425=item pending 1426 1427If a watcher is active and libev determines that an event it is interested 1428in has occurred (such as a timer expiring), it will become pending. It will 1429stay in this pending state until either it is stopped or its callback is 1430about to be invoked, so it is not normally pending inside the watcher 1431callback. 1432 1433The watcher might or might not be active while it is pending (for example, 1434an expired non-repeating timer can be pending but no longer active). If it 1435is stopped, it can be freely accessed (e.g. by calling C<ev_TYPE_set>), 1436but it is still property of the event loop at this time, so cannot be 1437moved, freed or reused. And if it is active the rules described in the 1438previous item still apply. 1439 1440It is also possible to feed an event on a watcher that is not active (e.g. 1441via C<ev_feed_event>), in which case it becomes pending without being 1442active. 1443 1444=item stopped 1445 1446A watcher can be stopped implicitly by libev (in which case it might still 1447be pending), or explicitly by calling its C<ev_TYPE_stop> function. The 1448latter will clear any pending state the watcher might be in, regardless 1449of whether it was active or not, so stopping a watcher explicitly before 1450freeing it is often a good idea. 1451 1452While stopped (and not pending) the watcher is essentially in the 1453initialised state, that is, it can be reused, moved, modified in any way 1454you wish (but when you trash the memory block, you need to C<ev_TYPE_init> 1455it again). 1456 1457=back 1458 1459=head2 WATCHER PRIORITY MODELS 1460 1461Many event loops support I<watcher priorities>, which are usually small 1462integers that influence the ordering of event callback invocation 1463between watchers in some way, all else being equal. 1464 1465In libev, Watcher priorities can be set using C<ev_set_priority>. See its 1466description for the more technical details such as the actual priority 1467range. 1468 1469There are two common ways how these these priorities are being interpreted 1470by event loops: 1471 1472In the more common lock-out model, higher priorities "lock out" invocation 1473of lower priority watchers, which means as long as higher priority 1474watchers receive events, lower priority watchers are not being invoked. 1475 1476The less common only-for-ordering model uses priorities solely to order 1477callback invocation within a single event loop iteration: Higher priority 1478watchers are invoked before lower priority ones, but they all get invoked 1479before polling for new events. 1480 1481Libev uses the second (only-for-ordering) model for all its watchers 1482except for idle watchers (which use the lock-out model). 1483 1484The rationale behind this is that implementing the lock-out model for 1485watchers is not well supported by most kernel interfaces, and most event 1486libraries will just poll for the same events again and again as long as 1487their callbacks have not been executed, which is very inefficient in the 1488common case of one high-priority watcher locking out a mass of lower 1489priority ones. 1490 1491Static (ordering) priorities are most useful when you have two or more 1492watchers handling the same resource: a typical usage example is having an 1493C<ev_io> watcher to receive data, and an associated C<ev_timer> to handle 1494timeouts. Under load, data might be received while the program handles 1495other jobs, but since timers normally get invoked first, the timeout 1496handler will be executed before checking for data. In that case, giving 1497the timer a lower priority than the I/O watcher ensures that I/O will be 1498handled first even under adverse conditions (which is usually, but not 1499always, what you want). 1500 1501Since idle watchers use the "lock-out" model, meaning that idle watchers 1502will only be executed when no same or higher priority watchers have 1503received events, they can be used to implement the "lock-out" model when 1504required. 1505 1506For example, to emulate how many other event libraries handle priorities, 1507you can associate an C<ev_idle> watcher to each such watcher, and in 1508the normal watcher callback, you just start the idle watcher. The real 1509processing is done in the idle watcher callback. This causes libev to 1510continuously poll and process kernel event data for the watcher, but when 1511the lock-out case is known to be rare (which in turn is rare :), this is 1512workable. 1513 1514Usually, however, the lock-out model implemented that way will perform 1515miserably under the type of load it was designed to handle. In that case, 1516it might be preferable to stop the real watcher before starting the 1517idle watcher, so the kernel will not have to process the event in case 1518the actual processing will be delayed for considerable time. 1519 1520Here is an example of an I/O watcher that should run at a strictly lower 1521priority than the default, and which should only process data when no 1522other events are pending: 1523 1524 ev_idle idle; // actual processing watcher 1525 ev_io io; // actual event watcher 1526 1527 static void 1528 io_cb (EV_P_ ev_io *w, int revents) 1529 { 1530 // stop the I/O watcher, we received the event, but 1531 // are not yet ready to handle it. 1532 ev_io_stop (EV_A_ w); 1533 1534 // start the idle watcher to handle the actual event. 1535 // it will not be executed as long as other watchers 1536 // with the default priority are receiving events. 1537 ev_idle_start (EV_A_ &idle); 1538 } 1539 1540 static void 1541 idle_cb (EV_P_ ev_idle *w, int revents) 1542 { 1543 // actual processing 1544 read (STDIN_FILENO, ...); 1545 1546 // have to start the I/O watcher again, as 1547 // we have handled the event 1548 ev_io_start (EV_P_ &io); 1549 } 1550 1551 // initialisation 1552 ev_idle_init (&idle, idle_cb); 1553 ev_io_init (&io, io_cb, STDIN_FILENO, EV_READ); 1554 ev_io_start (EV_DEFAULT_ &io); 1555 1556In the "real" world, it might also be beneficial to start a timer, so that 1557low-priority connections can not be locked out forever under load. This 1558enables your program to keep a lower latency for important connections 1559during short periods of high load, while not completely locking out less 1560important ones. 1561 1562 1563=head1 WATCHER TYPES 1564 1565This section describes each watcher in detail, but will not repeat 1566information given in the last section. Any initialisation/set macros, 1567functions and members specific to the watcher type are explained. 1568 1569Members are additionally marked with either I<[read-only]>, meaning that, 1570while the watcher is active, you can look at the member and expect some 1571sensible content, but you must not modify it (you can modify it while the 1572watcher is stopped to your hearts content), or I<[read-write]>, which 1573means you can expect it to have some sensible content while the watcher 1574is active, but you can also modify it. Modifying it may not do something 1575sensible or take immediate effect (or do anything at all), but libev will 1576not crash or malfunction in any way. 1577 1578 1579=head2 C<ev_io> - is this file descriptor readable or writable? 1580 1581I/O watchers check whether a file descriptor is readable or writable 1582in each iteration of the event loop, or, more precisely, when reading 1583would not block the process and writing would at least be able to write 1584some data. This behaviour is called level-triggering because you keep 1585receiving events as long as the condition persists. Remember you can stop 1586the watcher if you don't want to act on the event and neither want to 1587receive future events. 1588 1589In general you can register as many read and/or write event watchers per 1590fd as you want (as long as you don't confuse yourself). Setting all file 1591descriptors to non-blocking mode is also usually a good idea (but not 1592required if you know what you are doing). 1593 1594Another thing you have to watch out for is that it is quite easy to 1595receive "spurious" readiness notifications, that is, your callback might 1596be called with C<EV_READ> but a subsequent C<read>(2) will actually block 1597because there is no data. It is very easy to get into this situation even 1598with a relatively standard program structure. Thus it is best to always 1599use non-blocking I/O: An extra C<read>(2) returning C<EAGAIN> is far 1600preferable to a program hanging until some data arrives. 1601 1602If you cannot run the fd in non-blocking mode (for example you should 1603not play around with an Xlib connection), then you have to separately 1604re-test whether a file descriptor is really ready with a known-to-be good 1605interface such as poll (fortunately in the case of Xlib, it already does 1606this on its own, so its quite safe to use). Some people additionally 1607use C<SIGALRM> and an interval timer, just to be sure you won't block 1608indefinitely. 1609 1610But really, best use non-blocking mode. 1611 1612=head3 The special problem of disappearing file descriptors 1613 1614Some backends (e.g. kqueue, epoll) need to be told about closing a file 1615descriptor (either due to calling C<close> explicitly or any other means, 1616such as C<dup2>). The reason is that you register interest in some file 1617descriptor, but when it goes away, the operating system will silently drop 1618this interest. If another file descriptor with the same number then is 1619registered with libev, there is no efficient way to see that this is, in 1620fact, a different file descriptor. 1621 1622To avoid having to explicitly tell libev about such cases, libev follows 1623the following policy: Each time C<ev_io_set> is being called, libev 1624will assume that this is potentially a new file descriptor, otherwise 1625it is assumed that the file descriptor stays the same. That means that 1626you I<have> to call C<ev_io_set> (or C<ev_io_init>) when you change the 1627descriptor even if the file descriptor number itself did not change. 1628 1629This is how one would do it normally anyway, the important point is that 1630the libev application should not optimise around libev but should leave 1631optimisations to libev. 1632 1633=head3 The special problem of dup'ed file descriptors 1634 1635Some backends (e.g. epoll), cannot register events for file descriptors, 1636but only events for the underlying file descriptions. That means when you 1637have C<dup ()>'ed file descriptors or weirder constellations, and register 1638events for them, only one file descriptor might actually receive events. 1639 1640There is no workaround possible except not registering events 1641for potentially C<dup ()>'ed file descriptors, or to resort to 1642C<EVBACKEND_SELECT> or C<EVBACKEND_POLL>. 1643 1644=head3 The special problem of files 1645 1646Many people try to use C<select> (or libev) on file descriptors 1647representing files, and expect it to become ready when their program 1648doesn't block on disk accesses (which can take a long time on their own). 1649 1650However, this cannot ever work in the "expected" way - you get a readiness 1651notification as soon as the kernel knows whether and how much data is 1652there, and in the case of open files, that's always the case, so you 1653always get a readiness notification instantly, and your read (or possibly 1654write) will still block on the disk I/O. 1655 1656Another way to view it is that in the case of sockets, pipes, character 1657devices and so on, there is another party (the sender) that delivers data 1658on its own, but in the case of files, there is no such thing: the disk 1659will not send data on its own, simply because it doesn't know what you 1660wish to read - you would first have to request some data. 1661 1662Since files are typically not-so-well supported by advanced notification 1663mechanism, libev tries hard to emulate POSIX behaviour with respect 1664to files, even though you should not use it. The reason for this is 1665convenience: sometimes you want to watch STDIN or STDOUT, which is 1666usually a tty, often a pipe, but also sometimes files or special devices 1667(for example, C<epoll> on Linux works with F</dev/random> but not with 1668F</dev/urandom>), and even though the file might better be served with 1669asynchronous I/O instead of with non-blocking I/O, it is still useful when 1670it "just works" instead of freezing. 1671 1672So avoid file descriptors pointing to files when you know it (e.g. use 1673libeio), but use them when it is convenient, e.g. for STDIN/STDOUT, or 1674when you rarely read from a file instead of from a socket, and want to 1675reuse the same code path. 1676 1677=head3 The special problem of fork 1678 1679Some backends (epoll, kqueue) do not support C<fork ()> at all or exhibit 1680useless behaviour. Libev fully supports fork, but needs to be told about 1681it in the child if you want to continue to use it in the child. 1682 1683To support fork in your child processes, you have to call C<ev_loop_fork 1684()> after a fork in the child, enable C<EVFLAG_FORKCHECK>, or resort to 1685C<EVBACKEND_SELECT> or C<EVBACKEND_POLL>. 1686 1687=head3 The special problem of SIGPIPE 1688 1689While not really specific to libev, it is easy to forget about C<SIGPIPE>: 1690when writing to a pipe whose other end has been closed, your program gets 1691sent a SIGPIPE, which, by default, aborts your program. For most programs 1692this is sensible behaviour, for daemons, this is usually undesirable. 1693 1694So when you encounter spurious, unexplained daemon exits, make sure you 1695ignore SIGPIPE (and maybe make sure you log the exit status of your daemon 1696somewhere, as that would have given you a big clue). 1697 1698=head3 The special problem of accept()ing when you can't 1699 1700Many implementations of the POSIX C<accept> function (for example, 1701found in post-2004 Linux) have the peculiar behaviour of not removing a 1702connection from the pending queue in all error cases. 1703 1704For example, larger servers often run out of file descriptors (because 1705of resource limits), causing C<accept> to fail with C<ENFILE> but not 1706rejecting the connection, leading to libev signalling readiness on 1707the next iteration again (the connection still exists after all), and 1708typically causing the program to loop at 100% CPU usage. 1709 1710Unfortunately, the set of errors that cause this issue differs between 1711operating systems, there is usually little the app can do to remedy the 1712situation, and no known thread-safe method of removing the connection to 1713cope with overload is known (to me). 1714 1715One of the easiest ways to handle this situation is to just ignore it 1716- when the program encounters an overload, it will just loop until the 1717situation is over. While this is a form of busy waiting, no OS offers an 1718event-based way to handle this situation, so it's the best one can do. 1719 1720A better way to handle the situation is to log any errors other than 1721C<EAGAIN> and C<EWOULDBLOCK>, making sure not to flood the log with such 1722messages, and continue as usual, which at least gives the user an idea of 1723what could be wrong ("raise the ulimit!"). For extra points one could stop 1724the C<ev_io> watcher on the listening fd "for a while", which reduces CPU 1725usage. 1726 1727If your program is single-threaded, then you could also keep a dummy file 1728descriptor for overload situations (e.g. by opening F</dev/null>), and 1729when you run into C<ENFILE> or C<EMFILE>, close it, run C<accept>, 1730close that fd, and create a new dummy fd. This will gracefully refuse 1731clients under typical overload conditions. 1732 1733The last way to handle it is to simply log the error and C<exit>, as 1734is often done with C<malloc> failures, but this results in an easy 1735opportunity for a DoS attack. 1736 1737=head3 Watcher-Specific Functions 1738 1739=over 4 1740 1741=item ev_io_init (ev_io *, callback, int fd, int events) 1742 1743=item ev_io_set (ev_io *, int fd, int events) 1744 1745Configures an C<ev_io> watcher. The C<fd> is the file descriptor to 1746receive events for and C<events> is either C<EV_READ>, C<EV_WRITE> or 1747C<EV_READ | EV_WRITE>, to express the desire to receive the given events. 1748 1749=item int fd [read-only] 1750 1751The file descriptor being watched. 1752 1753=item int events [read-only] 1754 1755The events being watched. 1756 1757=back 1758 1759=head3 Examples 1760 1761Example: Call C<stdin_readable_cb> when STDIN_FILENO has become, well 1762readable, but only once. Since it is likely line-buffered, you could 1763attempt to read a whole line in the callback. 1764 1765 static void 1766 stdin_readable_cb (struct ev_loop *loop, ev_io *w, int revents) 1767 { 1768 ev_io_stop (loop, w); 1769 .. read from stdin here (or from w->fd) and handle any I/O errors 1770 } 1771 1772 ... 1773 struct ev_loop *loop = ev_default_init (0); 1774 ev_io stdin_readable; 1775 ev_io_init (&stdin_readable, stdin_readable_cb, STDIN_FILENO, EV_READ); 1776 ev_io_start (loop, &stdin_readable); 1777 ev_run (loop, 0); 1778 1779 1780=head2 C<ev_timer> - relative and optionally repeating timeouts 1781 1782Timer watchers are simple relative timers that generate an event after a 1783given time, and optionally repeating in regular intervals after that. 1784 1785The timers are based on real time, that is, if you register an event that 1786times out after an hour and you reset your system clock to January last 1787year, it will still time out after (roughly) one hour. "Roughly" because 1788detecting time jumps is hard, and some inaccuracies are unavoidable (the 1789monotonic clock option helps a lot here). 1790 1791The callback is guaranteed to be invoked only I<after> its timeout has 1792passed (not I<at>, so on systems with very low-resolution clocks this 1793might introduce a small delay, see "the special problem of being too 1794early", below). If multiple timers become ready during the same loop 1795iteration then the ones with earlier time-out values are invoked before 1796ones of the same priority with later time-out values (but this is no 1797longer true when a callback calls C<ev_run> recursively). 1798 1799=head3 Be smart about timeouts 1800 1801Many real-world problems involve some kind of timeout, usually for error 1802recovery. A typical example is an HTTP request - if the other side hangs, 1803you want to raise some error after a while. 1804 1805What follows are some ways to handle this problem, from obvious and 1806inefficient to smart and efficient. 1807 1808In the following, a 60 second activity timeout is assumed - a timeout that 1809gets reset to 60 seconds each time there is activity (e.g. each time some 1810data or other life sign was received). 1811 1812=over 4 1813 1814=item 1. Use a timer and stop, reinitialise and start it on activity. 1815 1816This is the most obvious, but not the most simple way: In the beginning, 1817start the watcher: 1818 1819 ev_timer_init (timer, callback, 60., 0.); 1820 ev_timer_start (loop, timer); 1821 1822Then, each time there is some activity, C<ev_timer_stop> it, initialise it 1823and start it again: 1824 1825 ev_timer_stop (loop, timer); 1826 ev_timer_set (timer, 60., 0.); 1827 ev_timer_start (loop, timer); 1828 1829This is relatively simple to implement, but means that each time there is 1830some activity, libev will first have to remove the timer from its internal 1831data structure and then add it again. Libev tries to be fast, but it's 1832still not a constant-time operation. 1833 1834=item 2. Use a timer and re-start it with C<ev_timer_again> inactivity. 1835 1836This is the easiest way, and involves using C<ev_timer_again> instead of 1837C<ev_timer_start>. 1838 1839To implement this, configure an C<ev_timer> with a C<repeat> value 1840of C<60> and then call C<ev_timer_again> at start and each time you 1841successfully read or write some data. If you go into an idle state where 1842you do not expect data to travel on the socket, you can C<ev_timer_stop> 1843the timer, and C<ev_timer_again> will automatically restart it if need be. 1844 1845That means you can ignore both the C<ev_timer_start> function and the 1846C<after> argument to C<ev_timer_set>, and only ever use the C<repeat> 1847member and C<ev_timer_again>. 1848 1849At start: 1850 1851 ev_init (timer, callback); 1852 timer->repeat = 60.; 1853 ev_timer_again (loop, timer); 1854 1855Each time there is some activity: 1856 1857 ev_timer_again (loop, timer); 1858 1859It is even possible to change the time-out on the fly, regardless of 1860whether the watcher is active or not: 1861 1862 timer->repeat = 30.; 1863 ev_timer_again (loop, timer); 1864 1865This is slightly more efficient then stopping/starting the timer each time 1866you want to modify its timeout value, as libev does not have to completely 1867remove and re-insert the timer from/into its internal data structure. 1868 1869It is, however, even simpler than the "obvious" way to do it. 1870 1871=item 3. Let the timer time out, but then re-arm it as required. 1872 1873This method is more tricky, but usually most efficient: Most timeouts are 1874relatively long compared to the intervals between other activity - in 1875our example, within 60 seconds, there are usually many I/O events with 1876associated activity resets. 1877 1878In this case, it would be more efficient to leave the C<ev_timer> alone, 1879but remember the time of last activity, and check for a real timeout only 1880within the callback: 1881 1882 ev_tstamp timeout = 60.; 1883 ev_tstamp last_activity; // time of last activity 1884 ev_timer timer; 1885 1886 static void 1887 callback (EV_P_ ev_timer *w, int revents) 1888 { 1889 // calculate when the timeout would happen 1890 ev_tstamp after = last_activity - ev_now (EV_A) + timeout; 1891 1892 // if negative, it means we the timeout already occurred 1893 if (after < 0.) 1894 { 1895 // timeout occurred, take action 1896 } 1897 else 1898 { 1899 // callback was invoked, but there was some recent 1900 // activity. simply restart the timer to time out 1901 // after "after" seconds, which is the earliest time 1902 // the timeout can occur. 1903 ev_timer_set (w, after, 0.); 1904 ev_timer_start (EV_A_ w); 1905 } 1906 } 1907 1908To summarise the callback: first calculate in how many seconds the 1909timeout will occur (by calculating the absolute time when it would occur, 1910C<last_activity + timeout>, and subtracting the current time, C<ev_now 1911(EV_A)> from that). 1912 1913If this value is negative, then we are already past the timeout, i.e. we 1914timed out, and need to do whatever is needed in this case. 1915 1916Otherwise, we now the earliest time at which the timeout would trigger, 1917and simply start the timer with this timeout value. 1918 1919In other words, each time the callback is invoked it will check whether 1920the timeout occurred. If not, it will simply reschedule itself to check 1921again at the earliest time it could time out. Rinse. Repeat. 1922 1923This scheme causes more callback invocations (about one every 60 seconds 1924minus half the average time between activity), but virtually no calls to 1925libev to change the timeout. 1926 1927To start the machinery, simply initialise the watcher and set 1928C<last_activity> to the current time (meaning there was some activity just 1929now), then call the callback, which will "do the right thing" and start 1930the timer: 1931 1932 last_activity = ev_now (EV_A); 1933 ev_init (&timer, callback); 1934 callback (EV_A_ &timer, 0); 1935 1936When there is some activity, simply store the current time in 1937C<last_activity>, no libev calls at all: 1938 1939 if (activity detected) 1940 last_activity = ev_now (EV_A); 1941 1942When your timeout value changes, then the timeout can be changed by simply 1943providing a new value, stopping the timer and calling the callback, which 1944will again do the right thing (for example, time out immediately :). 1945 1946 timeout = new_value; 1947 ev_timer_stop (EV_A_ &timer); 1948 callback (EV_A_ &timer, 0); 1949 1950This technique is slightly more complex, but in most cases where the 1951time-out is unlikely to be triggered, much more efficient. 1952 1953=item 4. Wee, just use a double-linked list for your timeouts. 1954 1955If there is not one request, but many thousands (millions...), all 1956employing some kind of timeout with the same timeout value, then one can 1957do even better: 1958 1959When starting the timeout, calculate the timeout value and put the timeout 1960at the I<end> of the list. 1961 1962Then use an C<ev_timer> to fire when the timeout at the I<beginning> of 1963the list is expected to fire (for example, using the technique #3). 1964 1965When there is some activity, remove the timer from the list, recalculate 1966the timeout, append it to the end of the list again, and make sure to 1967update the C<ev_timer> if it was taken from the beginning of the list. 1968 1969This way, one can manage an unlimited number of timeouts in O(1) time for 1970starting, stopping and updating the timers, at the expense of a major 1971complication, and having to use a constant timeout. The constant timeout 1972ensures that the list stays sorted. 1973 1974=back 1975 1976So which method the best? 1977 1978Method #2 is a simple no-brain-required solution that is adequate in most 1979situations. Method #3 requires a bit more thinking, but handles many cases 1980better, and isn't very complicated either. In most case, choosing either 1981one is fine, with #3 being better in typical situations. 1982 1983Method #1 is almost always a bad idea, and buys you nothing. Method #4 is 1984rather complicated, but extremely efficient, something that really pays 1985off after the first million or so of active timers, i.e. it's usually 1986overkill :) 1987 1988=head3 The special problem of being too early 1989 1990If you ask a timer to call your callback after three seconds, then 1991you expect it to be invoked after three seconds - but of course, this 1992cannot be guaranteed to infinite precision. Less obviously, it cannot be 1993guaranteed to any precision by libev - imagine somebody suspending the 1994process with a STOP signal for a few hours for example. 1995 1996So, libev tries to invoke your callback as soon as possible I<after> the 1997delay has occurred, but cannot guarantee this. 1998 1999A less obvious failure mode is calling your callback too early: many event 2000loops compare timestamps with a "elapsed delay >= requested delay", but 2001this can cause your callback to be invoked much earlier than you would 2002expect. 2003 2004To see why, imagine a system with a clock that only offers full second 2005resolution (think windows if you can't come up with a broken enough OS 2006yourself). If you schedule a one-second timer at the time 500.9, then the 2007event loop will schedule your timeout to elapse at a system time of 500 2008(500.9 truncated to the resolution) + 1, or 501. 2009 2010If an event library looks at the timeout 0.1s later, it will see "501 >= 2011501" and invoke the callback 0.1s after it was started, even though a 2012one-second delay was requested - this is being "too early", despite best 2013intentions. 2014 2015This is the reason why libev will never invoke the callback if the elapsed 2016delay equals the requested delay, but only when the elapsed delay is 2017larger than the requested delay. In the example above, libev would only invoke 2018the callback at system time 502, or 1.1s after the timer was started. 2019 2020So, while libev cannot guarantee that your callback will be invoked 2021exactly when requested, it I<can> and I<does> guarantee that the requested 2022delay has actually elapsed, or in other words, it always errs on the "too 2023late" side of things. 2024 2025=head3 The special problem of time updates 2026 2027Establishing the current time is a costly operation (it usually takes 2028at least one system call): EV therefore updates its idea of the current 2029time only before and after C<ev_run> collects new events, which causes a 2030growing difference between C<ev_now ()> and C<ev_time ()> when handling 2031lots of events in one iteration. 2032 2033The relative timeouts are calculated relative to the C<ev_now ()> 2034time. This is usually the right thing as this timestamp refers to the time 2035of the event triggering whatever timeout you are modifying/starting. If 2036you suspect event processing to be delayed and you I<need> to base the 2037timeout on the current time, use something like the following to adjust 2038for it: 2039 2040 ev_timer_set (&timer, after + (ev_time () - ev_now ()), 0.); 2041 2042If the event loop is suspended for a long time, you can also force an 2043update of the time returned by C<ev_now ()> by calling C<ev_now_update 2044()>, although that will push the event time of all outstanding events 2045further into the future. 2046 2047=head3 The special problem of unsynchronised clocks 2048 2049Modern systems have a variety of clocks - libev itself uses the normal 2050"wall clock" clock and, if available, the monotonic clock (to avoid time 2051jumps). 2052 2053Neither of these clocks is synchronised with each other or any other clock 2054on the system, so C<ev_time ()> might return a considerably different time 2055than C<gettimeofday ()> or C<time ()>. On a GNU/Linux system, for example, 2056a call to C<gettimeofday> might return a second count that is one higher 2057than a directly following call to C<time>. 2058 2059The moral of this is to only compare libev-related timestamps with 2060C<ev_time ()> and C<ev_now ()>, at least if you want better precision than 2061a second or so. 2062 2063One more problem arises due to this lack of synchronisation: if libev uses 2064the system monotonic clock and you compare timestamps from C<ev_time> 2065or C<ev_now> from when you started your timer and when your callback is 2066invoked, you will find that sometimes the callback is a bit "early". 2067 2068This is because C<ev_timer>s work in real time, not wall clock time, so 2069libev makes sure your callback is not invoked before the delay happened, 2070I<measured according to the real time>, not the system clock. 2071 2072If your timeouts are based on a physical timescale (e.g. "time out this 2073connection after 100 seconds") then this shouldn't bother you as it is 2074exactly the right behaviour. 2075 2076If you want to compare wall clock/system timestamps to your timers, then 2077you need to use C<ev_periodic>s, as these are based on the wall clock 2078time, where your comparisons will always generate correct results. 2079 2080=head3 The special problems of suspended animation 2081 2082When you leave the server world it is quite customary to hit machines that 2083can suspend/hibernate - what happens to the clocks during such a suspend? 2084 2085Some quick tests made with a Linux 2.6.28 indicate that a suspend freezes 2086all processes, while the clocks (C<times>, C<CLOCK_MONOTONIC>) continue 2087to run until the system is suspended, but they will not advance while the 2088system is suspended. That means, on resume, it will be as if the program 2089was frozen for a few seconds, but the suspend time will not be counted 2090towards C<ev_timer> when a monotonic clock source is used. The real time 2091clock advanced as expected, but if it is used as sole clocksource, then a 2092long suspend would be detected as a time jump by libev, and timers would 2093be adjusted accordingly. 2094 2095I would not be surprised to see different behaviour in different between 2096operating systems, OS versions or even different hardware. 2097 2098The other form of suspend (job control, or sending a SIGSTOP) will see a 2099time jump in the monotonic clocks and the realtime clock. If the program 2100is suspended for a very long time, and monotonic clock sources are in use, 2101then you can expect C<ev_timer>s to expire as the full suspension time 2102will be counted towards the timers. When no monotonic clock source is in 2103use, then libev will again assume a timejump and adjust accordingly. 2104 2105It might be beneficial for this latter case to call C<ev_suspend> 2106and C<ev_resume> in code that handles C<SIGTSTP>, to at least get 2107deterministic behaviour in this case (you can do nothing against 2108C<SIGSTOP>). 2109 2110=head3 Watcher-Specific Functions and Data Members 2111 2112=over 4 2113 2114=item ev_timer_init (ev_timer *, callback, ev_tstamp after, ev_tstamp repeat) 2115 2116=item ev_timer_set (ev_timer *, ev_tstamp after, ev_tstamp repeat) 2117 2118Configure the timer to trigger after C<after> seconds. If C<repeat> 2119is C<0.>, then it will automatically be stopped once the timeout is 2120reached. If it is positive, then the timer will automatically be 2121configured to trigger again C<repeat> seconds later, again, and again, 2122until stopped manually. 2123 2124The timer itself will do a best-effort at avoiding drift, that is, if 2125you configure a timer to trigger every 10 seconds, then it will normally 2126trigger at exactly 10 second intervals. If, however, your program cannot 2127keep up with the timer (because it takes longer than those 10 seconds to 2128do stuff) the timer will not fire more than once per event loop iteration. 2129 2130=item ev_timer_again (loop, ev_timer *) 2131 2132This will act as if the timer timed out, and restarts it again if it is 2133repeating. It basically works like calling C<ev_timer_stop>, updating the 2134timeout to the C<repeat> value and calling C<ev_timer_start>. 2135 2136The exact semantics are as in the following rules, all of which will be 2137applied to the watcher: 2138 2139=over 4 2140 2141=item If the timer is pending, the pending status is always cleared. 2142 2143=item If the timer is started but non-repeating, stop it (as if it timed 2144out, without invoking it). 2145 2146=item If the timer is repeating, make the C<repeat> value the new timeout 2147and start the timer, if necessary. 2148 2149=back 2150 2151This sounds a bit complicated, see L</Be smart about timeouts>, above, for a 2152usage example. 2153 2154=item ev_tstamp ev_timer_remaining (loop, ev_timer *) 2155 2156Returns the remaining time until a timer fires. If the timer is active, 2157then this time is relative to the current event loop time, otherwise it's 2158the timeout value currently configured. 2159 2160That is, after an C<ev_timer_set (w, 5, 7)>, C<ev_timer_remaining> returns 2161C<5>. When the timer is started and one second passes, C<ev_timer_remaining> 2162will return C<4>. When the timer expires and is restarted, it will return 2163roughly C<7> (likely slightly less as callback invocation takes some time, 2164too), and so on. 2165 2166=item ev_tstamp repeat [read-write] 2167 2168The current C<repeat> value. Will be used each time the watcher times out 2169or C<ev_timer_again> is called, and determines the next timeout (if any), 2170which is also when any modifications are taken into account. 2171 2172=back 2173 2174=head3 Examples 2175 2176Example: Create a timer that fires after 60 seconds. 2177 2178 static void 2179 one_minute_cb (struct ev_loop *loop, ev_timer *w, int revents) 2180 { 2181 .. one minute over, w is actually stopped right here 2182 } 2183 2184 ev_timer mytimer; 2185 ev_timer_init (&mytimer, one_minute_cb, 60., 0.); 2186 ev_timer_start (loop, &mytimer); 2187 2188Example: Create a timeout timer that times out after 10 seconds of 2189inactivity. 2190 2191 static void 2192 timeout_cb (struct ev_loop *loop, ev_timer *w, int revents) 2193 { 2194 .. ten seconds without any activity 2195 } 2196 2197 ev_timer mytimer; 2198 ev_timer_init (&mytimer, timeout_cb, 0., 10.); /* note, only repeat used */ 2199 ev_timer_again (&mytimer); /* start timer */ 2200 ev_run (loop, 0); 2201 2202 // and in some piece of code that gets executed on any "activity": 2203 // reset the timeout to start ticking again at 10 seconds 2204 ev_timer_again (&mytimer); 2205 2206 2207=head2 C<ev_periodic> - to cron or not to cron? 2208 2209Periodic watchers are also timers of a kind, but they are very versatile 2210(and unfortunately a bit complex). 2211 2212Unlike C<ev_timer>, periodic watchers are not based on real time (or 2213relative time, the physical time that passes) but on wall clock time 2214(absolute time, the thing you can read on your calender or clock). The 2215difference is that wall clock time can run faster or slower than real 2216time, and time jumps are not uncommon (e.g. when you adjust your 2217wrist-watch). 2218 2219You can tell a periodic watcher to trigger after some specific point 2220in time: for example, if you tell a periodic watcher to trigger "in 10 2221seconds" (by specifying e.g. C<ev_now () + 10.>, that is, an absolute time 2222not a delay) and then reset your system clock to January of the previous 2223year, then it will take a year or more to trigger the event (unlike an 2224C<ev_timer>, which would still trigger roughly 10 seconds after starting 2225it, as it uses a relative timeout). 2226 2227C<ev_periodic> watchers can also be used to implement vastly more complex 2228timers, such as triggering an event on each "midnight, local time", or 2229other complicated rules. This cannot be done with C<ev_timer> watchers, as 2230those cannot react to time jumps. 2231 2232As with timers, the callback is guaranteed to be invoked only when the 2233point in time where it is supposed to trigger has passed. If multiple 2234timers become ready during the same loop iteration then the ones with 2235earlier time-out values are invoked before ones with later time-out values 2236(but this is no longer true when a callback calls C<ev_run> recursively). 2237 2238=head3 Watcher-Specific Functions and Data Members 2239 2240=over 4 2241 2242=item ev_periodic_init (ev_periodic *, callback, ev_tstamp offset, ev_tstamp interval, reschedule_cb) 2243 2244=item ev_periodic_set (ev_periodic *, ev_tstamp offset, ev_tstamp interval, reschedule_cb) 2245 2246Lots of arguments, let's sort it out... There are basically three modes of 2247operation, and we will explain them from simplest to most complex: 2248 2249=over 4 2250 2251=item * absolute timer (offset = absolute time, interval = 0, reschedule_cb = 0) 2252 2253In this configuration the watcher triggers an event after the wall clock 2254time C<offset> has passed. It will not repeat and will not adjust when a 2255time jump occurs, that is, if it is to be run at January 1st 2011 then it 2256will be stopped and invoked when the system clock reaches or surpasses 2257this point in time. 2258 2259=item * repeating interval timer (offset = offset within interval, interval > 0, reschedule_cb = 0) 2260 2261In this mode the watcher will always be scheduled to time out at the next 2262C<offset + N * interval> time (for some integer N, which can also be 2263negative) and then repeat, regardless of any time jumps. The C<offset> 2264argument is merely an offset into the C<interval> periods. 2265 2266This can be used to create timers that do not drift with respect to the 2267system clock, for example, here is an C<ev_periodic> that triggers each 2268hour, on the hour (with respect to UTC): 2269 2270 ev_periodic_set (&periodic, 0., 3600., 0); 2271 2272This doesn't mean there will always be 3600 seconds in between triggers, 2273but only that the callback will be called when the system time shows a 2274full hour (UTC), or more correctly, when the system time is evenly divisible 2275by 3600. 2276 2277Another way to think about it (for the mathematically inclined) is that 2278C<ev_periodic> will try to run the callback in this mode at the next possible 2279time where C<time = offset (mod interval)>, regardless of any time jumps. 2280 2281The C<interval> I<MUST> be positive, and for numerical stability, the 2282interval value should be higher than C<1/8192> (which is around 100 2283microseconds) and C<offset> should be higher than C<0> and should have 2284at most a similar magnitude as the current time (say, within a factor of 2285ten). Typical values for offset are, in fact, C<0> or something between 2286C<0> and C<interval>, which is also the recommended range. 2287 2288Note also that there is an upper limit to how often a timer can fire (CPU 2289speed for example), so if C<interval> is very small then timing stability 2290will of course deteriorate. Libev itself tries to be exact to be about one 2291millisecond (if the OS supports it and the machine is fast enough). 2292 2293=item * manual reschedule mode (offset ignored, interval ignored, reschedule_cb = callback) 2294 2295In this mode the values for C<interval> and C<offset> are both being 2296ignored. Instead, each time the periodic watcher gets scheduled, the 2297reschedule callback will be called with the watcher as first, and the 2298current time as second argument. 2299 2300NOTE: I<This callback MUST NOT stop or destroy any periodic watcher, ever, 2301or make ANY other event loop modifications whatsoever, unless explicitly 2302allowed by documentation here>. 2303 2304If you need to stop it, return C<now + 1e30> (or so, fudge fudge) and stop 2305it afterwards (e.g. by starting an C<ev_prepare> watcher, which is the 2306only event loop modification you are allowed to do). 2307 2308The callback prototype is C<ev_tstamp (*reschedule_cb)(ev_periodic 2309*w, ev_tstamp now)>, e.g.: 2310 2311 static ev_tstamp 2312 my_rescheduler (ev_periodic *w, ev_tstamp now) 2313 { 2314 return now + 60.; 2315 } 2316 2317It must return the next time to trigger, based on the passed time value 2318(that is, the lowest time value larger than to the second argument). It 2319will usually be called just before the callback will be triggered, but 2320might be called at other times, too. 2321 2322NOTE: I<< This callback must always return a time that is higher than or 2323equal to the passed C<now> value >>. 2324 2325This can be used to create very complex timers, such as a timer that 2326triggers on "next midnight, local time". To do this, you would calculate the 2327next midnight after C<now> and return the timestamp value for this. How 2328you do this is, again, up to you (but it is not trivial, which is the main 2329reason I omitted it as an example). 2330 2331=back 2332 2333=item ev_periodic_again (loop, ev_periodic *) 2334 2335Simply stops and restarts the periodic watcher again. This is only useful 2336when you changed some parameters or the reschedule callback would return 2337a different time than the last time it was called (e.g. in a crond like 2338program when the crontabs have changed). 2339 2340=item ev_tstamp ev_periodic_at (ev_periodic *) 2341 2342When active, returns the absolute time that the watcher is supposed 2343to trigger next. This is not the same as the C<offset> argument to 2344C<ev_periodic_set>, but indeed works even in interval and manual 2345rescheduling modes. 2346 2347=item ev_tstamp offset [read-write] 2348 2349When repeating, this contains the offset value, otherwise this is the 2350absolute point in time (the C<offset> value passed to C<ev_periodic_set>, 2351although libev might modify this value for better numerical stability). 2352 2353Can be modified any time, but changes only take effect when the periodic 2354timer fires or C<ev_periodic_again> is being called. 2355 2356=item ev_tstamp interval [read-write] 2357 2358The current interval value. Can be modified any time, but changes only 2359take effect when the periodic timer fires or C<ev_periodic_again> is being 2360called. 2361 2362=item ev_tstamp (*reschedule_cb)(ev_periodic *w, ev_tstamp now) [read-write] 2363 2364The current reschedule callback, or C<0>, if this functionality is 2365switched off. Can be changed any time, but changes only take effect when 2366the periodic timer fires or C<ev_periodic_again> is being called. 2367 2368=back 2369 2370=head3 Examples 2371 2372Example: Call a callback every hour, or, more precisely, whenever the 2373system time is divisible by 3600. The callback invocation times have 2374potentially a lot of jitter, but good long-term stability. 2375 2376 static void 2377 clock_cb (struct ev_loop *loop, ev_periodic *w, int revents) 2378 { 2379 ... its now a full hour (UTC, or TAI or whatever your clock follows) 2380 } 2381 2382 ev_periodic hourly_tick; 2383 ev_periodic_init (&hourly_tick, clock_cb, 0., 3600., 0); 2384 ev_periodic_start (loop, &hourly_tick); 2385 2386Example: The same as above, but use a reschedule callback to do it: 2387 2388 #include <math.h> 2389 2390 static ev_tstamp 2391 my_scheduler_cb (ev_periodic *w, ev_tstamp now) 2392 { 2393 return now + (3600. - fmod (now, 3600.)); 2394 } 2395 2396 ev_periodic_init (&hourly_tick, clock_cb, 0., 0., my_scheduler_cb); 2397 2398Example: Call a callback every hour, starting now: 2399 2400 ev_periodic hourly_tick; 2401 ev_periodic_init (&hourly_tick, clock_cb, 2402 fmod (ev_now (loop), 3600.), 3600., 0); 2403 ev_periodic_start (loop, &hourly_tick); 2404 2405 2406=head2 C<ev_signal> - signal me when a signal gets signalled! 2407 2408Signal watchers will trigger an event when the process receives a specific 2409signal one or more times. Even though signals are very asynchronous, libev 2410will try its best to deliver signals synchronously, i.e. as part of the 2411normal event processing, like any other event. 2412 2413If you want signals to be delivered truly asynchronously, just use 2414C<sigaction> as you would do without libev and forget about sharing 2415the signal. You can even use C<ev_async> from a signal handler to 2416synchronously wake up an event loop. 2417 2418You can configure as many watchers as you like for the same signal, but 2419only within the same loop, i.e. you can watch for C<SIGINT> in your 2420default loop and for C<SIGIO> in another loop, but you cannot watch for 2421C<SIGINT> in both the default loop and another loop at the same time. At 2422the moment, C<SIGCHLD> is permanently tied to the default loop. 2423 2424Only after the first watcher for a signal is started will libev actually 2425register something with the kernel. It thus coexists with your own signal 2426handlers as long as you don't register any with libev for the same signal. 2427 2428If possible and supported, libev will install its handlers with 2429C<SA_RESTART> (or equivalent) behaviour enabled, so system calls should 2430not be unduly interrupted. If you have a problem with system calls getting 2431interrupted by signals you can block all signals in an C<ev_check> watcher 2432and unblock them in an C<ev_prepare> watcher. 2433 2434=head3 The special problem of inheritance over fork/execve/pthread_create 2435 2436Both the signal mask (C<sigprocmask>) and the signal disposition 2437(C<sigaction>) are unspecified after starting a signal watcher (and after 2438stopping it again), that is, libev might or might not block the signal, 2439and might or might not set or restore the installed signal handler (but 2440see C<EVFLAG_NOSIGMASK>). 2441 2442While this does not matter for the signal disposition (libev never 2443sets signals to C<SIG_IGN>, so handlers will be reset to C<SIG_DFL> on 2444C<execve>), this matters for the signal mask: many programs do not expect 2445certain signals to be blocked. 2446 2447This means that before calling C<exec> (from the child) you should reset 2448the signal mask to whatever "default" you expect (all clear is a good 2449choice usually). 2450 2451The simplest way to ensure that the signal mask is reset in the child is 2452to install a fork handler with C<pthread_atfork> that resets it. That will 2453catch fork calls done by libraries (such as the libc) as well. 2454 2455In current versions of libev, the signal will not be blocked indefinitely 2456unless you use the C<signalfd> API (C<EV_SIGNALFD>). While this reduces 2457the window of opportunity for problems, it will not go away, as libev 2458I<has> to modify the signal mask, at least temporarily. 2459 2460So I can't stress this enough: I<If you do not reset your signal mask when 2461you expect it to be empty, you have a race condition in your code>. This 2462is not a libev-specific thing, this is true for most event libraries. 2463 2464=head3 The special problem of threads signal handling 2465 2466POSIX threads has problematic signal handling semantics, specifically, 2467a lot of functionality (sigfd, sigwait etc.) only really works if all 2468threads in a process block signals, which is hard to achieve. 2469 2470When you want to use sigwait (or mix libev signal handling with your own 2471for the same signals), you can tackle this problem by globally blocking 2472all signals before creating any threads (or creating them with a fully set 2473sigprocmask) and also specifying the C<EVFLAG_NOSIGMASK> when creating 2474loops. Then designate one thread as "signal receiver thread" which handles 2475these signals. You can pass on any signals that libev might be interested 2476in by calling C<ev_feed_signal>. 2477 2478=head3 Watcher-Specific Functions and Data Members 2479 2480=over 4 2481 2482=item ev_signal_init (ev_signal *, callback, int signum) 2483 2484=item ev_signal_set (ev_signal *, int signum) 2485 2486Configures the watcher to trigger on the given signal number (usually one 2487of the C<SIGxxx> constants). 2488 2489=item int signum [read-only] 2490 2491The signal the watcher watches out for. 2492 2493=back 2494 2495=head3 Examples 2496 2497Example: Try to exit cleanly on SIGINT. 2498 2499 static void 2500 sigint_cb (struct ev_loop *loop, ev_signal *w, int revents) 2501 { 2502 ev_break (loop, EVBREAK_ALL); 2503 } 2504 2505 ev_signal signal_watcher; 2506 ev_signal_init (&signal_watcher, sigint_cb, SIGINT); 2507 ev_signal_start (loop, &signal_watcher); 2508 2509 2510=head2 C<ev_child> - watch out for process status changes 2511 2512Child watchers trigger when your process receives a SIGCHLD in response to 2513some child status changes (most typically when a child of yours dies or 2514exits). It is permissible to install a child watcher I<after> the child 2515has been forked (which implies it might have already exited), as long 2516as the event loop isn't entered (or is continued from a watcher), i.e., 2517forking and then immediately registering a watcher for the child is fine, 2518but forking and registering a watcher a few event loop iterations later or 2519in the next callback invocation is not. 2520 2521Only the default event loop is capable of handling signals, and therefore 2522you can only register child watchers in the default event loop. 2523 2524Due to some design glitches inside libev, child watchers will always be 2525handled at maximum priority (their priority is set to C<EV_MAXPRI> by 2526libev) 2527 2528=head3 Process Interaction 2529 2530Libev grabs C<SIGCHLD> as soon as the default event loop is 2531initialised. This is necessary to guarantee proper behaviour even if the 2532first child watcher is started after the child exits. The occurrence 2533of C<SIGCHLD> is recorded asynchronously, but child reaping is done 2534synchronously as part of the event loop processing. Libev always reaps all 2535children, even ones not watched. 2536 2537=head3 Overriding the Built-In Processing 2538 2539Libev offers no special support for overriding the built-in child 2540processing, but if your application collides with libev's default child 2541handler, you can override it easily by installing your own handler for 2542C<SIGCHLD> after initialising the default loop, and making sure the 2543default loop never gets destroyed. You are encouraged, however, to use an 2544event-based approach to child reaping and thus use libev's support for 2545that, so other libev users can use C<ev_child> watchers freely. 2546 2547=head3 Stopping the Child Watcher 2548 2549Currently, the child watcher never gets stopped, even when the 2550child terminates, so normally one needs to stop the watcher in the 2551callback. Future versions of libev might stop the watcher automatically 2552when a child exit is detected (calling C<ev_child_stop> twice is not a 2553problem). 2554 2555=head3 Watcher-Specific Functions and Data Members 2556 2557=over 4 2558 2559=item ev_child_init (ev_child *, callback, int pid, int trace) 2560 2561=item ev_child_set (ev_child *, int pid, int trace) 2562 2563Configures the watcher to wait for status changes of process C<pid> (or 2564I<any> process if C<pid> is specified as C<0>). The callback can look 2565at the C<rstatus> member of the C<ev_child> watcher structure to see 2566the status word (use the macros from C<sys/wait.h> and see your systems 2567C<waitpid> documentation). The C<rpid> member contains the pid of the 2568process causing the status change. C<trace> must be either C<0> (only 2569activate the watcher when the process terminates) or C<1> (additionally 2570activate the watcher when the process is stopped or continued). 2571 2572=item int pid [read-only] 2573 2574The process id this watcher watches out for, or C<0>, meaning any process id. 2575 2576=item int rpid [read-write] 2577 2578The process id that detected a status change. 2579 2580=item int rstatus [read-write] 2581 2582The process exit/trace status caused by C<rpid> (see your systems 2583C<waitpid> and C<sys/wait.h> documentation for details). 2584 2585=back 2586 2587=head3 Examples 2588 2589Example: C<fork()> a new process and install a child handler to wait for 2590its completion. 2591 2592 ev_child cw; 2593 2594 static void 2595 child_cb (EV_P_ ev_child *w, int revents) 2596 { 2597 ev_child_stop (EV_A_ w); 2598 printf ("process %d exited with status %x\n", w->rpid, w->rstatus); 2599 } 2600 2601 pid_t pid = fork (); 2602 2603 if (pid < 0) 2604 // error 2605 else if (pid == 0) 2606 { 2607 // the forked child executes here 2608 exit (1); 2609 } 2610 else 2611 { 2612 ev_child_init (&cw, child_cb, pid, 0); 2613 ev_child_start (EV_DEFAULT_ &cw); 2614 } 2615 2616 2617=head2 C<ev_stat> - did the file attributes just change? 2618 2619This watches a file system path for attribute changes. That is, it calls 2620C<stat> on that path in regular intervals (or when the OS says it changed) 2621and sees if it changed compared to the last time, invoking the callback 2622if it did. Starting the watcher C<stat>'s the file, so only changes that 2623happen after the watcher has been started will be reported. 2624 2625The path does not need to exist: changing from "path exists" to "path does 2626not exist" is a status change like any other. The condition "path does not 2627exist" (or more correctly "path cannot be stat'ed") is signified by the 2628C<st_nlink> field being zero (which is otherwise always forced to be at 2629least one) and all the other fields of the stat buffer having unspecified 2630contents. 2631 2632The path I<must not> end in a slash or contain special components such as 2633C<.> or C<..>. The path I<should> be absolute: If it is relative and 2634your working directory changes, then the behaviour is undefined. 2635 2636Since there is no portable change notification interface available, the 2637portable implementation simply calls C<stat(2)> regularly on the path 2638to see if it changed somehow. You can specify a recommended polling 2639interval for this case. If you specify a polling interval of C<0> (highly 2640recommended!) then a I<suitable, unspecified default> value will be used 2641(which you can expect to be around five seconds, although this might 2642change dynamically). Libev will also impose a minimum interval which is 2643currently around C<0.1>, but that's usually overkill. 2644 2645This watcher type is not meant for massive numbers of stat watchers, 2646as even with OS-supported change notifications, this can be 2647resource-intensive. 2648 2649At the time of this writing, the only OS-specific interface implemented 2650is the Linux inotify interface (implementing kqueue support is left as an 2651exercise for the reader. Note, however, that the author sees no way of 2652implementing C<ev_stat> semantics with kqueue, except as a hint). 2653 2654=head3 ABI Issues (Largefile Support) 2655 2656Libev by default (unless the user overrides this) uses the default 2657compilation environment, which means that on systems with large file 2658support disabled by default, you get the 32 bit version of the stat 2659structure. When using the library from programs that change the ABI to 2660use 64 bit file offsets the programs will fail. In that case you have to 2661compile libev with the same flags to get binary compatibility. This is 2662obviously the case with any flags that change the ABI, but the problem is 2663most noticeably displayed with ev_stat and large file support. 2664 2665The solution for this is to lobby your distribution maker to make large 2666file interfaces available by default (as e.g. FreeBSD does) and not 2667optional. Libev cannot simply switch on large file support because it has 2668to exchange stat structures with application programs compiled using the 2669default compilation environment. 2670 2671=head3 Inotify and Kqueue 2672 2673When C<inotify (7)> support has been compiled into libev and present at 2674runtime, it will be used to speed up change detection where possible. The 2675inotify descriptor will be created lazily when the first C<ev_stat> 2676watcher is being started. 2677 2678Inotify presence does not change the semantics of C<ev_stat> watchers 2679except that changes might be detected earlier, and in some cases, to avoid 2680making regular C<stat> calls. Even in the presence of inotify support 2681there are many cases where libev has to resort to regular C<stat> polling, 2682but as long as kernel 2.6.25 or newer is used (2.6.24 and older have too 2683many bugs), the path exists (i.e. stat succeeds), and the path resides on 2684a local filesystem (libev currently assumes only ext2/3, jfs, reiserfs and 2685xfs are fully working) libev usually gets away without polling. 2686 2687There is no support for kqueue, as apparently it cannot be used to 2688implement this functionality, due to the requirement of having a file 2689descriptor open on the object at all times, and detecting renames, unlinks 2690etc. is difficult. 2691 2692=head3 C<stat ()> is a synchronous operation 2693 2694Libev doesn't normally do any kind of I/O itself, and so is not blocking 2695the process. The exception are C<ev_stat> watchers - those call C<stat 2696()>, which is a synchronous operation. 2697 2698For local paths, this usually doesn't matter: unless the system is very 2699busy or the intervals between stat's are large, a stat call will be fast, 2700as the path data is usually in memory already (except when starting the 2701watcher). 2702 2703For networked file systems, calling C<stat ()> can block an indefinite 2704time due to network issues, and even under good conditions, a stat call 2705often takes multiple milliseconds. 2706 2707Therefore, it is best to avoid using C<ev_stat> watchers on networked 2708paths, although this is fully supported by libev. 2709 2710=head3 The special problem of stat time resolution 2711 2712The C<stat ()> system call only supports full-second resolution portably, 2713and even on systems where the resolution is higher, most file systems 2714still only support whole seconds. 2715 2716That means that, if the time is the only thing that changes, you can 2717easily miss updates: on the first update, C<ev_stat> detects a change and 2718calls your callback, which does something. When there is another update 2719within the same second, C<ev_stat> will be unable to detect unless the 2720stat data does change in other ways (e.g. file size). 2721 2722The solution to this is to delay acting on a change for slightly more 2723than a second (or till slightly after the next full second boundary), using 2724a roughly one-second-delay C<ev_timer> (e.g. C<ev_timer_set (w, 0., 1.02); 2725ev_timer_again (loop, w)>). 2726 2727The C<.02> offset is added to work around small timing inconsistencies 2728of some operating systems (where the second counter of the current time 2729might be be delayed. One such system is the Linux kernel, where a call to 2730C<gettimeofday> might return a timestamp with a full second later than 2731a subsequent C<time> call - if the equivalent of C<time ()> is used to 2732update file times then there will be a small window where the kernel uses 2733the previous second to update file times but libev might already execute 2734the timer callback). 2735 2736=head3 Watcher-Specific Functions and Data Members 2737 2738=over 4 2739 2740=item ev_stat_init (ev_stat *, callback, const char *path, ev_tstamp interval) 2741 2742=item ev_stat_set (ev_stat *, const char *path, ev_tstamp interval) 2743 2744Configures the watcher to wait for status changes of the given 2745C<path>. The C<interval> is a hint on how quickly a change is expected to 2746be detected and should normally be specified as C<0> to let libev choose 2747a suitable value. The memory pointed to by C<path> must point to the same 2748path for as long as the watcher is active. 2749 2750The callback will receive an C<EV_STAT> event when a change was detected, 2751relative to the attributes at the time the watcher was started (or the 2752last change was detected). 2753 2754=item ev_stat_stat (loop, ev_stat *) 2755 2756Updates the stat buffer immediately with new values. If you change the 2757watched path in your callback, you could call this function to avoid 2758detecting this change (while introducing a race condition if you are not 2759the only one changing the path). Can also be useful simply to find out the 2760new values. 2761 2762=item ev_statdata attr [read-only] 2763 2764The most-recently detected attributes of the file. Although the type is 2765C<ev_statdata>, this is usually the (or one of the) C<struct stat> types 2766suitable for your system, but you can only rely on the POSIX-standardised 2767members to be present. If the C<st_nlink> member is C<0>, then there was 2768some error while C<stat>ing the file. 2769 2770=item ev_statdata prev [read-only] 2771 2772The previous attributes of the file. The callback gets invoked whenever 2773C<prev> != C<attr>, or, more precisely, one or more of these members 2774differ: C<st_dev>, C<st_ino>, C<st_mode>, C<st_nlink>, C<st_uid>, 2775C<st_gid>, C<st_rdev>, C<st_size>, C<st_atime>, C<st_mtime>, C<st_ctime>. 2776 2777=item ev_tstamp interval [read-only] 2778 2779The specified interval. 2780 2781=item const char *path [read-only] 2782 2783The file system path that is being watched. 2784 2785=back 2786 2787=head3 Examples 2788 2789Example: Watch C</etc/passwd> for attribute changes. 2790 2791 static void 2792 passwd_cb (struct ev_loop *loop, ev_stat *w, int revents) 2793 { 2794 /* /etc/passwd changed in some way */ 2795 if (w->attr.st_nlink) 2796 { 2797 printf ("passwd current size %ld\n", (long)w->attr.st_size); 2798 printf ("passwd current atime %ld\n", (long)w->attr.st_mtime); 2799 printf ("passwd current mtime %ld\n", (long)w->attr.st_mtime); 2800 } 2801 else 2802 /* you shalt not abuse printf for puts */ 2803 puts ("wow, /etc/passwd is not there, expect problems. " 2804 "if this is windows, they already arrived\n"); 2805 } 2806 2807 ... 2808 ev_stat passwd; 2809 2810 ev_stat_init (&passwd, passwd_cb, "/etc/passwd", 0.); 2811 ev_stat_start (loop, &passwd); 2812 2813Example: Like above, but additionally use a one-second delay so we do not 2814miss updates (however, frequent updates will delay processing, too, so 2815one might do the work both on C<ev_stat> callback invocation I<and> on 2816C<ev_timer> callback invocation). 2817 2818 static ev_stat passwd; 2819 static ev_timer timer; 2820 2821 static void 2822 timer_cb (EV_P_ ev_timer *w, int revents) 2823 { 2824 ev_timer_stop (EV_A_ w); 2825 2826 /* now it's one second after the most recent passwd change */ 2827 } 2828 2829 static void 2830 stat_cb (EV_P_ ev_stat *w, int revents) 2831 { 2832 /* reset the one-second timer */ 2833 ev_timer_again (EV_A_ &timer); 2834 } 2835 2836 ... 2837 ev_stat_init (&passwd, stat_cb, "/etc/passwd", 0.); 2838 ev_stat_start (loop, &passwd); 2839 ev_timer_init (&timer, timer_cb, 0., 1.02); 2840 2841 2842=head2 C<ev_idle> - when you've got nothing better to do... 2843 2844Idle watchers trigger events when no other events of the same or higher 2845priority are pending (prepare, check and other idle watchers do not count 2846as receiving "events"). 2847 2848That is, as long as your process is busy handling sockets or timeouts 2849(or even signals, imagine) of the same or higher priority it will not be 2850triggered. But when your process is idle (or only lower-priority watchers 2851are pending), the idle watchers are being called once per event loop 2852iteration - until stopped, that is, or your process receives more events 2853and becomes busy again with higher priority stuff. 2854 2855The most noteworthy effect is that as long as any idle watchers are 2856active, the process will not block when waiting for new events. 2857 2858Apart from keeping your process non-blocking (which is a useful 2859effect on its own sometimes), idle watchers are a good place to do 2860"pseudo-background processing", or delay processing stuff to after the 2861event loop has handled all outstanding events. 2862 2863=head3 Abusing an C<ev_idle> watcher for its side-effect 2864 2865As long as there is at least one active idle watcher, libev will never 2866sleep unnecessarily. Or in other words, it will loop as fast as possible. 2867For this to work, the idle watcher doesn't need to be invoked at all - the 2868lowest priority will do. 2869 2870This mode of operation can be useful together with an C<ev_check> watcher, 2871to do something on each event loop iteration - for example to balance load 2872between different connections. 2873 2874See L</Abusing an ev_check watcher for its side-effect> for a longer 2875example. 2876 2877=head3 Watcher-Specific Functions and Data Members 2878 2879=over 4 2880 2881=item ev_idle_init (ev_idle *, callback) 2882 2883Initialises and configures the idle watcher - it has no parameters of any 2884kind. There is a C<ev_idle_set> macro, but using it is utterly pointless, 2885believe me. 2886 2887=back 2888 2889=head3 Examples 2890 2891Example: Dynamically allocate an C<ev_idle> watcher, start it, and in the 2892callback, free it. Also, use no error checking, as usual. 2893 2894 static void 2895 idle_cb (struct ev_loop *loop, ev_idle *w, int revents) 2896 { 2897 // stop the watcher 2898 ev_idle_stop (loop, w); 2899 2900 // now we can free it 2901 free (w); 2902 2903 // now do something you wanted to do when the program has 2904 // no longer anything immediate to do. 2905 } 2906 2907 ev_idle *idle_watcher = malloc (sizeof (ev_idle)); 2908 ev_idle_init (idle_watcher, idle_cb); 2909 ev_idle_start (loop, idle_watcher); 2910 2911 2912=head2 C<ev_prepare> and C<ev_check> - customise your event loop! 2913 2914Prepare and check watchers are often (but not always) used in pairs: 2915prepare watchers get invoked before the process blocks and check watchers 2916afterwards. 2917 2918You I<must not> call C<ev_run> (or similar functions that enter the 2919current event loop) or C<ev_loop_fork> from either C<ev_prepare> or 2920C<ev_check> watchers. Other loops than the current one are fine, 2921however. The rationale behind this is that you do not need to check 2922for recursion in those watchers, i.e. the sequence will always be 2923C<ev_prepare>, blocking, C<ev_check> so if you have one watcher of each 2924kind they will always be called in pairs bracketing the blocking call. 2925 2926Their main purpose is to integrate other event mechanisms into libev and 2927their use is somewhat advanced. They could be used, for example, to track 2928variable changes, implement your own watchers, integrate net-snmp or a 2929coroutine library and lots more. They are also occasionally useful if 2930you cache some data and want to flush it before blocking (for example, 2931in X programs you might want to do an C<XFlush ()> in an C<ev_prepare> 2932watcher). 2933 2934This is done by examining in each prepare call which file descriptors 2935need to be watched by the other library, registering C<ev_io> watchers 2936for them and starting an C<ev_timer> watcher for any timeouts (many 2937libraries provide exactly this functionality). Then, in the check watcher, 2938you check for any events that occurred (by checking the pending status 2939of all watchers and stopping them) and call back into the library. The 2940I/O and timer callbacks will never actually be called (but must be valid 2941nevertheless, because you never know, you know?). 2942 2943As another example, the Perl Coro module uses these hooks to integrate 2944coroutines into libev programs, by yielding to other active coroutines 2945during each prepare and only letting the process block if no coroutines 2946are ready to run (it's actually more complicated: it only runs coroutines 2947with priority higher than or equal to the event loop and one coroutine 2948of lower priority, but only once, using idle watchers to keep the event 2949loop from blocking if lower-priority coroutines are active, thus mapping 2950low-priority coroutines to idle/background tasks). 2951 2952When used for this purpose, it is recommended to give C<ev_check> watchers 2953highest (C<EV_MAXPRI>) priority, to ensure that they are being run before 2954any other watchers after the poll (this doesn't matter for C<ev_prepare> 2955watchers). 2956 2957Also, C<ev_check> watchers (and C<ev_prepare> watchers, too) should not 2958activate ("feed") events into libev. While libev fully supports this, they 2959might get executed before other C<ev_check> watchers did their job. As 2960C<ev_check> watchers are often used to embed other (non-libev) event 2961loops those other event loops might be in an unusable state until their 2962C<ev_check> watcher ran (always remind yourself to coexist peacefully with 2963others). 2964 2965=head3 Abusing an C<ev_check> watcher for its side-effect 2966 2967C<ev_check> (and less often also C<ev_prepare>) watchers can also be 2968useful because they are called once per event loop iteration. For 2969example, if you want to handle a large number of connections fairly, you 2970normally only do a bit of work for each active connection, and if there 2971is more work to do, you wait for the next event loop iteration, so other 2972connections have a chance of making progress. 2973 2974Using an C<ev_check> watcher is almost enough: it will be called on the 2975next event loop iteration. However, that isn't as soon as possible - 2976without external events, your C<ev_check> watcher will not be invoked. 2977 2978This is where C<ev_idle> watchers come in handy - all you need is a 2979single global idle watcher that is active as long as you have one active 2980C<ev_check> watcher. The C<ev_idle> watcher makes sure the event loop 2981will not sleep, and the C<ev_check> watcher makes sure a callback gets 2982invoked. Neither watcher alone can do that. 2983 2984=head3 Watcher-Specific Functions and Data Members 2985 2986=over 4 2987 2988=item ev_prepare_init (ev_prepare *, callback) 2989 2990=item ev_check_init (ev_check *, callback) 2991 2992Initialises and configures the prepare or check watcher - they have no 2993parameters of any kind. There are C<ev_prepare_set> and C<ev_check_set> 2994macros, but using them is utterly, utterly, utterly and completely 2995pointless. 2996 2997=back 2998 2999=head3 Examples 3000 3001There are a number of principal ways to embed other event loops or modules 3002into libev. Here are some ideas on how to include libadns into libev 3003(there is a Perl module named C<EV::ADNS> that does this, which you could 3004use as a working example. Another Perl module named C<EV::Glib> embeds a 3005Glib main context into libev, and finally, C<Glib::EV> embeds EV into the 3006Glib event loop). 3007 3008Method 1: Add IO watchers and a timeout watcher in a prepare handler, 3009and in a check watcher, destroy them and call into libadns. What follows 3010is pseudo-code only of course. This requires you to either use a low 3011priority for the check watcher or use C<ev_clear_pending> explicitly, as 3012the callbacks for the IO/timeout watchers might not have been called yet. 3013 3014 static ev_io iow [nfd]; 3015 static ev_timer tw; 3016 3017 static void 3018 io_cb (struct ev_loop *loop, ev_io *w, int revents) 3019 { 3020 } 3021 3022 // create io watchers for each fd and a timer before blocking 3023 static void 3024 adns_prepare_cb (struct ev_loop *loop, ev_prepare *w, int revents) 3025 { 3026 int timeout = 3600000; 3027 struct pollfd fds [nfd]; 3028 // actual code will need to loop here and realloc etc. 3029 adns_beforepoll (ads, fds, &nfd, &timeout, timeval_from (ev_time ())); 3030 3031 /* the callback is illegal, but won't be called as we stop during check */ 3032 ev_timer_init (&tw, 0, timeout * 1e-3, 0.); 3033 ev_timer_start (loop, &tw); 3034 3035 // create one ev_io per pollfd 3036 for (int i = 0; i < nfd; ++i) 3037 { 3038 ev_io_init (iow + i, io_cb, fds [i].fd, 3039 ((fds [i].events & POLLIN ? EV_READ : 0) 3040 | (fds [i].events & POLLOUT ? EV_WRITE : 0))); 3041 3042 fds [i].revents = 0; 3043 ev_io_start (loop, iow + i); 3044 } 3045 } 3046 3047 // stop all watchers after blocking 3048 static void 3049 adns_check_cb (struct ev_loop *loop, ev_check *w, int revents) 3050 { 3051 ev_timer_stop (loop, &tw); 3052 3053 for (int i = 0; i < nfd; ++i) 3054 { 3055 // set the relevant poll flags 3056 // could also call adns_processreadable etc. here 3057 struct pollfd *fd = fds + i; 3058 int revents = ev_clear_pending (iow + i); 3059 if (revents & EV_READ ) fd->revents |= fd->events & POLLIN; 3060 if (revents & EV_WRITE) fd->revents |= fd->events & POLLOUT; 3061 3062 // now stop the watcher 3063 ev_io_stop (loop, iow + i); 3064 } 3065 3066 adns_afterpoll (adns, fds, nfd, timeval_from (ev_now (loop)); 3067 } 3068 3069Method 2: This would be just like method 1, but you run C<adns_afterpoll> 3070in the prepare watcher and would dispose of the check watcher. 3071 3072Method 3: If the module to be embedded supports explicit event 3073notification (libadns does), you can also make use of the actual watcher 3074callbacks, and only destroy/create the watchers in the prepare watcher. 3075 3076 static void 3077 timer_cb (EV_P_ ev_timer *w, int revents) 3078 { 3079 adns_state ads = (adns_state)w->data; 3080 update_now (EV_A); 3081 3082 adns_processtimeouts (ads, &tv_now); 3083 } 3084 3085 static void 3086 io_cb (EV_P_ ev_io *w, int revents) 3087 { 3088 adns_state ads = (adns_state)w->data; 3089 update_now (EV_A); 3090 3091 if (revents & EV_READ ) adns_processreadable (ads, w->fd, &tv_now); 3092 if (revents & EV_WRITE) adns_processwriteable (ads, w->fd, &tv_now); 3093 } 3094 3095 // do not ever call adns_afterpoll 3096 3097Method 4: Do not use a prepare or check watcher because the module you 3098want to embed is not flexible enough to support it. Instead, you can 3099override their poll function. The drawback with this solution is that the 3100main loop is now no longer controllable by EV. The C<Glib::EV> module uses 3101this approach, effectively embedding EV as a client into the horrible 3102libglib event loop. 3103 3104 static gint 3105 event_poll_func (GPollFD *fds, guint nfds, gint timeout) 3106 { 3107 int got_events = 0; 3108 3109 for (n = 0; n < nfds; ++n) 3110 // create/start io watcher that sets the relevant bits in fds[n] and increment got_events 3111 3112 if (timeout >= 0) 3113 // create/start timer 3114 3115 // poll 3116 ev_run (EV_A_ 0); 3117 3118 // stop timer again 3119 if (timeout >= 0) 3120 ev_timer_stop (EV_A_ &to); 3121 3122 // stop io watchers again - their callbacks should have set 3123 for (n = 0; n < nfds; ++n) 3124 ev_io_stop (EV_A_ iow [n]); 3125 3126 return got_events; 3127 } 3128 3129 3130=head2 C<ev_embed> - when one backend isn't enough... 3131 3132This is a rather advanced watcher type that lets you embed one event loop 3133into another (currently only C<ev_io> events are supported in the embedded 3134loop, other types of watchers might be handled in a delayed or incorrect 3135fashion and must not be used). 3136 3137There are primarily two reasons you would want that: work around bugs and 3138prioritise I/O. 3139 3140As an example for a bug workaround, the kqueue backend might only support 3141sockets on some platform, so it is unusable as generic backend, but you 3142still want to make use of it because you have many sockets and it scales 3143so nicely. In this case, you would create a kqueue-based loop and embed 3144it into your default loop (which might use e.g. poll). Overall operation 3145will be a bit slower because first libev has to call C<poll> and then 3146C<kevent>, but at least you can use both mechanisms for what they are 3147best: C<kqueue> for scalable sockets and C<poll> if you want it to work :) 3148 3149As for prioritising I/O: under rare circumstances you have the case where 3150some fds have to be watched and handled very quickly (with low latency), 3151and even priorities and idle watchers might have too much overhead. In 3152this case you would put all the high priority stuff in one loop and all 3153the rest in a second one, and embed the second one in the first. 3154 3155As long as the watcher is active, the callback will be invoked every 3156time there might be events pending in the embedded loop. The callback 3157must then call C<ev_embed_sweep (mainloop, watcher)> to make a single 3158sweep and invoke their callbacks (the callback doesn't need to invoke the 3159C<ev_embed_sweep> function directly, it could also start an idle watcher 3160to give the embedded loop strictly lower priority for example). 3161 3162You can also set the callback to C<0>, in which case the embed watcher 3163will automatically execute the embedded loop sweep whenever necessary. 3164 3165Fork detection will be handled transparently while the C<ev_embed> watcher 3166is active, i.e., the embedded loop will automatically be forked when the 3167embedding loop forks. In other cases, the user is responsible for calling 3168C<ev_loop_fork> on the embedded loop. 3169 3170Unfortunately, not all backends are embeddable: only the ones returned by 3171C<ev_embeddable_backends> are, which, unfortunately, does not include any 3172portable one. 3173 3174So when you want to use this feature you will always have to be prepared 3175that you cannot get an embeddable loop. The recommended way to get around 3176this is to have a separate variables for your embeddable loop, try to 3177create it, and if that fails, use the normal loop for everything. 3178 3179=head3 C<ev_embed> and fork 3180 3181While the C<ev_embed> watcher is running, forks in the embedding loop will 3182automatically be applied to the embedded loop as well, so no special 3183fork handling is required in that case. When the watcher is not running, 3184however, it is still the task of the libev user to call C<ev_loop_fork ()> 3185as applicable. 3186 3187=head3 Watcher-Specific Functions and Data Members 3188 3189=over 4 3190 3191=item ev_embed_init (ev_embed *, callback, struct ev_loop *embedded_loop) 3192 3193=item ev_embed_set (ev_embed *, struct ev_loop *embedded_loop) 3194 3195Configures the watcher to embed the given loop, which must be 3196embeddable. If the callback is C<0>, then C<ev_embed_sweep> will be 3197invoked automatically, otherwise it is the responsibility of the callback 3198to invoke it (it will continue to be called until the sweep has been done, 3199if you do not want that, you need to temporarily stop the embed watcher). 3200 3201=item ev_embed_sweep (loop, ev_embed *) 3202 3203Make a single, non-blocking sweep over the embedded loop. This works 3204similarly to C<ev_run (embedded_loop, EVRUN_NOWAIT)>, but in the most 3205appropriate way for embedded loops. 3206 3207=item struct ev_loop *other [read-only] 3208 3209The embedded event loop. 3210 3211=back 3212 3213=head3 Examples 3214 3215Example: Try to get an embeddable event loop and embed it into the default 3216event loop. If that is not possible, use the default loop. The default 3217loop is stored in C<loop_hi>, while the embeddable loop is stored in 3218C<loop_lo> (which is C<loop_hi> in the case no embeddable loop can be 3219used). 3220 3221 struct ev_loop *loop_hi = ev_default_init (0); 3222 struct ev_loop *loop_lo = 0; 3223 ev_embed embed; 3224 3225 // see if there is a chance of getting one that works 3226 // (remember that a flags value of 0 means autodetection) 3227 loop_lo = ev_embeddable_backends () & ev_recommended_backends () 3228 ? ev_loop_new (ev_embeddable_backends () & ev_recommended_backends ()) 3229 : 0; 3230 3231 // if we got one, then embed it, otherwise default to loop_hi 3232 if (loop_lo) 3233 { 3234 ev_embed_init (&embed, 0, loop_lo); 3235 ev_embed_start (loop_hi, &embed); 3236 } 3237 else 3238 loop_lo = loop_hi; 3239 3240Example: Check if kqueue is available but not recommended and create 3241a kqueue backend for use with sockets (which usually work with any 3242kqueue implementation). Store the kqueue/socket-only event loop in 3243C<loop_socket>. (One might optionally use C<EVFLAG_NOENV>, too). 3244 3245 struct ev_loop *loop = ev_default_init (0); 3246 struct ev_loop *loop_socket = 0; 3247 ev_embed embed; 3248 3249 if (ev_supported_backends () & ~ev_recommended_backends () & EVBACKEND_KQUEUE) 3250 if ((loop_socket = ev_loop_new (EVBACKEND_KQUEUE)) 3251 { 3252 ev_embed_init (&embed, 0, loop_socket); 3253 ev_embed_start (loop, &embed); 3254 } 3255 3256 if (!loop_socket) 3257 loop_socket = loop; 3258 3259 // now use loop_socket for all sockets, and loop for everything else 3260 3261 3262=head2 C<ev_fork> - the audacity to resume the event loop after a fork 3263 3264Fork watchers are called when a C<fork ()> was detected (usually because 3265whoever is a good citizen cared to tell libev about it by calling 3266C<ev_loop_fork>). The invocation is done before the event loop blocks next 3267and before C<ev_check> watchers are being called, and only in the child 3268after the fork. If whoever good citizen calling C<ev_default_fork> cheats 3269and calls it in the wrong process, the fork handlers will be invoked, too, 3270of course. 3271 3272=head3 The special problem of life after fork - how is it possible? 3273 3274Most uses of C<fork ()> consist of forking, then some simple calls to set 3275up/change the process environment, followed by a call to C<exec()>. This 3276sequence should be handled by libev without any problems. 3277 3278This changes when the application actually wants to do event handling 3279in the child, or both parent in child, in effect "continuing" after the 3280fork. 3281 3282The default mode of operation (for libev, with application help to detect 3283forks) is to duplicate all the state in the child, as would be expected 3284when I<either> the parent I<or> the child process continues. 3285 3286When both processes want to continue using libev, then this is usually the 3287wrong result. In that case, usually one process (typically the parent) is 3288supposed to continue with all watchers in place as before, while the other 3289process typically wants to start fresh, i.e. without any active watchers. 3290 3291The cleanest and most efficient way to achieve that with libev is to 3292simply create a new event loop, which of course will be "empty", and 3293use that for new watchers. This has the advantage of not touching more 3294memory than necessary, and thus avoiding the copy-on-write, and the 3295disadvantage of having to use multiple event loops (which do not support 3296signal watchers). 3297 3298When this is not possible, or you want to use the default loop for 3299other reasons, then in the process that wants to start "fresh", call 3300C<ev_loop_destroy (EV_DEFAULT)> followed by C<ev_default_loop (...)>. 3301Destroying the default loop will "orphan" (not stop) all registered 3302watchers, so you have to be careful not to execute code that modifies 3303those watchers. Note also that in that case, you have to re-register any 3304signal watchers. 3305 3306=head3 Watcher-Specific Functions and Data Members 3307 3308=over 4 3309 3310=item ev_fork_init (ev_fork *, callback) 3311 3312Initialises and configures the fork watcher - it has no parameters of any 3313kind. There is a C<ev_fork_set> macro, but using it is utterly pointless, 3314really. 3315 3316=back 3317 3318 3319=head2 C<ev_cleanup> - even the best things end 3320 3321Cleanup watchers are called just before the event loop is being destroyed 3322by a call to C<ev_loop_destroy>. 3323 3324While there is no guarantee that the event loop gets destroyed, cleanup 3325watchers provide a convenient method to install cleanup hooks for your 3326program, worker threads and so on - you just to make sure to destroy the 3327loop when you want them to be invoked. 3328 3329Cleanup watchers are invoked in the same way as any other watcher. Unlike 3330all other watchers, they do not keep a reference to the event loop (which 3331makes a lot of sense if you think about it). Like all other watchers, you 3332can call libev functions in the callback, except C<ev_cleanup_start>. 3333 3334=head3 Watcher-Specific Functions and Data Members 3335 3336=over 4 3337 3338=item ev_cleanup_init (ev_cleanup *, callback) 3339 3340Initialises and configures the cleanup watcher - it has no parameters of 3341any kind. There is a C<ev_cleanup_set> macro, but using it is utterly 3342pointless, I assure you. 3343 3344=back 3345 3346Example: Register an atexit handler to destroy the default loop, so any 3347cleanup functions are called. 3348 3349 static void 3350 program_exits (void) 3351 { 3352 ev_loop_destroy (EV_DEFAULT_UC); 3353 } 3354 3355 ... 3356 atexit (program_exits); 3357 3358 3359=head2 C<ev_async> - how to wake up an event loop 3360 3361In general, you cannot use an C<ev_loop> from multiple threads or other 3362asynchronous sources such as signal handlers (as opposed to multiple event 3363loops - those are of course safe to use in different threads). 3364 3365Sometimes, however, you need to wake up an event loop you do not control, 3366for example because it belongs to another thread. This is what C<ev_async> 3367watchers do: as long as the C<ev_async> watcher is active, you can signal 3368it by calling C<ev_async_send>, which is thread- and signal safe. 3369 3370This functionality is very similar to C<ev_signal> watchers, as signals, 3371too, are asynchronous in nature, and signals, too, will be compressed 3372(i.e. the number of callback invocations may be less than the number of 3373C<ev_async_send> calls). In fact, you could use signal watchers as a kind 3374of "global async watchers" by using a watcher on an otherwise unused 3375signal, and C<ev_feed_signal> to signal this watcher from another thread, 3376even without knowing which loop owns the signal. 3377 3378=head3 Queueing 3379 3380C<ev_async> does not support queueing of data in any way. The reason 3381is that the author does not know of a simple (or any) algorithm for a 3382multiple-writer-single-reader queue that works in all cases and doesn't 3383need elaborate support such as pthreads or unportable memory access 3384semantics. 3385 3386That means that if you want to queue data, you have to provide your own 3387queue. But at least I can tell you how to implement locking around your 3388queue: 3389 3390=over 4 3391 3392=item queueing from a signal handler context 3393 3394To implement race-free queueing, you simply add to the queue in the signal 3395handler but you block the signal handler in the watcher callback. Here is 3396an example that does that for some fictitious SIGUSR1 handler: 3397 3398 static ev_async mysig; 3399 3400 static void 3401 sigusr1_handler (void) 3402 { 3403 sometype data; 3404 3405 // no locking etc. 3406 queue_put (data); 3407 ev_async_send (EV_DEFAULT_ &mysig); 3408 } 3409 3410 static void 3411 mysig_cb (EV_P_ ev_async *w, int revents) 3412 { 3413 sometype data; 3414 sigset_t block, prev; 3415 3416 sigemptyset (&block); 3417 sigaddset (&block, SIGUSR1); 3418 sigprocmask (SIG_BLOCK, &block, &prev); 3419 3420 while (queue_get (&data)) 3421 process (data); 3422 3423 if (sigismember (&prev, SIGUSR1) 3424 sigprocmask (SIG_UNBLOCK, &block, 0); 3425 } 3426 3427(Note: pthreads in theory requires you to use C<pthread_setmask> 3428instead of C<sigprocmask> when you use threads, but libev doesn't do it 3429either...). 3430 3431=item queueing from a thread context 3432 3433The strategy for threads is different, as you cannot (easily) block 3434threads but you can easily preempt them, so to queue safely you need to 3435employ a traditional mutex lock, such as in this pthread example: 3436 3437 static ev_async mysig; 3438 static pthread_mutex_t mymutex = PTHREAD_MUTEX_INITIALIZER; 3439 3440 static void 3441 otherthread (void) 3442 { 3443 // only need to lock the actual queueing operation 3444 pthread_mutex_lock (&mymutex); 3445 queue_put (data); 3446 pthread_mutex_unlock (&mymutex); 3447 3448 ev_async_send (EV_DEFAULT_ &mysig); 3449 } 3450 3451 static void 3452 mysig_cb (EV_P_ ev_async *w, int revents) 3453 { 3454 pthread_mutex_lock (&mymutex); 3455 3456 while (queue_get (&data)) 3457 process (data); 3458 3459 pthread_mutex_unlock (&mymutex); 3460 } 3461 3462=back 3463 3464 3465=head3 Watcher-Specific Functions and Data Members 3466 3467=over 4 3468 3469=item ev_async_init (ev_async *, callback) 3470 3471Initialises and configures the async watcher - it has no parameters of any 3472kind. There is a C<ev_async_set> macro, but using it is utterly pointless, 3473trust me. 3474 3475=item ev_async_send (loop, ev_async *) 3476 3477Sends/signals/activates the given C<ev_async> watcher, that is, feeds 3478an C<EV_ASYNC> event on the watcher into the event loop, and instantly 3479returns. 3480 3481Unlike C<ev_feed_event>, this call is safe to do from other threads, 3482signal or similar contexts (see the discussion of C<EV_ATOMIC_T> in the 3483embedding section below on what exactly this means). 3484 3485Note that, as with other watchers in libev, multiple events might get 3486compressed into a single callback invocation (another way to look at 3487this is that C<ev_async> watchers are level-triggered: they are set on 3488C<ev_async_send>, reset when the event loop detects that). 3489 3490This call incurs the overhead of at most one extra system call per event 3491loop iteration, if the event loop is blocked, and no syscall at all if 3492the event loop (or your program) is processing events. That means that 3493repeated calls are basically free (there is no need to avoid calls for 3494performance reasons) and that the overhead becomes smaller (typically 3495zero) under load. 3496 3497=item bool = ev_async_pending (ev_async *) 3498 3499Returns a non-zero value when C<ev_async_send> has been called on the 3500watcher but the event has not yet been processed (or even noted) by the 3501event loop. 3502 3503C<ev_async_send> sets a flag in the watcher and wakes up the loop. When 3504the loop iterates next and checks for the watcher to have become active, 3505it will reset the flag again. C<ev_async_pending> can be used to very 3506quickly check whether invoking the loop might be a good idea. 3507 3508Not that this does I<not> check whether the watcher itself is pending, 3509only whether it has been requested to make this watcher pending: there 3510is a time window between the event loop checking and resetting the async 3511notification, and the callback being invoked. 3512 3513=back 3514 3515 3516=head1 OTHER FUNCTIONS 3517 3518There are some other functions of possible interest. Described. Here. Now. 3519 3520=over 4 3521 3522=item ev_once (loop, int fd, int events, ev_tstamp timeout, callback) 3523 3524This function combines a simple timer and an I/O watcher, calls your 3525callback on whichever event happens first and automatically stops both 3526watchers. This is useful if you want to wait for a single event on an fd 3527or timeout without having to allocate/configure/start/stop/free one or 3528more watchers yourself. 3529 3530If C<fd> is less than 0, then no I/O watcher will be started and the 3531C<events> argument is being ignored. Otherwise, an C<ev_io> watcher for 3532the given C<fd> and C<events> set will be created and started. 3533 3534If C<timeout> is less than 0, then no timeout watcher will be 3535started. Otherwise an C<ev_timer> watcher with after = C<timeout> (and 3536repeat = 0) will be started. C<0> is a valid timeout. 3537 3538The callback has the type C<void (*cb)(int revents, void *arg)> and is 3539passed an C<revents> set like normal event callbacks (a combination of 3540C<EV_ERROR>, C<EV_READ>, C<EV_WRITE> or C<EV_TIMER>) and the C<arg> 3541value passed to C<ev_once>. Note that it is possible to receive I<both> 3542a timeout and an io event at the same time - you probably should give io 3543events precedence. 3544 3545Example: wait up to ten seconds for data to appear on STDIN_FILENO. 3546 3547 static void stdin_ready (int revents, void *arg) 3548 { 3549 if (revents & EV_READ) 3550 /* stdin might have data for us, joy! */; 3551 else if (revents & EV_TIMER) 3552 /* doh, nothing entered */; 3553 } 3554 3555 ev_once (STDIN_FILENO, EV_READ, 10., stdin_ready, 0); 3556 3557=item ev_feed_fd_event (loop, int fd, int revents) 3558 3559Feed an event on the given fd, as if a file descriptor backend detected 3560the given events. 3561 3562=item ev_feed_signal_event (loop, int signum) 3563 3564Feed an event as if the given signal occurred. See also C<ev_feed_signal>, 3565which is async-safe. 3566 3567=back 3568 3569 3570=head1 COMMON OR USEFUL IDIOMS (OR BOTH) 3571 3572This section explains some common idioms that are not immediately 3573obvious. Note that examples are sprinkled over the whole manual, and this 3574section only contains stuff that wouldn't fit anywhere else. 3575 3576=head2 ASSOCIATING CUSTOM DATA WITH A WATCHER 3577 3578Each watcher has, by default, a C<void *data> member that you can read 3579or modify at any time: libev will completely ignore it. This can be used 3580to associate arbitrary data with your watcher. If you need more data and 3581don't want to allocate memory separately and store a pointer to it in that 3582data member, you can also "subclass" the watcher type and provide your own 3583data: 3584 3585 struct my_io 3586 { 3587 ev_io io; 3588 int otherfd; 3589 void *somedata; 3590 struct whatever *mostinteresting; 3591 }; 3592 3593 ... 3594 struct my_io w; 3595 ev_io_init (&w.io, my_cb, fd, EV_READ); 3596 3597And since your callback will be called with a pointer to the watcher, you 3598can cast it back to your own type: 3599 3600 static void my_cb (struct ev_loop *loop, ev_io *w_, int revents) 3601 { 3602 struct my_io *w = (struct my_io *)w_; 3603 ... 3604 } 3605 3606More interesting and less C-conformant ways of casting your callback 3607function type instead have been omitted. 3608 3609=head2 BUILDING YOUR OWN COMPOSITE WATCHERS 3610 3611Another common scenario is to use some data structure with multiple 3612embedded watchers, in effect creating your own watcher that combines 3613multiple libev event sources into one "super-watcher": 3614 3615 struct my_biggy 3616 { 3617 int some_data; 3618 ev_timer t1; 3619 ev_timer t2; 3620 } 3621 3622In this case getting the pointer to C<my_biggy> is a bit more 3623complicated: Either you store the address of your C<my_biggy> struct in 3624the C<data> member of the watcher (for woozies or C++ coders), or you need 3625to use some pointer arithmetic using C<offsetof> inside your watchers (for 3626real programmers): 3627 3628 #include <stddef.h> 3629 3630 static void 3631 t1_cb (EV_P_ ev_timer *w, int revents) 3632 { 3633 struct my_biggy big = (struct my_biggy *) 3634 (((char *)w) - offsetof (struct my_biggy, t1)); 3635 } 3636 3637 static void 3638 t2_cb (EV_P_ ev_timer *w, int revents) 3639 { 3640 struct my_biggy big = (struct my_biggy *) 3641 (((char *)w) - offsetof (struct my_biggy, t2)); 3642 } 3643 3644=head2 AVOIDING FINISHING BEFORE RETURNING 3645 3646Often you have structures like this in event-based programs: 3647 3648 callback () 3649 { 3650 free (request); 3651 } 3652 3653 request = start_new_request (..., callback); 3654 3655The intent is to start some "lengthy" operation. The C<request> could be 3656used to cancel the operation, or do other things with it. 3657 3658It's not uncommon to have code paths in C<start_new_request> that 3659immediately invoke the callback, for example, to report errors. Or you add 3660some caching layer that finds that it can skip the lengthy aspects of the 3661operation and simply invoke the callback with the result. 3662 3663The problem here is that this will happen I<before> C<start_new_request> 3664has returned, so C<request> is not set. 3665 3666Even if you pass the request by some safer means to the callback, you 3667might want to do something to the request after starting it, such as 3668canceling it, which probably isn't working so well when the callback has 3669already been invoked. 3670 3671A common way around all these issues is to make sure that 3672C<start_new_request> I<always> returns before the callback is invoked. If 3673C<start_new_request> immediately knows the result, it can artificially 3674delay invoking the callback by using a C<prepare> or C<idle> watcher for 3675example, or more sneakily, by reusing an existing (stopped) watcher and 3676pushing it into the pending queue: 3677 3678 ev_set_cb (watcher, callback); 3679 ev_feed_event (EV_A_ watcher, 0); 3680 3681This way, C<start_new_request> can safely return before the callback is 3682invoked, while not delaying callback invocation too much. 3683 3684=head2 MODEL/NESTED EVENT LOOP INVOCATIONS AND EXIT CONDITIONS 3685 3686Often (especially in GUI toolkits) there are places where you have 3687I<modal> interaction, which is most easily implemented by recursively 3688invoking C<ev_run>. 3689 3690This brings the problem of exiting - a callback might want to finish the 3691main C<ev_run> call, but not the nested one (e.g. user clicked "Quit", but 3692a modal "Are you sure?" dialog is still waiting), or just the nested one 3693and not the main one (e.g. user clocked "Ok" in a modal dialog), or some 3694other combination: In these cases, a simple C<ev_break> will not work. 3695 3696The solution is to maintain "break this loop" variable for each C<ev_run> 3697invocation, and use a loop around C<ev_run> until the condition is 3698triggered, using C<EVRUN_ONCE>: 3699 3700 // main loop 3701 int exit_main_loop = 0; 3702 3703 while (!exit_main_loop) 3704 ev_run (EV_DEFAULT_ EVRUN_ONCE); 3705 3706 // in a modal watcher 3707 int exit_nested_loop = 0; 3708 3709 while (!exit_nested_loop) 3710 ev_run (EV_A_ EVRUN_ONCE); 3711 3712To exit from any of these loops, just set the corresponding exit variable: 3713 3714 // exit modal loop 3715 exit_nested_loop = 1; 3716 3717 // exit main program, after modal loop is finished 3718 exit_main_loop = 1; 3719 3720 // exit both 3721 exit_main_loop = exit_nested_loop = 1; 3722 3723=head2 THREAD LOCKING EXAMPLE 3724 3725Here is a fictitious example of how to run an event loop in a different 3726thread from where callbacks are being invoked and watchers are 3727created/added/removed. 3728 3729For a real-world example, see the C<EV::Loop::Async> perl module, 3730which uses exactly this technique (which is suited for many high-level 3731languages). 3732 3733The example uses a pthread mutex to protect the loop data, a condition 3734variable to wait for callback invocations, an async watcher to notify the 3735event loop thread and an unspecified mechanism to wake up the main thread. 3736 3737First, you need to associate some data with the event loop: 3738 3739 typedef struct { 3740 mutex_t lock; /* global loop lock */ 3741 ev_async async_w; 3742 thread_t tid; 3743 cond_t invoke_cv; 3744 } userdata; 3745 3746 void prepare_loop (EV_P) 3747 { 3748 // for simplicity, we use a static userdata struct. 3749 static userdata u; 3750 3751 ev_async_init (&u->async_w, async_cb); 3752 ev_async_start (EV_A_ &u->async_w); 3753 3754 pthread_mutex_init (&u->lock, 0); 3755 pthread_cond_init (&u->invoke_cv, 0); 3756 3757 // now associate this with the loop 3758 ev_set_userdata (EV_A_ u); 3759 ev_set_invoke_pending_cb (EV_A_ l_invoke); 3760 ev_set_loop_release_cb (EV_A_ l_release, l_acquire); 3761 3762 // then create the thread running ev_run 3763 pthread_create (&u->tid, 0, l_run, EV_A); 3764 } 3765 3766The callback for the C<ev_async> watcher does nothing: the watcher is used 3767solely to wake up the event loop so it takes notice of any new watchers 3768that might have been added: 3769 3770 static void 3771 async_cb (EV_P_ ev_async *w, int revents) 3772 { 3773 // just used for the side effects 3774 } 3775 3776The C<l_release> and C<l_acquire> callbacks simply unlock/lock the mutex 3777protecting the loop data, respectively. 3778 3779 static void 3780 l_release (EV_P) 3781 { 3782 userdata *u = ev_userdata (EV_A); 3783 pthread_mutex_unlock (&u->lock); 3784 } 3785 3786 static void 3787 l_acquire (EV_P) 3788 { 3789 userdata *u = ev_userdata (EV_A); 3790 pthread_mutex_lock (&u->lock); 3791 } 3792 3793The event loop thread first acquires the mutex, and then jumps straight 3794into C<ev_run>: 3795 3796 void * 3797 l_run (void *thr_arg) 3798 { 3799 struct ev_loop *loop = (struct ev_loop *)thr_arg; 3800 3801 l_acquire (EV_A); 3802 pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, 0); 3803 ev_run (EV_A_ 0); 3804 l_release (EV_A); 3805 3806 return 0; 3807 } 3808 3809Instead of invoking all pending watchers, the C<l_invoke> callback will 3810signal the main thread via some unspecified mechanism (signals? pipe 3811writes? C<Async::Interrupt>?) and then waits until all pending watchers 3812have been called (in a while loop because a) spurious wakeups are possible 3813and b) skipping inter-thread-communication when there are no pending 3814watchers is very beneficial): 3815 3816 static void 3817 l_invoke (EV_P) 3818 { 3819 userdata *u = ev_userdata (EV_A); 3820 3821 while (ev_pending_count (EV_A)) 3822 { 3823 wake_up_other_thread_in_some_magic_or_not_so_magic_way (); 3824 pthread_cond_wait (&u->invoke_cv, &u->lock); 3825 } 3826 } 3827 3828Now, whenever the main thread gets told to invoke pending watchers, it 3829will grab the lock, call C<ev_invoke_pending> and then signal the loop 3830thread to continue: 3831 3832 static void 3833 real_invoke_pending (EV_P) 3834 { 3835 userdata *u = ev_userdata (EV_A); 3836 3837 pthread_mutex_lock (&u->lock); 3838 ev_invoke_pending (EV_A); 3839 pthread_cond_signal (&u->invoke_cv); 3840 pthread_mutex_unlock (&u->lock); 3841 } 3842 3843Whenever you want to start/stop a watcher or do other modifications to an 3844event loop, you will now have to lock: 3845 3846 ev_timer timeout_watcher; 3847 userdata *u = ev_userdata (EV_A); 3848 3849 ev_timer_init (&timeout_watcher, timeout_cb, 5.5, 0.); 3850 3851 pthread_mutex_lock (&u->lock); 3852 ev_timer_start (EV_A_ &timeout_watcher); 3853 ev_async_send (EV_A_ &u->async_w); 3854 pthread_mutex_unlock (&u->lock); 3855 3856Note that sending the C<ev_async> watcher is required because otherwise 3857an event loop currently blocking in the kernel will have no knowledge 3858about the newly added timer. By waking up the loop it will pick up any new 3859watchers in the next event loop iteration. 3860 3861=head2 THREADS, COROUTINES, CONTINUATIONS, QUEUES... INSTEAD OF CALLBACKS 3862 3863While the overhead of a callback that e.g. schedules a thread is small, it 3864is still an overhead. If you embed libev, and your main usage is with some 3865kind of threads or coroutines, you might want to customise libev so that 3866doesn't need callbacks anymore. 3867 3868Imagine you have coroutines that you can switch to using a function 3869C<switch_to (coro)>, that libev runs in a coroutine called C<libev_coro> 3870and that due to some magic, the currently active coroutine is stored in a 3871global called C<current_coro>. Then you can build your own "wait for libev 3872event" primitive by changing C<EV_CB_DECLARE> and C<EV_CB_INVOKE> (note 3873the differing C<;> conventions): 3874 3875 #define EV_CB_DECLARE(type) struct my_coro *cb; 3876 #define EV_CB_INVOKE(watcher) switch_to ((watcher)->cb) 3877 3878That means instead of having a C callback function, you store the 3879coroutine to switch to in each watcher, and instead of having libev call 3880your callback, you instead have it switch to that coroutine. 3881 3882A coroutine might now wait for an event with a function called 3883C<wait_for_event>. (the watcher needs to be started, as always, but it doesn't 3884matter when, or whether the watcher is active or not when this function is 3885called): 3886 3887 void 3888 wait_for_event (ev_watcher *w) 3889 { 3890 ev_set_cb (w, current_coro); 3891 switch_to (libev_coro); 3892 } 3893 3894That basically suspends the coroutine inside C<wait_for_event> and 3895continues the libev coroutine, which, when appropriate, switches back to 3896this or any other coroutine. 3897 3898You can do similar tricks if you have, say, threads with an event queue - 3899instead of storing a coroutine, you store the queue object and instead of 3900switching to a coroutine, you push the watcher onto the queue and notify 3901any waiters. 3902 3903To embed libev, see L</EMBEDDING>, but in short, it's easiest to create two 3904files, F<my_ev.h> and F<my_ev.c> that include the respective libev files: 3905 3906 // my_ev.h 3907 #define EV_CB_DECLARE(type) struct my_coro *cb; 3908 #define EV_CB_INVOKE(watcher) switch_to ((watcher)->cb) 3909 #include "../libev/ev.h" 3910 3911 // my_ev.c 3912 #define EV_H "my_ev.h" 3913 #include "../libev/ev.c" 3914 3915And then use F<my_ev.h> when you would normally use F<ev.h>, and compile 3916F<my_ev.c> into your project. When properly specifying include paths, you 3917can even use F<ev.h> as header file name directly. 3918 3919 3920=head1 LIBEVENT EMULATION 3921 3922Libev offers a compatibility emulation layer for libevent. It cannot 3923emulate the internals of libevent, so here are some usage hints: 3924 3925=over 4 3926 3927=item * Only the libevent-1.4.1-beta API is being emulated. 3928 3929This was the newest libevent version available when libev was implemented, 3930and is still mostly unchanged in 2010. 3931 3932=item * Use it by including <event.h>, as usual. 3933 3934=item * The following members are fully supported: ev_base, ev_callback, 3935ev_arg, ev_fd, ev_res, ev_events. 3936 3937=item * Avoid using ev_flags and the EVLIST_*-macros, while it is 3938maintained by libev, it does not work exactly the same way as in libevent (consider 3939it a private API). 3940 3941=item * Priorities are not currently supported. Initialising priorities 3942will fail and all watchers will have the same priority, even though there 3943is an ev_pri field. 3944 3945=item * In libevent, the last base created gets the signals, in libev, the 3946base that registered the signal gets the signals. 3947 3948=item * Other members are not supported. 3949 3950=item * The libev emulation is I<not> ABI compatible to libevent, you need 3951to use the libev header file and library. 3952 3953=back 3954 3955=head1 C++ SUPPORT 3956 3957=head2 C API 3958 3959The normal C API should work fine when used from C++: both ev.h and the 3960libev sources can be compiled as C++. Therefore, code that uses the C API 3961will work fine. 3962 3963Proper exception specifications might have to be added to callbacks passed 3964to libev: exceptions may be thrown only from watcher callbacks, all 3965other callbacks (allocator, syserr, loop acquire/release and periodic 3966reschedule callbacks) must not throw exceptions, and might need a C<throw 3967()> specification. If you have code that needs to be compiled as both C 3968and C++ you can use the C<EV_THROW> macro for this: 3969 3970 static void 3971 fatal_error (const char *msg) EV_THROW 3972 { 3973 perror (msg); 3974 abort (); 3975 } 3976 3977 ... 3978 ev_set_syserr_cb (fatal_error); 3979 3980The only API functions that can currently throw exceptions are C<ev_run>, 3981C<ev_invoke>, C<ev_invoke_pending> and C<ev_loop_destroy> (the latter 3982because it runs cleanup watchers). 3983 3984Throwing exceptions in watcher callbacks is only supported if libev itself 3985is compiled with a C++ compiler or your C and C++ environments allow 3986throwing exceptions through C libraries (most do). 3987 3988=head2 C++ API 3989 3990Libev comes with some simplistic wrapper classes for C++ that mainly allow 3991you to use some convenience methods to start/stop watchers and also change 3992the callback model to a model using method callbacks on objects. 3993 3994To use it, 3995 3996 #include <ev++.h> 3997 3998This automatically includes F<ev.h> and puts all of its definitions (many 3999of them macros) into the global namespace. All C++ specific things are 4000put into the C<ev> namespace. It should support all the same embedding 4001options as F<ev.h>, most notably C<EV_MULTIPLICITY>. 4002 4003Care has been taken to keep the overhead low. The only data member the C++ 4004classes add (compared to plain C-style watchers) is the event loop pointer 4005that the watcher is associated with (or no additional members at all if 4006you disable C<EV_MULTIPLICITY> when embedding libev). 4007 4008Currently, functions, static and non-static member functions and classes 4009with C<operator ()> can be used as callbacks. Other types should be easy 4010to add as long as they only need one additional pointer for context. If 4011you need support for other types of functors please contact the author 4012(preferably after implementing it). 4013 4014For all this to work, your C++ compiler either has to use the same calling 4015conventions as your C compiler (for static member functions), or you have 4016to embed libev and compile libev itself as C++. 4017 4018Here is a list of things available in the C<ev> namespace: 4019 4020=over 4 4021 4022=item C<ev::READ>, C<ev::WRITE> etc. 4023 4024These are just enum values with the same values as the C<EV_READ> etc. 4025macros from F<ev.h>. 4026 4027=item C<ev::tstamp>, C<ev::now> 4028 4029Aliases to the same types/functions as with the C<ev_> prefix. 4030 4031=item C<ev::io>, C<ev::timer>, C<ev::periodic>, C<ev::idle>, C<ev::sig> etc. 4032 4033For each C<ev_TYPE> watcher in F<ev.h> there is a corresponding class of 4034the same name in the C<ev> namespace, with the exception of C<ev_signal> 4035which is called C<ev::sig> to avoid clashes with the C<signal> macro 4036defined by many implementations. 4037 4038All of those classes have these methods: 4039 4040=over 4 4041 4042=item ev::TYPE::TYPE () 4043 4044=item ev::TYPE::TYPE (loop) 4045 4046=item ev::TYPE::~TYPE 4047 4048The constructor (optionally) takes an event loop to associate the watcher 4049with. If it is omitted, it will use C<EV_DEFAULT>. 4050 4051The constructor calls C<ev_init> for you, which means you have to call the 4052C<set> method before starting it. 4053 4054It will not set a callback, however: You have to call the templated C<set> 4055method to set a callback before you can start the watcher. 4056 4057(The reason why you have to use a method is a limitation in C++ which does 4058not allow explicit template arguments for constructors). 4059 4060The destructor automatically stops the watcher if it is active. 4061 4062=item w->set<class, &class::method> (object *) 4063 4064This method sets the callback method to call. The method has to have a 4065signature of C<void (*)(ev_TYPE &, int)>, it receives the watcher as 4066first argument and the C<revents> as second. The object must be given as 4067parameter and is stored in the C<data> member of the watcher. 4068 4069This method synthesizes efficient thunking code to call your method from 4070the C callback that libev requires. If your compiler can inline your 4071callback (i.e. it is visible to it at the place of the C<set> call and 4072your compiler is good :), then the method will be fully inlined into the 4073thunking function, making it as fast as a direct C callback. 4074 4075Example: simple class declaration and watcher initialisation 4076 4077 struct myclass 4078 { 4079 void io_cb (ev::io &w, int revents) { } 4080 } 4081 4082 myclass obj; 4083 ev::io iow; 4084 iow.set <myclass, &myclass::io_cb> (&obj); 4085 4086=item w->set (object *) 4087 4088This is a variation of a method callback - leaving out the method to call 4089will default the method to C<operator ()>, which makes it possible to use 4090functor objects without having to manually specify the C<operator ()> all 4091the time. Incidentally, you can then also leave out the template argument 4092list. 4093 4094The C<operator ()> method prototype must be C<void operator ()(watcher &w, 4095int revents)>. 4096 4097See the method-C<set> above for more details. 4098 4099Example: use a functor object as callback. 4100 4101 struct myfunctor 4102 { 4103 void operator() (ev::io &w, int revents) 4104 { 4105 ... 4106 } 4107 } 4108 4109 myfunctor f; 4110 4111 ev::io w; 4112 w.set (&f); 4113 4114=item w->set<function> (void *data = 0) 4115 4116Also sets a callback, but uses a static method or plain function as 4117callback. The optional C<data> argument will be stored in the watcher's 4118C<data> member and is free for you to use. 4119 4120The prototype of the C<function> must be C<void (*)(ev::TYPE &w, int)>. 4121 4122See the method-C<set> above for more details. 4123 4124Example: Use a plain function as callback. 4125 4126 static void io_cb (ev::io &w, int revents) { } 4127 iow.set <io_cb> (); 4128 4129=item w->set (loop) 4130 4131Associates a different C<struct ev_loop> with this watcher. You can only 4132do this when the watcher is inactive (and not pending either). 4133 4134=item w->set ([arguments]) 4135 4136Basically the same as C<ev_TYPE_set> (except for C<ev::embed> watchers>), 4137with the same arguments. Either this method or a suitable start method 4138must be called at least once. Unlike the C counterpart, an active watcher 4139gets automatically stopped and restarted when reconfiguring it with this 4140method. 4141 4142For C<ev::embed> watchers this method is called C<set_embed>, to avoid 4143clashing with the C<set (loop)> method. 4144 4145=item w->start () 4146 4147Starts the watcher. Note that there is no C<loop> argument, as the 4148constructor already stores the event loop. 4149 4150=item w->start ([arguments]) 4151 4152Instead of calling C<set> and C<start> methods separately, it is often 4153convenient to wrap them in one call. Uses the same type of arguments as 4154the configure C<set> method of the watcher. 4155 4156=item w->stop () 4157 4158Stops the watcher if it is active. Again, no C<loop> argument. 4159 4160=item w->again () (C<ev::timer>, C<ev::periodic> only) 4161 4162For C<ev::timer> and C<ev::periodic>, this invokes the corresponding 4163C<ev_TYPE_again> function. 4164 4165=item w->sweep () (C<ev::embed> only) 4166 4167Invokes C<ev_embed_sweep>. 4168 4169=item w->update () (C<ev::stat> only) 4170 4171Invokes C<ev_stat_stat>. 4172 4173=back 4174 4175=back 4176 4177Example: Define a class with two I/O and idle watchers, start the I/O 4178watchers in the constructor. 4179 4180 class myclass 4181 { 4182 ev::io io ; void io_cb (ev::io &w, int revents); 4183 ev::io io2 ; void io2_cb (ev::io &w, int revents); 4184 ev::idle idle; void idle_cb (ev::idle &w, int revents); 4185 4186 myclass (int fd) 4187 { 4188 io .set <myclass, &myclass::io_cb > (this); 4189 io2 .set <myclass, &myclass::io2_cb > (this); 4190 idle.set <myclass, &myclass::idle_cb> (this); 4191 4192 io.set (fd, ev::WRITE); // configure the watcher 4193 io.start (); // start it whenever convenient 4194 4195 io2.start (fd, ev::READ); // set + start in one call 4196 } 4197 }; 4198 4199 4200=head1 OTHER LANGUAGE BINDINGS 4201 4202Libev does not offer other language bindings itself, but bindings for a 4203number of languages exist in the form of third-party packages. If you know 4204any interesting language binding in addition to the ones listed here, drop 4205me a note. 4206 4207=over 4 4208 4209=item Perl 4210 4211The EV module implements the full libev API and is actually used to test 4212libev. EV is developed together with libev. Apart from the EV core module, 4213there are additional modules that implement libev-compatible interfaces 4214to C<libadns> (C<EV::ADNS>, but C<AnyEvent::DNS> is preferred nowadays), 4215C<Net::SNMP> (C<Net::SNMP::EV>) and the C<libglib> event core (C<Glib::EV> 4216and C<EV::Glib>). 4217 4218It can be found and installed via CPAN, its homepage is at 4219L<http://software.schmorp.de/pkg/EV>. 4220 4221=item Python 4222 4223Python bindings can be found at L<http://code.google.com/p/pyev/>. It 4224seems to be quite complete and well-documented. 4225 4226=item Ruby 4227 4228Tony Arcieri has written a ruby extension that offers access to a subset 4229of the libev API and adds file handle abstractions, asynchronous DNS and 4230more on top of it. It can be found via gem servers. Its homepage is at 4231L<http://rev.rubyforge.org/>. 4232 4233Roger Pack reports that using the link order C<-lws2_32 -lmsvcrt-ruby-190> 4234makes rev work even on mingw. 4235 4236=item Haskell 4237 4238A haskell binding to libev is available at 4239L<http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hlibev>. 4240 4241=item D 4242 4243Leandro Lucarella has written a D language binding (F<ev.d>) for libev, to 4244be found at L<http://www.llucax.com.ar/proj/ev.d/index.html>. 4245 4246=item Ocaml 4247 4248Erkki Seppala has written Ocaml bindings for libev, to be found at 4249L<http://modeemi.cs.tut.fi/~flux/software/ocaml-ev/>. 4250 4251=item Lua 4252 4253Brian Maher has written a partial interface to libev for lua (at the 4254time of this writing, only C<ev_io> and C<ev_timer>), to be found at 4255L<http://github.com/brimworks/lua-ev>. 4256 4257=item Javascript 4258 4259Node.js (L<http://nodejs.org>) uses libev as the underlying event library. 4260 4261=item Others 4262 4263There are others, and I stopped counting. 4264 4265=back 4266 4267 4268=head1 MACRO MAGIC 4269 4270Libev can be compiled with a variety of options, the most fundamental 4271of which is C<EV_MULTIPLICITY>. This option determines whether (most) 4272functions and callbacks have an initial C<struct ev_loop *> argument. 4273 4274To make it easier to write programs that cope with either variant, the 4275following macros are defined: 4276 4277=over 4 4278 4279=item C<EV_A>, C<EV_A_> 4280 4281This provides the loop I<argument> for functions, if one is required ("ev 4282loop argument"). The C<EV_A> form is used when this is the sole argument, 4283C<EV_A_> is used when other arguments are following. Example: 4284 4285 ev_unref (EV_A); 4286 ev_timer_add (EV_A_ watcher); 4287 ev_run (EV_A_ 0); 4288 4289It assumes the variable C<loop> of type C<struct ev_loop *> is in scope, 4290which is often provided by the following macro. 4291 4292=item C<EV_P>, C<EV_P_> 4293 4294This provides the loop I<parameter> for functions, if one is required ("ev 4295loop parameter"). The C<EV_P> form is used when this is the sole parameter, 4296C<EV_P_> is used when other parameters are following. Example: 4297 4298 // this is how ev_unref is being declared 4299 static void ev_unref (EV_P); 4300 4301 // this is how you can declare your typical callback 4302 static void cb (EV_P_ ev_timer *w, int revents) 4303 4304It declares a parameter C<loop> of type C<struct ev_loop *>, quite 4305suitable for use with C<EV_A>. 4306 4307=item C<EV_DEFAULT>, C<EV_DEFAULT_> 4308 4309Similar to the other two macros, this gives you the value of the default 4310loop, if multiple loops are supported ("ev loop default"). The default loop 4311will be initialised if it isn't already initialised. 4312 4313For non-multiplicity builds, these macros do nothing, so you always have 4314to initialise the loop somewhere. 4315 4316=item C<EV_DEFAULT_UC>, C<EV_DEFAULT_UC_> 4317 4318Usage identical to C<EV_DEFAULT> and C<EV_DEFAULT_>, but requires that the 4319default loop has been initialised (C<UC> == unchecked). Their behaviour 4320is undefined when the default loop has not been initialised by a previous 4321execution of C<EV_DEFAULT>, C<EV_DEFAULT_> or C<ev_default_init (...)>. 4322 4323It is often prudent to use C<EV_DEFAULT> when initialising the first 4324watcher in a function but use C<EV_DEFAULT_UC> afterwards. 4325 4326=back 4327 4328Example: Declare and initialise a check watcher, utilising the above 4329macros so it will work regardless of whether multiple loops are supported 4330or not. 4331 4332 static void 4333 check_cb (EV_P_ ev_timer *w, int revents) 4334 { 4335 ev_check_stop (EV_A_ w); 4336 } 4337 4338 ev_check check; 4339 ev_check_init (&check, check_cb); 4340 ev_check_start (EV_DEFAULT_ &check); 4341 ev_run (EV_DEFAULT_ 0); 4342 4343=head1 EMBEDDING 4344 4345Libev can (and often is) directly embedded into host 4346applications. Examples of applications that embed it include the Deliantra 4347Game Server, the EV perl module, the GNU Virtual Private Ethernet (gvpe) 4348and rxvt-unicode. 4349 4350The goal is to enable you to just copy the necessary files into your 4351source directory without having to change even a single line in them, so 4352you can easily upgrade by simply copying (or having a checked-out copy of 4353libev somewhere in your source tree). 4354 4355=head2 FILESETS 4356 4357Depending on what features you need you need to include one or more sets of files 4358in your application. 4359 4360=head3 CORE EVENT LOOP 4361 4362To include only the libev core (all the C<ev_*> functions), with manual 4363configuration (no autoconf): 4364 4365 #define EV_STANDALONE 1 4366 #include "ev.c" 4367 4368This will automatically include F<ev.h>, too, and should be done in a 4369single C source file only to provide the function implementations. To use 4370it, do the same for F<ev.h> in all files wishing to use this API (best 4371done by writing a wrapper around F<ev.h> that you can include instead and 4372where you can put other configuration options): 4373 4374 #define EV_STANDALONE 1 4375 #include "ev.h" 4376 4377Both header files and implementation files can be compiled with a C++ 4378compiler (at least, that's a stated goal, and breakage will be treated 4379as a bug). 4380 4381You need the following files in your source tree, or in a directory 4382in your include path (e.g. in libev/ when using -Ilibev): 4383 4384 ev.h 4385 ev.c 4386 ev_vars.h 4387 ev_wrap.h 4388 4389 ev_win32.c required on win32 platforms only 4390 4391 ev_select.c only when select backend is enabled (which is enabled by default) 4392 ev_poll.c only when poll backend is enabled (disabled by default) 4393 ev_epoll.c only when the epoll backend is enabled (disabled by default) 4394 ev_kqueue.c only when the kqueue backend is enabled (disabled by default) 4395 ev_port.c only when the solaris port backend is enabled (disabled by default) 4396 4397F<ev.c> includes the backend files directly when enabled, so you only need 4398to compile this single file. 4399 4400=head3 LIBEVENT COMPATIBILITY API 4401 4402To include the libevent compatibility API, also include: 4403 4404 #include "event.c" 4405 4406in the file including F<ev.c>, and: 4407 4408 #include "event.h" 4409 4410in the files that want to use the libevent API. This also includes F<ev.h>. 4411 4412You need the following additional files for this: 4413 4414 event.h 4415 event.c 4416 4417=head3 AUTOCONF SUPPORT 4418 4419Instead of using C<EV_STANDALONE=1> and providing your configuration in 4420whatever way you want, you can also C<m4_include([libev.m4])> in your 4421F<configure.ac> and leave C<EV_STANDALONE> undefined. F<ev.c> will then 4422include F<config.h> and configure itself accordingly. 4423 4424For this of course you need the m4 file: 4425 4426 libev.m4 4427 4428=head2 PREPROCESSOR SYMBOLS/MACROS 4429 4430Libev can be configured via a variety of preprocessor symbols you have to 4431define before including (or compiling) any of its files. The default in 4432the absence of autoconf is documented for every option. 4433 4434Symbols marked with "(h)" do not change the ABI, and can have different 4435values when compiling libev vs. including F<ev.h>, so it is permissible 4436to redefine them before including F<ev.h> without breaking compatibility 4437to a compiled library. All other symbols change the ABI, which means all 4438users of libev and the libev code itself must be compiled with compatible 4439settings. 4440 4441=over 4 4442 4443=item EV_COMPAT3 (h) 4444 4445Backwards compatibility is a major concern for libev. This is why this 4446release of libev comes with wrappers for the functions and symbols that 4447have been renamed between libev version 3 and 4. 4448 4449You can disable these wrappers (to test compatibility with future 4450versions) by defining C<EV_COMPAT3> to C<0> when compiling your 4451sources. This has the additional advantage that you can drop the C<struct> 4452from C<struct ev_loop> declarations, as libev will provide an C<ev_loop> 4453typedef in that case. 4454 4455In some future version, the default for C<EV_COMPAT3> will become C<0>, 4456and in some even more future version the compatibility code will be 4457removed completely. 4458 4459=item EV_STANDALONE (h) 4460 4461Must always be C<1> if you do not use autoconf configuration, which 4462keeps libev from including F<config.h>, and it also defines dummy 4463implementations for some libevent functions (such as logging, which is not 4464supported). It will also not define any of the structs usually found in 4465F<event.h> that are not directly supported by the libev core alone. 4466 4467In standalone mode, libev will still try to automatically deduce the 4468configuration, but has to be more conservative. 4469 4470=item EV_USE_FLOOR 4471 4472If defined to be C<1>, libev will use the C<floor ()> function for its 4473periodic reschedule calculations, otherwise libev will fall back on a 4474portable (slower) implementation. If you enable this, you usually have to 4475link against libm or something equivalent. Enabling this when the C<floor> 4476function is not available will fail, so the safe default is to not enable 4477this. 4478 4479=item EV_USE_MONOTONIC 4480 4481If defined to be C<1>, libev will try to detect the availability of the 4482monotonic clock option at both compile time and runtime. Otherwise no 4483use of the monotonic clock option will be attempted. If you enable this, 4484you usually have to link against librt or something similar. Enabling it 4485when the functionality isn't available is safe, though, although you have 4486to make sure you link against any libraries where the C<clock_gettime> 4487function is hiding in (often F<-lrt>). See also C<EV_USE_CLOCK_SYSCALL>. 4488 4489=item EV_USE_REALTIME 4490 4491If defined to be C<1>, libev will try to detect the availability of the 4492real-time clock option at compile time (and assume its availability 4493at runtime if successful). Otherwise no use of the real-time clock 4494option will be attempted. This effectively replaces C<gettimeofday> 4495by C<clock_get (CLOCK_REALTIME, ...)> and will not normally affect 4496correctness. See the note about libraries in the description of 4497C<EV_USE_MONOTONIC>, though. Defaults to the opposite value of 4498C<EV_USE_CLOCK_SYSCALL>. 4499 4500=item EV_USE_CLOCK_SYSCALL 4501 4502If defined to be C<1>, libev will try to use a direct syscall instead 4503of calling the system-provided C<clock_gettime> function. This option 4504exists because on GNU/Linux, C<clock_gettime> is in C<librt>, but C<librt> 4505unconditionally pulls in C<libpthread>, slowing down single-threaded 4506programs needlessly. Using a direct syscall is slightly slower (in 4507theory), because no optimised vdso implementation can be used, but avoids 4508the pthread dependency. Defaults to C<1> on GNU/Linux with glibc 2.x or 4509higher, as it simplifies linking (no need for C<-lrt>). 4510 4511=item EV_USE_NANOSLEEP 4512 4513If defined to be C<1>, libev will assume that C<nanosleep ()> is available 4514and will use it for delays. Otherwise it will use C<select ()>. 4515 4516=item EV_USE_EVENTFD 4517 4518If defined to be C<1>, then libev will assume that C<eventfd ()> is 4519available and will probe for kernel support at runtime. This will improve 4520C<ev_signal> and C<ev_async> performance and reduce resource consumption. 4521If undefined, it will be enabled if the headers indicate GNU/Linux + Glibc 45222.7 or newer, otherwise disabled. 4523 4524=item EV_USE_SELECT 4525 4526If undefined or defined to be C<1>, libev will compile in support for the 4527C<select>(2) backend. No attempt at auto-detection will be done: if no 4528other method takes over, select will be it. Otherwise the select backend 4529will not be compiled in. 4530 4531=item EV_SELECT_USE_FD_SET 4532 4533If defined to C<1>, then the select backend will use the system C<fd_set> 4534structure. This is useful if libev doesn't compile due to a missing 4535C<NFDBITS> or C<fd_mask> definition or it mis-guesses the bitset layout 4536on exotic systems. This usually limits the range of file descriptors to 4537some low limit such as 1024 or might have other limitations (winsocket 4538only allows 64 sockets). The C<FD_SETSIZE> macro, set before compilation, 4539configures the maximum size of the C<fd_set>. 4540 4541=item EV_SELECT_IS_WINSOCKET 4542 4543When defined to C<1>, the select backend will assume that 4544select/socket/connect etc. don't understand file descriptors but 4545wants osf handles on win32 (this is the case when the select to 4546be used is the winsock select). This means that it will call 4547C<_get_osfhandle> on the fd to convert it to an OS handle. Otherwise, 4548it is assumed that all these functions actually work on fds, even 4549on win32. Should not be defined on non-win32 platforms. 4550 4551=item EV_FD_TO_WIN32_HANDLE(fd) 4552 4553If C<EV_SELECT_IS_WINSOCKET> is enabled, then libev needs a way to map 4554file descriptors to socket handles. When not defining this symbol (the 4555default), then libev will call C<_get_osfhandle>, which is usually 4556correct. In some cases, programs use their own file descriptor management, 4557in which case they can provide this function to map fds to socket handles. 4558 4559=item EV_WIN32_HANDLE_TO_FD(handle) 4560 4561If C<EV_SELECT_IS_WINSOCKET> then libev maps handles to file descriptors 4562using the standard C<_open_osfhandle> function. For programs implementing 4563their own fd to handle mapping, overwriting this function makes it easier 4564to do so. This can be done by defining this macro to an appropriate value. 4565 4566=item EV_WIN32_CLOSE_FD(fd) 4567 4568If programs implement their own fd to handle mapping on win32, then this 4569macro can be used to override the C<close> function, useful to unregister 4570file descriptors again. Note that the replacement function has to close 4571the underlying OS handle. 4572 4573=item EV_USE_WSASOCKET 4574 4575If defined to be C<1>, libev will use C<WSASocket> to create its internal 4576communication socket, which works better in some environments. Otherwise, 4577the normal C<socket> function will be used, which works better in other 4578environments. 4579 4580=item EV_USE_POLL 4581 4582If defined to be C<1>, libev will compile in support for the C<poll>(2) 4583backend. Otherwise it will be enabled on non-win32 platforms. It 4584takes precedence over select. 4585 4586=item EV_USE_EPOLL 4587 4588If defined to be C<1>, libev will compile in support for the Linux 4589C<epoll>(7) backend. Its availability will be detected at runtime, 4590otherwise another method will be used as fallback. This is the preferred 4591backend for GNU/Linux systems. If undefined, it will be enabled if the 4592headers indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled. 4593 4594=item EV_USE_KQUEUE 4595 4596If defined to be C<1>, libev will compile in support for the BSD style 4597C<kqueue>(2) backend. Its actual availability will be detected at runtime, 4598otherwise another method will be used as fallback. This is the preferred 4599backend for BSD and BSD-like systems, although on most BSDs kqueue only 4600supports some types of fds correctly (the only platform we found that 4601supports ptys for example was NetBSD), so kqueue might be compiled in, but 4602not be used unless explicitly requested. The best way to use it is to find 4603out whether kqueue supports your type of fd properly and use an embedded 4604kqueue loop. 4605 4606=item EV_USE_PORT 4607 4608If defined to be C<1>, libev will compile in support for the Solaris 460910 port style backend. Its availability will be detected at runtime, 4610otherwise another method will be used as fallback. This is the preferred 4611backend for Solaris 10 systems. 4612 4613=item EV_USE_DEVPOLL 4614 4615Reserved for future expansion, works like the USE symbols above. 4616 4617=item EV_USE_INOTIFY 4618 4619If defined to be C<1>, libev will compile in support for the Linux inotify 4620interface to speed up C<ev_stat> watchers. Its actual availability will 4621be detected at runtime. If undefined, it will be enabled if the headers 4622indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled. 4623 4624=item EV_NO_SMP 4625 4626If defined to be C<1>, libev will assume that memory is always coherent 4627between threads, that is, threads can be used, but threads never run on 4628different cpus (or different cpu cores). This reduces dependencies 4629and makes libev faster. 4630 4631=item EV_NO_THREADS 4632 4633If defined to be C<1>, libev will assume that it will never be called from 4634different threads (that includes signal handlers), which is a stronger 4635assumption than C<EV_NO_SMP>, above. This reduces dependencies and makes 4636libev faster. 4637 4638=item EV_ATOMIC_T 4639 4640Libev requires an integer type (suitable for storing C<0> or C<1>) whose 4641access is atomic with respect to other threads or signal contexts. No 4642such type is easily found in the C language, so you can provide your own 4643type that you know is safe for your purposes. It is used both for signal 4644handler "locking" as well as for signal and thread safety in C<ev_async> 4645watchers. 4646 4647In the absence of this define, libev will use C<sig_atomic_t volatile> 4648(from F<signal.h>), which is usually good enough on most platforms. 4649 4650=item EV_H (h) 4651 4652The name of the F<ev.h> header file used to include it. The default if 4653undefined is C<"ev.h"> in F<event.h>, F<ev.c> and F<ev++.h>. This can be 4654used to virtually rename the F<ev.h> header file in case of conflicts. 4655 4656=item EV_CONFIG_H (h) 4657 4658If C<EV_STANDALONE> isn't C<1>, this variable can be used to override 4659F<ev.c>'s idea of where to find the F<config.h> file, similarly to 4660C<EV_H>, above. 4661 4662=item EV_EVENT_H (h) 4663 4664Similarly to C<EV_H>, this macro can be used to override F<event.c>'s idea 4665of how the F<event.h> header can be found, the default is C<"event.h">. 4666 4667=item EV_PROTOTYPES (h) 4668 4669If defined to be C<0>, then F<ev.h> will not define any function 4670prototypes, but still define all the structs and other symbols. This is 4671occasionally useful if you want to provide your own wrapper functions 4672around libev functions. 4673 4674=item EV_MULTIPLICITY 4675 4676If undefined or defined to C<1>, then all event-loop-specific functions 4677will have the C<struct ev_loop *> as first argument, and you can create 4678additional independent event loops. Otherwise there will be no support 4679for multiple event loops and there is no first event loop pointer 4680argument. Instead, all functions act on the single default loop. 4681 4682Note that C<EV_DEFAULT> and C<EV_DEFAULT_> will no longer provide a 4683default loop when multiplicity is switched off - you always have to 4684initialise the loop manually in this case. 4685 4686=item EV_MINPRI 4687 4688=item EV_MAXPRI 4689 4690The range of allowed priorities. C<EV_MINPRI> must be smaller or equal to 4691C<EV_MAXPRI>, but otherwise there are no non-obvious limitations. You can 4692provide for more priorities by overriding those symbols (usually defined 4693to be C<-2> and C<2>, respectively). 4694 4695When doing priority-based operations, libev usually has to linearly search 4696all the priorities, so having many of them (hundreds) uses a lot of space 4697and time, so using the defaults of five priorities (-2 .. +2) is usually 4698fine. 4699 4700If your embedding application does not need any priorities, defining these 4701both to C<0> will save some memory and CPU. 4702 4703=item EV_PERIODIC_ENABLE, EV_IDLE_ENABLE, EV_EMBED_ENABLE, EV_STAT_ENABLE, 4704EV_PREPARE_ENABLE, EV_CHECK_ENABLE, EV_FORK_ENABLE, EV_SIGNAL_ENABLE, 4705EV_ASYNC_ENABLE, EV_CHILD_ENABLE. 4706 4707If undefined or defined to be C<1> (and the platform supports it), then 4708the respective watcher type is supported. If defined to be C<0>, then it 4709is not. Disabling watcher types mainly saves code size. 4710 4711=item EV_FEATURES 4712 4713If you need to shave off some kilobytes of code at the expense of some 4714speed (but with the full API), you can define this symbol to request 4715certain subsets of functionality. The default is to enable all features 4716that can be enabled on the platform. 4717 4718A typical way to use this symbol is to define it to C<0> (or to a bitset 4719with some broad features you want) and then selectively re-enable 4720additional parts you want, for example if you want everything minimal, 4721but multiple event loop support, async and child watchers and the poll 4722backend, use this: 4723 4724 #define EV_FEATURES 0 4725 #define EV_MULTIPLICITY 1 4726 #define EV_USE_POLL 1 4727 #define EV_CHILD_ENABLE 1 4728 #define EV_ASYNC_ENABLE 1 4729 4730The actual value is a bitset, it can be a combination of the following 4731values (by default, all of these are enabled): 4732 4733=over 4 4734 4735=item C<1> - faster/larger code 4736 4737Use larger code to speed up some operations. 4738 4739Currently this is used to override some inlining decisions (enlarging the 4740code size by roughly 30% on amd64). 4741 4742When optimising for size, use of compiler flags such as C<-Os> with 4743gcc is recommended, as well as C<-DNDEBUG>, as libev contains a number of 4744assertions. 4745 4746The default is off when C<__OPTIMIZE_SIZE__> is defined by your compiler 4747(e.g. gcc with C<-Os>). 4748 4749=item C<2> - faster/larger data structures 4750 4751Replaces the small 2-heap for timer management by a faster 4-heap, larger 4752hash table sizes and so on. This will usually further increase code size 4753and can additionally have an effect on the size of data structures at 4754runtime. 4755 4756The default is off when C<__OPTIMIZE_SIZE__> is defined by your compiler 4757(e.g. gcc with C<-Os>). 4758 4759=item C<4> - full API configuration 4760 4761This enables priorities (sets C<EV_MAXPRI>=2 and C<EV_MINPRI>=-2), and 4762enables multiplicity (C<EV_MULTIPLICITY>=1). 4763 4764=item C<8> - full API 4765 4766This enables a lot of the "lesser used" API functions. See C<ev.h> for 4767details on which parts of the API are still available without this 4768feature, and do not complain if this subset changes over time. 4769 4770=item C<16> - enable all optional watcher types 4771 4772Enables all optional watcher types. If you want to selectively enable 4773only some watcher types other than I/O and timers (e.g. prepare, 4774embed, async, child...) you can enable them manually by defining 4775C<EV_watchertype_ENABLE> to C<1> instead. 4776 4777=item C<32> - enable all backends 4778 4779This enables all backends - without this feature, you need to enable at 4780least one backend manually (C<EV_USE_SELECT> is a good choice). 4781 4782=item C<64> - enable OS-specific "helper" APIs 4783 4784Enable inotify, eventfd, signalfd and similar OS-specific helper APIs by 4785default. 4786 4787=back 4788 4789Compiling with C<gcc -Os -DEV_STANDALONE -DEV_USE_EPOLL=1 -DEV_FEATURES=0> 4790reduces the compiled size of libev from 24.7Kb code/2.8Kb data to 6.5Kb 4791code/0.3Kb data on my GNU/Linux amd64 system, while still giving you I/O 4792watchers, timers and monotonic clock support. 4793 4794With an intelligent-enough linker (gcc+binutils are intelligent enough 4795when you use C<-Wl,--gc-sections -ffunction-sections>) functions unused by 4796your program might be left out as well - a binary starting a timer and an 4797I/O watcher then might come out at only 5Kb. 4798 4799=item EV_API_STATIC 4800 4801If this symbol is defined (by default it is not), then all identifiers 4802will have static linkage. This means that libev will not export any 4803identifiers, and you cannot link against libev anymore. This can be useful 4804when you embed libev, only want to use libev functions in a single file, 4805and do not want its identifiers to be visible. 4806 4807To use this, define C<EV_API_STATIC> and include F<ev.c> in the file that 4808wants to use libev. 4809 4810This option only works when libev is compiled with a C compiler, as C++ 4811doesn't support the required declaration syntax. 4812 4813=item EV_AVOID_STDIO 4814 4815If this is set to C<1> at compiletime, then libev will avoid using stdio 4816functions (printf, scanf, perror etc.). This will increase the code size 4817somewhat, but if your program doesn't otherwise depend on stdio and your 4818libc allows it, this avoids linking in the stdio library which is quite 4819big. 4820 4821Note that error messages might become less precise when this option is 4822enabled. 4823 4824=item EV_NSIG 4825 4826The highest supported signal number, +1 (or, the number of 4827signals): Normally, libev tries to deduce the maximum number of signals 4828automatically, but sometimes this fails, in which case it can be 4829specified. Also, using a lower number than detected (C<32> should be 4830good for about any system in existence) can save some memory, as libev 4831statically allocates some 12-24 bytes per signal number. 4832 4833=item EV_PID_HASHSIZE 4834 4835C<ev_child> watchers use a small hash table to distribute workload by 4836pid. The default size is C<16> (or C<1> with C<EV_FEATURES> disabled), 4837usually more than enough. If you need to manage thousands of children you 4838might want to increase this value (I<must> be a power of two). 4839 4840=item EV_INOTIFY_HASHSIZE 4841 4842C<ev_stat> watchers use a small hash table to distribute workload by 4843inotify watch id. The default size is C<16> (or C<1> with C<EV_FEATURES> 4844disabled), usually more than enough. If you need to manage thousands of 4845C<ev_stat> watchers you might want to increase this value (I<must> be a 4846power of two). 4847 4848=item EV_USE_4HEAP 4849 4850Heaps are not very cache-efficient. To improve the cache-efficiency of the 4851timer and periodics heaps, libev uses a 4-heap when this symbol is defined 4852to C<1>. The 4-heap uses more complicated (longer) code but has noticeably 4853faster performance with many (thousands) of watchers. 4854 4855The default is C<1>, unless C<EV_FEATURES> overrides it, in which case it 4856will be C<0>. 4857 4858=item EV_HEAP_CACHE_AT 4859 4860Heaps are not very cache-efficient. To improve the cache-efficiency of the 4861timer and periodics heaps, libev can cache the timestamp (I<at>) within 4862the heap structure (selected by defining C<EV_HEAP_CACHE_AT> to C<1>), 4863which uses 8-12 bytes more per watcher and a few hundred bytes more code, 4864but avoids random read accesses on heap changes. This improves performance 4865noticeably with many (hundreds) of watchers. 4866 4867The default is C<1>, unless C<EV_FEATURES> overrides it, in which case it 4868will be C<0>. 4869 4870=item EV_VERIFY 4871 4872Controls how much internal verification (see C<ev_verify ()>) will 4873be done: If set to C<0>, no internal verification code will be compiled 4874in. If set to C<1>, then verification code will be compiled in, but not 4875called. If set to C<2>, then the internal verification code will be 4876called once per loop, which can slow down libev. If set to C<3>, then the 4877verification code will be called very frequently, which will slow down 4878libev considerably. 4879 4880The default is C<1>, unless C<EV_FEATURES> overrides it, in which case it 4881will be C<0>. 4882 4883=item EV_COMMON 4884 4885By default, all watchers have a C<void *data> member. By redefining 4886this macro to something else you can include more and other types of 4887members. You have to define it each time you include one of the files, 4888though, and it must be identical each time. 4889 4890For example, the perl EV module uses something like this: 4891 4892 #define EV_COMMON \ 4893 SV *self; /* contains this struct */ \ 4894 SV *cb_sv, *fh /* note no trailing ";" */ 4895 4896=item EV_CB_DECLARE (type) 4897 4898=item EV_CB_INVOKE (watcher, revents) 4899 4900=item ev_set_cb (ev, cb) 4901 4902Can be used to change the callback member declaration in each watcher, 4903and the way callbacks are invoked and set. Must expand to a struct member 4904definition and a statement, respectively. See the F<ev.h> header file for 4905their default definitions. One possible use for overriding these is to 4906avoid the C<struct ev_loop *> as first argument in all cases, or to use 4907method calls instead of plain function calls in C++. 4908 4909=back 4910 4911=head2 EXPORTED API SYMBOLS 4912 4913If you need to re-export the API (e.g. via a DLL) and you need a list of 4914exported symbols, you can use the provided F<Symbol.*> files which list 4915all public symbols, one per line: 4916 4917 Symbols.ev for libev proper 4918 Symbols.event for the libevent emulation 4919 4920This can also be used to rename all public symbols to avoid clashes with 4921multiple versions of libev linked together (which is obviously bad in 4922itself, but sometimes it is inconvenient to avoid this). 4923 4924A sed command like this will create wrapper C<#define>'s that you need to 4925include before including F<ev.h>: 4926 4927 <Symbols.ev sed -e "s/.*/#define & myprefix_&/" >wrap.h 4928 4929This would create a file F<wrap.h> which essentially looks like this: 4930 4931 #define ev_backend myprefix_ev_backend 4932 #define ev_check_start myprefix_ev_check_start 4933 #define ev_check_stop myprefix_ev_check_stop 4934 ... 4935 4936=head2 EXAMPLES 4937 4938For a real-world example of a program the includes libev 4939verbatim, you can have a look at the EV perl module 4940(L<http://software.schmorp.de/pkg/EV.html>). It has the libev files in 4941the F<libev/> subdirectory and includes them in the F<EV/EVAPI.h> (public 4942interface) and F<EV.xs> (implementation) files. Only the F<EV.xs> file 4943will be compiled. It is pretty complex because it provides its own header 4944file. 4945 4946The usage in rxvt-unicode is simpler. It has a F<ev_cpp.h> header file 4947that everybody includes and which overrides some configure choices: 4948 4949 #define EV_FEATURES 8 4950 #define EV_USE_SELECT 1 4951 #define EV_PREPARE_ENABLE 1 4952 #define EV_IDLE_ENABLE 1 4953 #define EV_SIGNAL_ENABLE 1 4954 #define EV_CHILD_ENABLE 1 4955 #define EV_USE_STDEXCEPT 0 4956 #define EV_CONFIG_H <config.h> 4957 4958 #include "ev++.h" 4959 4960And a F<ev_cpp.C> implementation file that contains libev proper and is compiled: 4961 4962 #include "ev_cpp.h" 4963 #include "ev.c" 4964 4965=head1 INTERACTION WITH OTHER PROGRAMS, LIBRARIES OR THE ENVIRONMENT 4966 4967=head2 THREADS AND COROUTINES 4968 4969=head3 THREADS 4970 4971All libev functions are reentrant and thread-safe unless explicitly 4972documented otherwise, but libev implements no locking itself. This means 4973that you can use as many loops as you want in parallel, as long as there 4974are no concurrent calls into any libev function with the same loop 4975parameter (C<ev_default_*> calls have an implicit default loop parameter, 4976of course): libev guarantees that different event loops share no data 4977structures that need any locking. 4978 4979Or to put it differently: calls with different loop parameters can be done 4980concurrently from multiple threads, calls with the same loop parameter 4981must be done serially (but can be done from different threads, as long as 4982only one thread ever is inside a call at any point in time, e.g. by using 4983a mutex per loop). 4984 4985Specifically to support threads (and signal handlers), libev implements 4986so-called C<ev_async> watchers, which allow some limited form of 4987concurrency on the same event loop, namely waking it up "from the 4988outside". 4989 4990If you want to know which design (one loop, locking, or multiple loops 4991without or something else still) is best for your problem, then I cannot 4992help you, but here is some generic advice: 4993 4994=over 4 4995 4996=item * most applications have a main thread: use the default libev loop 4997in that thread, or create a separate thread running only the default loop. 4998 4999This helps integrating other libraries or software modules that use libev 5000themselves and don't care/know about threading. 5001 5002=item * one loop per thread is usually a good model. 5003 5004Doing this is almost never wrong, sometimes a better-performance model 5005exists, but it is always a good start. 5006 5007=item * other models exist, such as the leader/follower pattern, where one 5008loop is handed through multiple threads in a kind of round-robin fashion. 5009 5010Choosing a model is hard - look around, learn, know that usually you can do 5011better than you currently do :-) 5012 5013=item * often you need to talk to some other thread which blocks in the 5014event loop. 5015 5016C<ev_async> watchers can be used to wake them up from other threads safely 5017(or from signal contexts...). 5018 5019An example use would be to communicate signals or other events that only 5020work in the default loop by registering the signal watcher with the 5021default loop and triggering an C<ev_async> watcher from the default loop 5022watcher callback into the event loop interested in the signal. 5023 5024=back 5025 5026See also L</THREAD LOCKING EXAMPLE>. 5027 5028=head3 COROUTINES 5029 5030Libev is very accommodating to coroutines ("cooperative threads"): 5031libev fully supports nesting calls to its functions from different 5032coroutines (e.g. you can call C<ev_run> on the same loop from two 5033different coroutines, and switch freely between both coroutines running 5034the loop, as long as you don't confuse yourself). The only exception is 5035that you must not do this from C<ev_periodic> reschedule callbacks. 5036 5037Care has been taken to ensure that libev does not keep local state inside 5038C<ev_run>, and other calls do not usually allow for coroutine switches as 5039they do not call any callbacks. 5040 5041=head2 COMPILER WARNINGS 5042 5043Depending on your compiler and compiler settings, you might get no or a 5044lot of warnings when compiling libev code. Some people are apparently 5045scared by this. 5046 5047However, these are unavoidable for many reasons. For one, each compiler 5048has different warnings, and each user has different tastes regarding 5049warning options. "Warn-free" code therefore cannot be a goal except when 5050targeting a specific compiler and compiler-version. 5051 5052Another reason is that some compiler warnings require elaborate 5053workarounds, or other changes to the code that make it less clear and less 5054maintainable. 5055 5056And of course, some compiler warnings are just plain stupid, or simply 5057wrong (because they don't actually warn about the condition their message 5058seems to warn about). For example, certain older gcc versions had some 5059warnings that resulted in an extreme number of false positives. These have 5060been fixed, but some people still insist on making code warn-free with 5061such buggy versions. 5062 5063While libev is written to generate as few warnings as possible, 5064"warn-free" code is not a goal, and it is recommended not to build libev 5065with any compiler warnings enabled unless you are prepared to cope with 5066them (e.g. by ignoring them). Remember that warnings are just that: 5067warnings, not errors, or proof of bugs. 5068 5069 5070=head2 VALGRIND 5071 5072Valgrind has a special section here because it is a popular tool that is 5073highly useful. Unfortunately, valgrind reports are very hard to interpret. 5074 5075If you think you found a bug (memory leak, uninitialised data access etc.) 5076in libev, then check twice: If valgrind reports something like: 5077 5078 ==2274== definitely lost: 0 bytes in 0 blocks. 5079 ==2274== possibly lost: 0 bytes in 0 blocks. 5080 ==2274== still reachable: 256 bytes in 1 blocks. 5081 5082Then there is no memory leak, just as memory accounted to global variables 5083is not a memleak - the memory is still being referenced, and didn't leak. 5084 5085Similarly, under some circumstances, valgrind might report kernel bugs 5086as if it were a bug in libev (e.g. in realloc or in the poll backend, 5087although an acceptable workaround has been found here), or it might be 5088confused. 5089 5090Keep in mind that valgrind is a very good tool, but only a tool. Don't 5091make it into some kind of religion. 5092 5093If you are unsure about something, feel free to contact the mailing list 5094with the full valgrind report and an explanation on why you think this 5095is a bug in libev (best check the archives, too :). However, don't be 5096annoyed when you get a brisk "this is no bug" answer and take the chance 5097of learning how to interpret valgrind properly. 5098 5099If you need, for some reason, empty reports from valgrind for your project 5100I suggest using suppression lists. 5101 5102 5103=head1 PORTABILITY NOTES 5104 5105=head2 GNU/LINUX 32 BIT LIMITATIONS 5106 5107GNU/Linux is the only common platform that supports 64 bit file/large file 5108interfaces but I<disables> them by default. 5109 5110That means that libev compiled in the default environment doesn't support 5111files larger than 2GiB or so, which mainly affects C<ev_stat> watchers. 5112 5113Unfortunately, many programs try to work around this GNU/Linux issue 5114by enabling the large file API, which makes them incompatible with the 5115standard libev compiled for their system. 5116 5117Likewise, libev cannot enable the large file API itself as this would 5118suddenly make it incompatible to the default compile time environment, 5119i.e. all programs not using special compile switches. 5120 5121=head2 OS/X AND DARWIN BUGS 5122 5123The whole thing is a bug if you ask me - basically any system interface 5124you touch is broken, whether it is locales, poll, kqueue or even the 5125OpenGL drivers. 5126 5127=head3 C<kqueue> is buggy 5128 5129The kqueue syscall is broken in all known versions - most versions support 5130only sockets, many support pipes. 5131 5132Libev tries to work around this by not using C<kqueue> by default on this 5133rotten platform, but of course you can still ask for it when creating a 5134loop - embedding a socket-only kqueue loop into a select-based one is 5135probably going to work well. 5136 5137=head3 C<poll> is buggy 5138 5139Instead of fixing C<kqueue>, Apple replaced their (working) C<poll> 5140implementation by something calling C<kqueue> internally around the 10.5.6 5141release, so now C<kqueue> I<and> C<poll> are broken. 5142 5143Libev tries to work around this by not using C<poll> by default on 5144this rotten platform, but of course you can still ask for it when creating 5145a loop. 5146 5147=head3 C<select> is buggy 5148 5149All that's left is C<select>, and of course Apple found a way to fuck this 5150one up as well: On OS/X, C<select> actively limits the number of file 5151descriptors you can pass in to 1024 - your program suddenly crashes when 5152you use more. 5153 5154There is an undocumented "workaround" for this - defining 5155C<_DARWIN_UNLIMITED_SELECT>, which libev tries to use, so select I<should> 5156work on OS/X. 5157 5158=head2 SOLARIS PROBLEMS AND WORKAROUNDS 5159 5160=head3 C<errno> reentrancy 5161 5162The default compile environment on Solaris is unfortunately so 5163thread-unsafe that you can't even use components/libraries compiled 5164without C<-D_REENTRANT> in a threaded program, which, of course, isn't 5165defined by default. A valid, if stupid, implementation choice. 5166 5167If you want to use libev in threaded environments you have to make sure 5168it's compiled with C<_REENTRANT> defined. 5169 5170=head3 Event port backend 5171 5172The scalable event interface for Solaris is called "event 5173ports". Unfortunately, this mechanism is very buggy in all major 5174releases. If you run into high CPU usage, your program freezes or you get 5175a large number of spurious wakeups, make sure you have all the relevant 5176and latest kernel patches applied. No, I don't know which ones, but there 5177are multiple ones to apply, and afterwards, event ports actually work 5178great. 5179 5180If you can't get it to work, you can try running the program by setting 5181the environment variable C<LIBEV_FLAGS=3> to only allow C<poll> and 5182C<select> backends. 5183 5184=head2 AIX POLL BUG 5185 5186AIX unfortunately has a broken C<poll.h> header. Libev works around 5187this by trying to avoid the poll backend altogether (i.e. it's not even 5188compiled in), which normally isn't a big problem as C<select> works fine 5189with large bitsets on AIX, and AIX is dead anyway. 5190 5191=head2 WIN32 PLATFORM LIMITATIONS AND WORKAROUNDS 5192 5193=head3 General issues 5194 5195Win32 doesn't support any of the standards (e.g. POSIX) that libev 5196requires, and its I/O model is fundamentally incompatible with the POSIX 5197model. Libev still offers limited functionality on this platform in 5198the form of the C<EVBACKEND_SELECT> backend, and only supports socket 5199descriptors. This only applies when using Win32 natively, not when using 5200e.g. cygwin. Actually, it only applies to the microsofts own compilers, 5201as every compiler comes with a slightly differently broken/incompatible 5202environment. 5203 5204Lifting these limitations would basically require the full 5205re-implementation of the I/O system. If you are into this kind of thing, 5206then note that glib does exactly that for you in a very portable way (note 5207also that glib is the slowest event library known to man). 5208 5209There is no supported compilation method available on windows except 5210embedding it into other applications. 5211 5212Sensible signal handling is officially unsupported by Microsoft - libev 5213tries its best, but under most conditions, signals will simply not work. 5214 5215Not a libev limitation but worth mentioning: windows apparently doesn't 5216accept large writes: instead of resulting in a partial write, windows will 5217either accept everything or return C<ENOBUFS> if the buffer is too large, 5218so make sure you only write small amounts into your sockets (less than a 5219megabyte seems safe, but this apparently depends on the amount of memory 5220available). 5221 5222Due to the many, low, and arbitrary limits on the win32 platform and 5223the abysmal performance of winsockets, using a large number of sockets 5224is not recommended (and not reasonable). If your program needs to use 5225more than a hundred or so sockets, then likely it needs to use a totally 5226different implementation for windows, as libev offers the POSIX readiness 5227notification model, which cannot be implemented efficiently on windows 5228(due to Microsoft monopoly games). 5229 5230A typical way to use libev under windows is to embed it (see the embedding 5231section for details) and use the following F<evwrap.h> header file instead 5232of F<ev.h>: 5233 5234 #define EV_STANDALONE /* keeps ev from requiring config.h */ 5235 #define EV_SELECT_IS_WINSOCKET 1 /* configure libev for windows select */ 5236 5237 #include "ev.h" 5238 5239And compile the following F<evwrap.c> file into your project (make sure 5240you do I<not> compile the F<ev.c> or any other embedded source files!): 5241 5242 #include "evwrap.h" 5243 #include "ev.c" 5244 5245=head3 The winsocket C<select> function 5246 5247The winsocket C<select> function doesn't follow POSIX in that it 5248requires socket I<handles> and not socket I<file descriptors> (it is 5249also extremely buggy). This makes select very inefficient, and also 5250requires a mapping from file descriptors to socket handles (the Microsoft 5251C runtime provides the function C<_open_osfhandle> for this). See the 5252discussion of the C<EV_SELECT_USE_FD_SET>, C<EV_SELECT_IS_WINSOCKET> and 5253C<EV_FD_TO_WIN32_HANDLE> preprocessor symbols for more info. 5254 5255The configuration for a "naked" win32 using the Microsoft runtime 5256libraries and raw winsocket select is: 5257 5258 #define EV_USE_SELECT 1 5259 #define EV_SELECT_IS_WINSOCKET 1 /* forces EV_SELECT_USE_FD_SET, too */ 5260 5261Note that winsockets handling of fd sets is O(n), so you can easily get a 5262complexity in the O(n²) range when using win32. 5263 5264=head3 Limited number of file descriptors 5265 5266Windows has numerous arbitrary (and low) limits on things. 5267 5268Early versions of winsocket's select only supported waiting for a maximum 5269of C<64> handles (probably owning to the fact that all windows kernels 5270can only wait for C<64> things at the same time internally; Microsoft 5271recommends spawning a chain of threads and wait for 63 handles and the 5272previous thread in each. Sounds great!). 5273 5274Newer versions support more handles, but you need to define C<FD_SETSIZE> 5275to some high number (e.g. C<2048>) before compiling the winsocket select 5276call (which might be in libev or elsewhere, for example, perl and many 5277other interpreters do their own select emulation on windows). 5278 5279Another limit is the number of file descriptors in the Microsoft runtime 5280libraries, which by default is C<64> (there must be a hidden I<64> 5281fetish or something like this inside Microsoft). You can increase this 5282by calling C<_setmaxstdio>, which can increase this limit to C<2048> 5283(another arbitrary limit), but is broken in many versions of the Microsoft 5284runtime libraries. This might get you to about C<512> or C<2048> sockets 5285(depending on windows version and/or the phase of the moon). To get more, 5286you need to wrap all I/O functions and provide your own fd management, but 5287the cost of calling select (O(n²)) will likely make this unworkable. 5288 5289=head2 PORTABILITY REQUIREMENTS 5290 5291In addition to a working ISO-C implementation and of course the 5292backend-specific APIs, libev relies on a few additional extensions: 5293 5294=over 4 5295 5296=item C<void (*)(ev_watcher_type *, int revents)> must have compatible 5297calling conventions regardless of C<ev_watcher_type *>. 5298 5299Libev assumes not only that all watcher pointers have the same internal 5300structure (guaranteed by POSIX but not by ISO C for example), but it also 5301assumes that the same (machine) code can be used to call any watcher 5302callback: The watcher callbacks have different type signatures, but libev 5303calls them using an C<ev_watcher *> internally. 5304 5305=item pointer accesses must be thread-atomic 5306 5307Accessing a pointer value must be atomic, it must both be readable and 5308writable in one piece - this is the case on all current architectures. 5309 5310=item C<sig_atomic_t volatile> must be thread-atomic as well 5311 5312The type C<sig_atomic_t volatile> (or whatever is defined as 5313C<EV_ATOMIC_T>) must be atomic with respect to accesses from different 5314threads. This is not part of the specification for C<sig_atomic_t>, but is 5315believed to be sufficiently portable. 5316 5317=item C<sigprocmask> must work in a threaded environment 5318 5319Libev uses C<sigprocmask> to temporarily block signals. This is not 5320allowed in a threaded program (C<pthread_sigmask> has to be used). Typical 5321pthread implementations will either allow C<sigprocmask> in the "main 5322thread" or will block signals process-wide, both behaviours would 5323be compatible with libev. Interaction between C<sigprocmask> and 5324C<pthread_sigmask> could complicate things, however. 5325 5326The most portable way to handle signals is to block signals in all threads 5327except the initial one, and run the signal handling loop in the initial 5328thread as well. 5329 5330=item C<long> must be large enough for common memory allocation sizes 5331 5332To improve portability and simplify its API, libev uses C<long> internally 5333instead of C<size_t> when allocating its data structures. On non-POSIX 5334systems (Microsoft...) this might be unexpectedly low, but is still at 5335least 31 bits everywhere, which is enough for hundreds of millions of 5336watchers. 5337 5338=item C<double> must hold a time value in seconds with enough accuracy 5339 5340The type C<double> is used to represent timestamps. It is required to 5341have at least 51 bits of mantissa (and 9 bits of exponent), which is 5342good enough for at least into the year 4000 with millisecond accuracy 5343(the design goal for libev). This requirement is overfulfilled by 5344implementations using IEEE 754, which is basically all existing ones. 5345 5346With IEEE 754 doubles, you get microsecond accuracy until at least the 5347year 2255 (and millisecond accuracy till the year 287396 - by then, libev 5348is either obsolete or somebody patched it to use C<long double> or 5349something like that, just kidding). 5350 5351=back 5352 5353If you know of other additional requirements drop me a note. 5354 5355 5356=head1 ALGORITHMIC COMPLEXITIES 5357 5358In this section the complexities of (many of) the algorithms used inside 5359libev will be documented. For complexity discussions about backends see 5360the documentation for C<ev_default_init>. 5361 5362All of the following are about amortised time: If an array needs to be 5363extended, libev needs to realloc and move the whole array, but this 5364happens asymptotically rarer with higher number of elements, so O(1) might 5365mean that libev does a lengthy realloc operation in rare cases, but on 5366average it is much faster and asymptotically approaches constant time. 5367 5368=over 4 5369 5370=item Starting and stopping timer/periodic watchers: O(log skipped_other_timers) 5371 5372This means that, when you have a watcher that triggers in one hour and 5373there are 100 watchers that would trigger before that, then inserting will 5374have to skip roughly seven (C<ld 100>) of these watchers. 5375 5376=item Changing timer/periodic watchers (by autorepeat or calling again): O(log skipped_other_timers) 5377 5378That means that changing a timer costs less than removing/adding them, 5379as only the relative motion in the event queue has to be paid for. 5380 5381=item Starting io/check/prepare/idle/signal/child/fork/async watchers: O(1) 5382 5383These just add the watcher into an array or at the head of a list. 5384 5385=item Stopping check/prepare/idle/fork/async watchers: O(1) 5386 5387=item Stopping an io/signal/child watcher: O(number_of_watchers_for_this_(fd/signal/pid % EV_PID_HASHSIZE)) 5388 5389These watchers are stored in lists, so they need to be walked to find the 5390correct watcher to remove. The lists are usually short (you don't usually 5391have many watchers waiting for the same fd or signal: one is typical, two 5392is rare). 5393 5394=item Finding the next timer in each loop iteration: O(1) 5395 5396By virtue of using a binary or 4-heap, the next timer is always found at a 5397fixed position in the storage array. 5398 5399=item Each change on a file descriptor per loop iteration: O(number_of_watchers_for_this_fd) 5400 5401A change means an I/O watcher gets started or stopped, which requires 5402libev to recalculate its status (and possibly tell the kernel, depending 5403on backend and whether C<ev_io_set> was used). 5404 5405=item Activating one watcher (putting it into the pending state): O(1) 5406 5407=item Priority handling: O(number_of_priorities) 5408 5409Priorities are implemented by allocating some space for each 5410priority. When doing priority-based operations, libev usually has to 5411linearly search all the priorities, but starting/stopping and activating 5412watchers becomes O(1) with respect to priority handling. 5413 5414=item Sending an ev_async: O(1) 5415 5416=item Processing ev_async_send: O(number_of_async_watchers) 5417 5418=item Processing signals: O(max_signal_number) 5419 5420Sending involves a system call I<iff> there were no other C<ev_async_send> 5421calls in the current loop iteration and the loop is currently 5422blocked. Checking for async and signal events involves iterating over all 5423running async watchers or all signal numbers. 5424 5425=back 5426 5427 5428=head1 PORTING FROM LIBEV 3.X TO 4.X 5429 5430The major version 4 introduced some incompatible changes to the API. 5431 5432At the moment, the C<ev.h> header file provides compatibility definitions 5433for all changes, so most programs should still compile. The compatibility 5434layer might be removed in later versions of libev, so better update to the 5435new API early than late. 5436 5437=over 4 5438 5439=item C<EV_COMPAT3> backwards compatibility mechanism 5440 5441The backward compatibility mechanism can be controlled by 5442C<EV_COMPAT3>. See L</"PREPROCESSOR SYMBOLS/MACROS"> in the L</EMBEDDING> 5443section. 5444 5445=item C<ev_default_destroy> and C<ev_default_fork> have been removed 5446 5447These calls can be replaced easily by their C<ev_loop_xxx> counterparts: 5448 5449 ev_loop_destroy (EV_DEFAULT_UC); 5450 ev_loop_fork (EV_DEFAULT); 5451 5452=item function/symbol renames 5453 5454A number of functions and symbols have been renamed: 5455 5456 ev_loop => ev_run 5457 EVLOOP_NONBLOCK => EVRUN_NOWAIT 5458 EVLOOP_ONESHOT => EVRUN_ONCE 5459 5460 ev_unloop => ev_break 5461 EVUNLOOP_CANCEL => EVBREAK_CANCEL 5462 EVUNLOOP_ONE => EVBREAK_ONE 5463 EVUNLOOP_ALL => EVBREAK_ALL 5464 5465 EV_TIMEOUT => EV_TIMER 5466 5467 ev_loop_count => ev_iteration 5468 ev_loop_depth => ev_depth 5469 ev_loop_verify => ev_verify 5470 5471Most functions working on C<struct ev_loop> objects don't have an 5472C<ev_loop_> prefix, so it was removed; C<ev_loop>, C<ev_unloop> and 5473associated constants have been renamed to not collide with the C<struct 5474ev_loop> anymore and C<EV_TIMER> now follows the same naming scheme 5475as all other watcher types. Note that C<ev_loop_fork> is still called 5476C<ev_loop_fork> because it would otherwise clash with the C<ev_fork> 5477typedef. 5478 5479=item C<EV_MINIMAL> mechanism replaced by C<EV_FEATURES> 5480 5481The preprocessor symbol C<EV_MINIMAL> has been replaced by a different 5482mechanism, C<EV_FEATURES>. Programs using C<EV_MINIMAL> usually compile 5483and work, but the library code will of course be larger. 5484 5485=back 5486 5487 5488=head1 GLOSSARY 5489 5490=over 4 5491 5492=item active 5493 5494A watcher is active as long as it has been started and not yet stopped. 5495See L</WATCHER STATES> for details. 5496 5497=item application 5498 5499In this document, an application is whatever is using libev. 5500 5501=item backend 5502 5503The part of the code dealing with the operating system interfaces. 5504 5505=item callback 5506 5507The address of a function that is called when some event has been 5508detected. Callbacks are being passed the event loop, the watcher that 5509received the event, and the actual event bitset. 5510 5511=item callback/watcher invocation 5512 5513The act of calling the callback associated with a watcher. 5514 5515=item event 5516 5517A change of state of some external event, such as data now being available 5518for reading on a file descriptor, time having passed or simply not having 5519any other events happening anymore. 5520 5521In libev, events are represented as single bits (such as C<EV_READ> or 5522C<EV_TIMER>). 5523 5524=item event library 5525 5526A software package implementing an event model and loop. 5527 5528=item event loop 5529 5530An entity that handles and processes external events and converts them 5531into callback invocations. 5532 5533=item event model 5534 5535The model used to describe how an event loop handles and processes 5536watchers and events. 5537 5538=item pending 5539 5540A watcher is pending as soon as the corresponding event has been 5541detected. See L</WATCHER STATES> for details. 5542 5543=item real time 5544 5545The physical time that is observed. It is apparently strictly monotonic :) 5546 5547=item wall-clock time 5548 5549The time and date as shown on clocks. Unlike real time, it can actually 5550be wrong and jump forwards and backwards, e.g. when you adjust your 5551clock. 5552 5553=item watcher 5554 5555A data structure that describes interest in certain events. Watchers need 5556to be started (attached to an event loop) before they can receive events. 5557 5558=back 5559 5560=head1 AUTHOR 5561 5562Marc Lehmann <[email protected]>, with repeated corrections by Mikael 5563Magnusson and Emanuele Giaquinta, and minor corrections by many others. 5564 5565