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

Comparing libev/ev.pod (file contents):
Revision 1.275 by root, Sat Dec 26 09:21:54 2009 UTC vs.
Revision 1.281 by root, Tue Mar 9 08:46:17 2010 UTC

370When this flag is specified, then libev will not attempt to use the 370When this flag is specified, then libev will not attempt to use the
371I<inotify> API for it's C<ev_stat> watchers. Apart from debugging and 371I<inotify> API for it's C<ev_stat> watchers. Apart from debugging and
372testing, this flag can be useful to conserve inotify file descriptors, as 372testing, this flag can be useful to conserve inotify file descriptors, as
373otherwise each loop using C<ev_stat> watchers consumes one inotify handle. 373otherwise each loop using C<ev_stat> watchers consumes one inotify handle.
374 374
375=item C<EVFLAG_NOSIGFD> 375=item C<EVFLAG_SIGNALFD>
376 376
377When this flag is specified, then libev will not attempt to use the 377When this flag is specified, then libev will attempt to use the
378I<signalfd> API for it's C<ev_signal> (and C<ev_child>) watchers. This is 378I<signalfd> API for it's C<ev_signal> (and C<ev_child>) watchers. This API
379probably only useful to work around any bugs in libev. Consequently, this 379delivers signals synchronously, which makes it both faster and might make
380flag might go away once the signalfd functionality is considered stable, 380it possible to get the queued signal data. It can also simplify signal
381so it's useful mostly in environment variables and not in program code. 381handling with threads, as long as you properly block signals in your
382threads that are not interested in handling them.
383
384Signalfd will not be used by default as this changes your signal mask, and
385there are a lot of shoddy libraries and programs (glib's threadpool for
386example) that can't properly initialise their signal masks.
382 387
383=item C<EVBACKEND_SELECT> (value 1, portable select backend) 388=item C<EVBACKEND_SELECT> (value 1, portable select backend)
384 389
385This is your standard select(2) backend. Not I<completely> standard, as 390This is your standard select(2) backend. Not I<completely> standard, as
386libev tries to roll its own fd_set with no limits on the number of fds, 391libev tries to roll its own fd_set with no limits on the number of fds,
792 797
793Ref/unref can be used to add or remove a reference count on the event 798Ref/unref can be used to add or remove a reference count on the event
794loop: Every watcher keeps one reference, and as long as the reference 799loop: Every watcher keeps one reference, and as long as the reference
795count is nonzero, C<ev_loop> will not return on its own. 800count is nonzero, C<ev_loop> will not return on its own.
796 801
797If you have a watcher you never unregister that should not keep C<ev_loop> 802This is useful when you have a watcher that you never intend to
798from returning, call ev_unref() after starting, and ev_ref() before 803unregister, but that nevertheless should not keep C<ev_loop> from
804returning. In such a case, call C<ev_unref> after starting, and C<ev_ref>
799stopping it. 805before stopping it.
800 806
801As an example, libev itself uses this for its internal signal pipe: It 807As an example, libev itself uses this for its internal signal pipe: It
802is not visible to the libev user and should not keep C<ev_loop> from 808is not visible to the libev user and should not keep C<ev_loop> from
803exiting if no event watchers registered by it are active. It is also an 809exiting if no event watchers registered by it are active. It is also an
804excellent way to do this for generic recurring timers or from within 810excellent way to do this for generic recurring timers or from within
1861Returns the remaining time until a timer fires. If the timer is active, 1867Returns the remaining time until a timer fires. If the timer is active,
1862then this time is relative to the current event loop time, otherwise it's 1868then this time is relative to the current event loop time, otherwise it's
1863the timeout value currently configured. 1869the timeout value currently configured.
1864 1870
1865That is, after an C<ev_timer_set (w, 5, 7)>, C<ev_timer_remaining> returns 1871That is, after an C<ev_timer_set (w, 5, 7)>, C<ev_timer_remaining> returns
1866C<5>. When the timer is started and one second passes, C<ev_timer_remain> 1872C<5>. When the timer is started and one second passes, C<ev_timer_remaining>
1867will return C<4>. When the timer expires and is restarted, it will return 1873will return C<4>. When the timer expires and is restarted, it will return
1868roughly C<7> (likely slightly less as callback invocation takes some time, 1874roughly C<7> (likely slightly less as callback invocation takes some time,
1869too), and so on. 1875too), and so on.
1870 1876
1871=item ev_tstamp repeat [read-write] 1877=item ev_tstamp repeat [read-write]
2131C<SA_RESTART> (or equivalent) behaviour enabled, so system calls should 2137C<SA_RESTART> (or equivalent) behaviour enabled, so system calls should
2132not be unduly interrupted. If you have a problem with system calls getting 2138not be unduly interrupted. If you have a problem with system calls getting
2133interrupted by signals you can block all signals in an C<ev_check> watcher 2139interrupted by signals you can block all signals in an C<ev_check> watcher
2134and unblock them in an C<ev_prepare> watcher. 2140and unblock them in an C<ev_prepare> watcher.
2135 2141
2136=head3 The special problem of inheritance over execve 2142=head3 The special problem of inheritance over fork/execve/pthread_create
2137 2143
2138Both the signal mask (C<sigprocmask>) and the signal disposition 2144Both the signal mask (C<sigprocmask>) and the signal disposition
2139(C<sigaction>) are unspecified after starting a signal watcher (and after 2145(C<sigaction>) are unspecified after starting a signal watcher (and after
2140stopping it again), that is, libev might or might not block the signal, 2146stopping it again), that is, libev might or might not block the signal,
2141and might or might not set or restore the installed signal handler. 2147and might or might not set or restore the installed signal handler.
2151 2157
2152The simplest way to ensure that the signal mask is reset in the child is 2158The simplest way to ensure that the signal mask is reset in the child is
2153to install a fork handler with C<pthread_atfork> that resets it. That will 2159to install a fork handler with C<pthread_atfork> that resets it. That will
2154catch fork calls done by libraries (such as the libc) as well. 2160catch fork calls done by libraries (such as the libc) as well.
2155 2161
2156In current versions of libev, you can also ensure that the signal mask is 2162In current versions of libev, the signal will not be blocked indefinitely
2157not blocking any signals (except temporarily, so thread users watch out) 2163unless you use the C<signalfd> API (C<EV_SIGNALFD>). While this reduces
2158by specifying the C<EVFLAG_NOSIGFD> when creating the event loop. This 2164the window of opportunity for problems, it will not go away, as libev
2159is not guaranteed for future versions, however. 2165I<has> to modify the signal mask, at least temporarily.
2166
2167So I can't stress this enough: I<If you do not reset your signal mask when
2168you expect it to be empty, you have a race condition in your code>. This
2169is not a libev-specific thing, this is true for most event libraries.
2160 2170
2161=head3 Watcher-Specific Functions and Data Members 2171=head3 Watcher-Specific Functions and Data Members
2162 2172
2163=over 4 2173=over 4
2164 2174
3441Erkki Seppala has written Ocaml bindings for libev, to be found at 3451Erkki Seppala has written Ocaml bindings for libev, to be found at
3442L<http://modeemi.cs.tut.fi/~flux/software/ocaml-ev/>. 3452L<http://modeemi.cs.tut.fi/~flux/software/ocaml-ev/>.
3443 3453
3444=item Lua 3454=item Lua
3445 3455
3446Brian Maher has written a partial interface to libev 3456Brian Maher has written a partial interface to libev for lua (at the
3447for lua (only C<ev_io> and C<ev_timer>), to be found at 3457time of this writing, only C<ev_io> and C<ev_timer>), to be found at
3448L<http://github.com/brimworks/lua-ev>. 3458L<http://github.com/brimworks/lua-ev>.
3449 3459
3450=back 3460=back
3451 3461
3452 3462
3607 libev.m4 3617 libev.m4
3608 3618
3609=head2 PREPROCESSOR SYMBOLS/MACROS 3619=head2 PREPROCESSOR SYMBOLS/MACROS
3610 3620
3611Libev can be configured via a variety of preprocessor symbols you have to 3621Libev can be configured via a variety of preprocessor symbols you have to
3612define before including any of its files. The default in the absence of 3622define before including (or compiling) any of its files. The default in
3613autoconf is documented for every option. 3623the absence of autoconf is documented for every option.
3624
3625Symbols marked with "(h)" do not change the ABI, and can have different
3626values when compiling libev vs. including F<ev.h>, so it is permissible
3627to redefine them before including F<ev.h> without breakign compatibility
3628to a compiled library. All other symbols change the ABI, which means all
3629users of libev and the libev code itself must be compiled with compatible
3630settings.
3614 3631
3615=over 4 3632=over 4
3616 3633
3617=item EV_STANDALONE 3634=item EV_STANDALONE (h)
3618 3635
3619Must always be C<1> if you do not use autoconf configuration, which 3636Must always be C<1> if you do not use autoconf configuration, which
3620keeps libev from including F<config.h>, and it also defines dummy 3637keeps libev from including F<config.h>, and it also defines dummy
3621implementations for some libevent functions (such as logging, which is not 3638implementations for some libevent functions (such as logging, which is not
3622supported). It will also not define any of the structs usually found in 3639supported). It will also not define any of the structs usually found in
3772as well as for signal and thread safety in C<ev_async> watchers. 3789as well as for signal and thread safety in C<ev_async> watchers.
3773 3790
3774In the absence of this define, libev will use C<sig_atomic_t volatile> 3791In the absence of this define, libev will use C<sig_atomic_t volatile>
3775(from F<signal.h>), which is usually good enough on most platforms. 3792(from F<signal.h>), which is usually good enough on most platforms.
3776 3793
3777=item EV_H 3794=item EV_H (h)
3778 3795
3779The name of the F<ev.h> header file used to include it. The default if 3796The name of the F<ev.h> header file used to include it. The default if
3780undefined is C<"ev.h"> in F<event.h>, F<ev.c> and F<ev++.h>. This can be 3797undefined is C<"ev.h"> in F<event.h>, F<ev.c> and F<ev++.h>. This can be
3781used to virtually rename the F<ev.h> header file in case of conflicts. 3798used to virtually rename the F<ev.h> header file in case of conflicts.
3782 3799
3783=item EV_CONFIG_H 3800=item EV_CONFIG_H (h)
3784 3801
3785If C<EV_STANDALONE> isn't C<1>, this variable can be used to override 3802If C<EV_STANDALONE> isn't C<1>, this variable can be used to override
3786F<ev.c>'s idea of where to find the F<config.h> file, similarly to 3803F<ev.c>'s idea of where to find the F<config.h> file, similarly to
3787C<EV_H>, above. 3804C<EV_H>, above.
3788 3805
3789=item EV_EVENT_H 3806=item EV_EVENT_H (h)
3790 3807
3791Similarly to C<EV_H>, this macro can be used to override F<event.c>'s idea 3808Similarly to C<EV_H>, this macro can be used to override F<event.c>'s idea
3792of how the F<event.h> header can be found, the default is C<"event.h">. 3809of how the F<event.h> header can be found, the default is C<"event.h">.
3793 3810
3794=item EV_PROTOTYPES 3811=item EV_PROTOTYPES (h)
3795 3812
3796If defined to be C<0>, then F<ev.h> will not define any function 3813If defined to be C<0>, then F<ev.h> will not define any function
3797prototypes, but still define all the structs and other symbols. This is 3814prototypes, but still define all the structs and other symbols. This is
3798occasionally useful if you want to provide your own wrapper functions 3815occasionally useful if you want to provide your own wrapper functions
3799around libev functions. 3816around libev functions.
3870 3887
3871Defining C<EV_MINIMAL> to C<2> will additionally reduce the core API to 3888Defining C<EV_MINIMAL> to C<2> will additionally reduce the core API to
3872provide a bare-bones event library. See C<ev.h> for details on what parts 3889provide a bare-bones event library. See C<ev.h> for details on what parts
3873of the API are still available, and do not complain if this subset changes 3890of the API are still available, and do not complain if this subset changes
3874over time. 3891over time.
3892
3893=item EV_AVOID_STDIO
3894
3895If this is set to C<1> at compiletime, then libev will avoid using stdio
3896functions (printf, scanf, perror etc.). This will increase the codesize
3897somewhat, but if your program doesn't otherwise depend on stdio and your
3898libc allows it, this avoids linking in the stdio library which is quite
3899big.
3900
3901Note that error messages might become less precise when this option is
3902enabled.
3875 3903
3876=item EV_NSIG 3904=item EV_NSIG
3877 3905
3878The highest supported signal number, +1 (or, the number of 3906The highest supported signal number, +1 (or, the number of
3879signals): Normally, libev tries to deduce the maximum number of signals 3907signals): Normally, libev tries to deduce the maximum number of signals

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines