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

Comparing libev/ev.pod (file contents):
Revision 1.140 by root, Wed Apr 2 06:34:51 2008 UTC vs.
Revision 1.143 by root, Sun Apr 6 14:34:52 2008 UTC

358For few fds, this backend is a bit little slower than poll and select, 358For few fds, this backend is a bit little slower than poll and select,
359but it scales phenomenally better. While poll and select usually scale 359but it scales phenomenally better. While poll and select usually scale
360like O(total_fds) where n is the total number of fds (or the highest fd), 360like O(total_fds) where n is the total number of fds (or the highest fd),
361epoll scales either O(1) or O(active_fds). The epoll design has a number 361epoll scales either O(1) or O(active_fds). The epoll design has a number
362of shortcomings, such as silently dropping events in some hard-to-detect 362of shortcomings, such as silently dropping events in some hard-to-detect
363cases and rewiring a syscall per fd change, no fork support and bad 363cases and requiring a syscall per fd change, no fork support and bad
364support for dup. 364support for dup.
365 365
366While stopping, setting and starting an I/O watcher in the same iteration 366While stopping, setting and starting an I/O watcher in the same iteration
367will result in some caching, there is still a syscall per such incident 367will result in some caching, there is still a syscall per such incident
368(because the fd could point to a different file description now), so its 368(because the fd could point to a different file description now), so its
2633=item C<EV_DEFAULT>, C<EV_DEFAULT_> 2633=item C<EV_DEFAULT>, C<EV_DEFAULT_>
2634 2634
2635Similar to the other two macros, this gives you the value of the default 2635Similar to the other two macros, this gives you the value of the default
2636loop, if multiple loops are supported ("ev loop default"). 2636loop, if multiple loops are supported ("ev loop default").
2637 2637
2638=item C<EV_DEFAULT_UC>, C<EV_DEFAULT_UC_>
2639
2640Usage identical to C<EV_DEFAULT> and C<EV_DEFAULT_>, but requires that the
2641default loop has been initialised (C<UC> == unchecked). Their behaviour
2642is undefined when the default loop has not been initialised by a previous
2643execution of C<EV_DEFAULT>, C<EV_DEFAULT_> or C<ev_default_init (...)>.
2644
2645It is often prudent to use C<EV_DEFAULT> when initialising the first
2646watcher in a function but use C<EV_DEFAULT_UC> afterwards.
2647
2638=back 2648=back
2639 2649
2640Example: Declare and initialise a check watcher, utilising the above 2650Example: Declare and initialise a check watcher, utilising the above
2641macros so it will work regardless of whether multiple loops are supported 2651macros so it will work regardless of whether multiple loops are supported
2642or not. 2652or not.
2737 2747
2738 libev.m4 2748 libev.m4
2739 2749
2740=head2 PREPROCESSOR SYMBOLS/MACROS 2750=head2 PREPROCESSOR SYMBOLS/MACROS
2741 2751
2742Libev can be configured via a variety of preprocessor symbols you have to define 2752Libev can be configured via a variety of preprocessor symbols you have to
2743before including any of its files. The default is not to build for multiplicity 2753define before including any of its files. The default in the absense of
2744and only include the select backend. 2754autoconf is noted for every option.
2745 2755
2746=over 4 2756=over 4
2747 2757
2748=item EV_STANDALONE 2758=item EV_STANDALONE
2749 2759
2775=item EV_USE_NANOSLEEP 2785=item EV_USE_NANOSLEEP
2776 2786
2777If defined to be C<1>, libev will assume that C<nanosleep ()> is available 2787If defined to be C<1>, libev will assume that C<nanosleep ()> is available
2778and will use it for delays. Otherwise it will use C<select ()>. 2788and will use it for delays. Otherwise it will use C<select ()>.
2779 2789
2790=item EV_USE_EVENTFD
2791
2792If defined to be C<1>, then libev will assume that C<eventfd ()> is
2793available and will probe for kernel support at runtime. This will improve
2794C<ev_signal> and C<ev_async> performance and reduce resource consumption.
2795If undefined, it will be enabled if the headers indicate GNU/Linux + Glibc
27962.7 or newer, otherwise disabled.
2797
2780=item EV_USE_SELECT 2798=item EV_USE_SELECT
2781 2799
2782If undefined or defined to be C<1>, libev will compile in support for the 2800If undefined or defined to be C<1>, libev will compile in support for the
2783C<select>(2) backend. No attempt at autodetection will be done: if no 2801C<select>(2) backend. No attempt at autodetection will be done: if no
2784other method takes over, select will be it. Otherwise the select backend 2802other method takes over, select will be it. Otherwise the select backend
2820 2838
2821=item EV_USE_EPOLL 2839=item EV_USE_EPOLL
2822 2840
2823If defined to be C<1>, libev will compile in support for the Linux 2841If defined to be C<1>, libev will compile in support for the Linux
2824C<epoll>(7) backend. Its availability will be detected at runtime, 2842C<epoll>(7) backend. Its availability will be detected at runtime,
2825otherwise another method will be used as fallback. This is the 2843otherwise another method will be used as fallback. This is the preferred
2826preferred backend for GNU/Linux systems. 2844backend for GNU/Linux systems. If undefined, it will be enabled if the
2845headers indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled.
2827 2846
2828=item EV_USE_KQUEUE 2847=item EV_USE_KQUEUE
2829 2848
2830If defined to be C<1>, libev will compile in support for the BSD style 2849If defined to be C<1>, libev will compile in support for the BSD style
2831C<kqueue>(2) backend. Its actual availability will be detected at runtime, 2850C<kqueue>(2) backend. Its actual availability will be detected at runtime,
2850 2869
2851=item EV_USE_INOTIFY 2870=item EV_USE_INOTIFY
2852 2871
2853If defined to be C<1>, libev will compile in support for the Linux inotify 2872If defined to be C<1>, libev will compile in support for the Linux inotify
2854interface to speed up C<ev_stat> watchers. Its actual availability will 2873interface to speed up C<ev_stat> watchers. Its actual availability will
2855be detected at runtime. 2874be detected at runtime. If undefined, it will be enabled if the headers
2875indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled.
2856 2876
2857=item EV_ATOMIC_T 2877=item EV_ATOMIC_T
2858 2878
2859Libev requires an integer type (suitable for storing C<0> or C<1>) whose 2879Libev requires an integer type (suitable for storing C<0> or C<1>) whose
2860access is atomic with respect to other threads or signal contexts. No such 2880access is atomic with respect to other threads or signal contexts. No such

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines