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

Comparing libev/ev.pod (file contents):
Revision 1.279 by root, Mon Feb 15 05:15:55 2010 UTC vs.
Revision 1.283 by root, Wed Mar 10 09:18:25 2010 UTC

1867Returns 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,
1868then 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
1869the timeout value currently configured. 1869the timeout value currently configured.
1870 1870
1871That 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
1872C<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>
1873will 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
1874roughly C<7> (likely slightly less as callback invocation takes some time, 1874roughly C<7> (likely slightly less as callback invocation takes some time,
1875too), and so on. 1875too), and so on.
1876 1876
1877=item ev_tstamp repeat [read-write] 1877=item ev_tstamp repeat [read-write]
3617 libev.m4 3617 libev.m4
3618 3618
3619=head2 PREPROCESSOR SYMBOLS/MACROS 3619=head2 PREPROCESSOR SYMBOLS/MACROS
3620 3620
3621Libev 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
3622define before including any of its files. The default in the absence of 3622define before including (or compiling) any of its files. The default in
3623autoconf 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.
3624 3631
3625=over 4 3632=over 4
3626 3633
3627=item EV_STANDALONE 3634=item EV_STANDALONE (h)
3628 3635
3629Must 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
3630keeps libev from including F<config.h>, and it also defines dummy 3637keeps libev from including F<config.h>, and it also defines dummy
3631implementations for some libevent functions (such as logging, which is not 3638implementations for some libevent functions (such as logging, which is not
3632supported). 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
3782as 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.
3783 3790
3784In 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>
3785(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.
3786 3793
3787=item EV_H 3794=item EV_H (h)
3788 3795
3789The 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
3790undefined 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
3791used 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.
3792 3799
3793=item EV_CONFIG_H 3800=item EV_CONFIG_H (h)
3794 3801
3795If 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
3796F<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
3797C<EV_H>, above. 3804C<EV_H>, above.
3798 3805
3799=item EV_EVENT_H 3806=item EV_EVENT_H (h)
3800 3807
3801Similarly 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
3802of 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">.
3803 3810
3804=item EV_PROTOTYPES 3811=item EV_PROTOTYPES (h)
3805 3812
3806If 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
3807prototypes, but still define all the structs and other symbols. This is 3814prototypes, but still define all the structs and other symbols. This is
3808occasionally useful if you want to provide your own wrapper functions 3815occasionally useful if you want to provide your own wrapper functions
3809around libev functions. 3816around libev functions.
3831fine. 3838fine.
3832 3839
3833If your embedding application does not need any priorities, defining these 3840If your embedding application does not need any priorities, defining these
3834both to C<0> will save some memory and CPU. 3841both to C<0> will save some memory and CPU.
3835 3842
3836=item EV_PERIODIC_ENABLE 3843=item EV_PERIODIC_ENABLE, EV_IDLE_ENABLE, EV_EMBED_ENABLE, EV_STAT_ENABLE,
3844EV_PREPARE_ENABLE, EV_CHECK_ENABLE, EV_FORK_ENABLE, EV_SIGNAL_ENABLE,
3845EV_ASYNC_ENABLE, EV_CHILD_ENABLE.
3837 3846
3838If undefined or defined to be C<1>, then periodic timers are supported. If 3847If undefined or defined to be C<1> (and the platform supports it), then
3839defined to be C<0>, then they are not. Disabling them saves a few kB of 3848the respective watcher type is supported. If defined to be C<0>, then it
3840code. 3849is not. Disabling watcher types mainly saves codesize.
3841
3842=item EV_IDLE_ENABLE
3843
3844If undefined or defined to be C<1>, then idle watchers are supported. If
3845defined to be C<0>, then they are not. Disabling them saves a few kB of
3846code.
3847
3848=item EV_EMBED_ENABLE
3849
3850If undefined or defined to be C<1>, then embed watchers are supported. If
3851defined to be C<0>, then they are not. Embed watchers rely on most other
3852watcher types, which therefore must not be disabled.
3853
3854=item EV_STAT_ENABLE
3855
3856If undefined or defined to be C<1>, then stat watchers are supported. If
3857defined to be C<0>, then they are not.
3858
3859=item EV_FORK_ENABLE
3860
3861If undefined or defined to be C<1>, then fork watchers are supported. If
3862defined to be C<0>, then they are not.
3863
3864=item EV_ASYNC_ENABLE
3865
3866If undefined or defined to be C<1>, then async watchers are supported. If
3867defined to be C<0>, then they are not.
3868 3850
3869=item EV_MINIMAL 3851=item EV_MINIMAL
3870 3852
3871If you need to shave off some kilobytes of code at the expense of some 3853If you need to shave off some kilobytes of code at the expense of some
3872speed (but with the full API), define this symbol to C<1>. Currently this 3854speed (but with the full API), define this symbol to C<1>. Currently this
3874on amd64. It also selects a much smaller 2-heap for timer management over 3856on amd64. It also selects a much smaller 2-heap for timer management over
3875the default 4-heap. 3857the default 4-heap.
3876 3858
3877You can save even more by disabling watcher types you do not need 3859You can save even more by disabling watcher types you do not need
3878and setting C<EV_MAXPRI> == C<EV_MINPRI>. Also, disabling C<assert> 3860and setting C<EV_MAXPRI> == C<EV_MINPRI>. Also, disabling C<assert>
3879(C<-DNDEBUG>) will usually reduce code size a lot. 3861(C<-DNDEBUG>) will usually reduce code size a lot. Disabling inotify,
3862eventfd and signalfd will further help, and disabling backends one doesn't
3863need (e.g. poll, epoll, kqueue, ports) will help further.
3880 3864
3881Defining C<EV_MINIMAL> to C<2> will additionally reduce the core API to 3865Defining C<EV_MINIMAL> to C<2> will additionally reduce the core API to
3882provide a bare-bones event library. See C<ev.h> for details on what parts 3866provide a bare-bones event library. See C<ev.h> for details on what parts
3883of the API are still available, and do not complain if this subset changes 3867of the API are still available, and do not complain if this subset changes
3884over time. 3868over time.
3869
3870This example set of settings reduces the compiled size of libev from
387123.9Kb to 7.7Kb on my GNU/Linux amd64 system (and leaves little
3872in - there is also an effect on the amount of memory used). With
3873an intelligent-enough linker (gcc+binutils do this when you use
3874C<-Wl,--gc-sections -ffunction-sections>) further unused functions might
3875be left out as well automatically - a binary starting a timer and an I/O
3876watcher then might come out at only 5Kb.
3877
3878 // tuning and API changes
3879 #define EV_MINIMAL 2
3880 #define EV_MULTIPLICITY 0
3881 #define EV_MINPRI 0
3882 #define EV_MAXPRI 0
3883
3884 // OS-specific backends
3885 #define EV_USE_INOTIFY 0
3886 #define EV_USE_EVENTFD 0
3887 #define EV_USE_SIGNALFD 0
3888 #define EV_USE_REALTIME 0
3889 #define EV_USE_MONOTONIC 0
3890 #define EV_USE_CLOCK_SYSCALL 0
3891
3892 // disable all backends except select
3893 #define EV_USE_POLL 0
3894 #define EV_USE_PORT 0
3895 #define EV_USE_KQUEUE 0
3896 #define EV_USE_EPOLL 0
3897
3898 // disable all watcher types that cna be disabled
3899 #define EV_STAT_ENABLE 0
3900 #define EV_PERIODIC_ENABLE 0
3901 #define EV_IDLE_ENABLE 0
3902 #define EV_CHECK_ENABLE 0
3903 #define EV_PREPARE_ENABLE 0
3904 #define EV_FORK_ENABLE 0
3905 #define EV_SIGNAL_ENABLE 0
3906 #define EV_CHILD_ENABLE 0
3907 #define EV_ASYNC_ENABLE 0
3908 #define EV_EMBED_ENABLE 0
3909
3910=item EV_AVOID_STDIO
3911
3912If this is set to C<1> at compiletime, then libev will avoid using stdio
3913functions (printf, scanf, perror etc.). This will increase the codesize
3914somewhat, but if your program doesn't otherwise depend on stdio and your
3915libc allows it, this avoids linking in the stdio library which is quite
3916big.
3917
3918Note that error messages might become less precise when this option is
3919enabled.
3885 3920
3886=item EV_NSIG 3921=item EV_NSIG
3887 3922
3888The highest supported signal number, +1 (or, the number of 3923The highest supported signal number, +1 (or, the number of
3889signals): Normally, libev tries to deduce the maximum number of signals 3924signals): Normally, libev tries to deduce the maximum number of signals

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines