… | |
… | |
358 | For few fds, this backend is a bit little slower than poll and select, |
358 | For few fds, this backend is a bit little slower than poll and select, |
359 | but it scales phenomenally better. While poll and select usually scale |
359 | but it scales phenomenally better. While poll and select usually scale |
360 | like O(total_fds) where n is the total number of fds (or the highest fd), |
360 | like O(total_fds) where n is the total number of fds (or the highest fd), |
361 | epoll scales either O(1) or O(active_fds). The epoll design has a number |
361 | epoll scales either O(1) or O(active_fds). The epoll design has a number |
362 | of shortcomings, such as silently dropping events in some hard-to-detect |
362 | of shortcomings, such as silently dropping events in some hard-to-detect |
363 | cases and rewiring a syscall per fd change, no fork support and bad |
363 | cases and requiring a syscall per fd change, no fork support and bad |
364 | support for dup. |
364 | support for dup. |
365 | |
365 | |
366 | While stopping, setting and starting an I/O watcher in the same iteration |
366 | While stopping, setting and starting an I/O watcher in the same iteration |
367 | will result in some caching, there is still a syscall per such incident |
367 | will 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 |
… | |
… | |
2288 | |
2288 | |
2289 | This call incurs the overhead of a syscall only once per loop iteration, |
2289 | This call incurs the overhead of a syscall only once per loop iteration, |
2290 | so while the overhead might be noticable, it doesn't apply to repeated |
2290 | so while the overhead might be noticable, it doesn't apply to repeated |
2291 | calls to C<ev_async_send>. |
2291 | calls to C<ev_async_send>. |
2292 | |
2292 | |
|
|
2293 | =item bool = ev_async_pending (ev_async *) |
|
|
2294 | |
|
|
2295 | Returns a non-zero value when C<ev_async_send> has been called on the |
|
|
2296 | watcher but the event has not yet been processed (or even noted) by the |
|
|
2297 | event loop. |
|
|
2298 | |
|
|
2299 | C<ev_async_send> sets a flag in the watcher and wakes up the loop. When |
|
|
2300 | the loop iterates next and checks for the watcher to have become active, |
|
|
2301 | it will reset the flag again. C<ev_async_pending> can be used to very |
|
|
2302 | quickly check wether invoking the loop might be a good idea. |
|
|
2303 | |
|
|
2304 | Not that this does I<not> check wether the watcher itself is pending, only |
|
|
2305 | wether it has been requested to make this watcher pending. |
|
|
2306 | |
2293 | =back |
2307 | =back |
2294 | |
2308 | |
2295 | |
2309 | |
2296 | =head1 OTHER FUNCTIONS |
2310 | =head1 OTHER FUNCTIONS |
2297 | |
2311 | |
… | |
… | |
2723 | |
2737 | |
2724 | libev.m4 |
2738 | libev.m4 |
2725 | |
2739 | |
2726 | =head2 PREPROCESSOR SYMBOLS/MACROS |
2740 | =head2 PREPROCESSOR SYMBOLS/MACROS |
2727 | |
2741 | |
2728 | Libev can be configured via a variety of preprocessor symbols you have to define |
2742 | Libev can be configured via a variety of preprocessor symbols you have to |
2729 | before including any of its files. The default is not to build for multiplicity |
2743 | define before including any of its files. The default in the absense of |
2730 | and only include the select backend. |
2744 | autoconf is noted for every option. |
2731 | |
2745 | |
2732 | =over 4 |
2746 | =over 4 |
2733 | |
2747 | |
2734 | =item EV_STANDALONE |
2748 | =item EV_STANDALONE |
2735 | |
2749 | |
… | |
… | |
2761 | =item EV_USE_NANOSLEEP |
2775 | =item EV_USE_NANOSLEEP |
2762 | |
2776 | |
2763 | If defined to be C<1>, libev will assume that C<nanosleep ()> is available |
2777 | If defined to be C<1>, libev will assume that C<nanosleep ()> is available |
2764 | and will use it for delays. Otherwise it will use C<select ()>. |
2778 | and will use it for delays. Otherwise it will use C<select ()>. |
2765 | |
2779 | |
|
|
2780 | =item EV_USE_EVENTFD |
|
|
2781 | |
|
|
2782 | If defined to be C<1>, then libev will assume that C<eventfd ()> is |
|
|
2783 | available and will probe for kernel support at runtime. This will improve |
|
|
2784 | C<ev_signal> and C<ev_async> performance and reduce resource consumption. |
|
|
2785 | If undefined, it will be enabled if the headers indicate GNU/Linux + Glibc |
|
|
2786 | 2.7 or newer, otherwise disabled. |
|
|
2787 | |
2766 | =item EV_USE_SELECT |
2788 | =item EV_USE_SELECT |
2767 | |
2789 | |
2768 | If undefined or defined to be C<1>, libev will compile in support for the |
2790 | If undefined or defined to be C<1>, libev will compile in support for the |
2769 | C<select>(2) backend. No attempt at autodetection will be done: if no |
2791 | C<select>(2) backend. No attempt at autodetection will be done: if no |
2770 | other method takes over, select will be it. Otherwise the select backend |
2792 | other method takes over, select will be it. Otherwise the select backend |
… | |
… | |
2806 | |
2828 | |
2807 | =item EV_USE_EPOLL |
2829 | =item EV_USE_EPOLL |
2808 | |
2830 | |
2809 | If defined to be C<1>, libev will compile in support for the Linux |
2831 | If defined to be C<1>, libev will compile in support for the Linux |
2810 | C<epoll>(7) backend. Its availability will be detected at runtime, |
2832 | C<epoll>(7) backend. Its availability will be detected at runtime, |
2811 | otherwise another method will be used as fallback. This is the |
2833 | otherwise another method will be used as fallback. This is the preferred |
2812 | preferred backend for GNU/Linux systems. |
2834 | backend for GNU/Linux systems. If undefined, it will be enabled if the |
|
|
2835 | headers indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled. |
2813 | |
2836 | |
2814 | =item EV_USE_KQUEUE |
2837 | =item EV_USE_KQUEUE |
2815 | |
2838 | |
2816 | If defined to be C<1>, libev will compile in support for the BSD style |
2839 | If defined to be C<1>, libev will compile in support for the BSD style |
2817 | C<kqueue>(2) backend. Its actual availability will be detected at runtime, |
2840 | C<kqueue>(2) backend. Its actual availability will be detected at runtime, |
… | |
… | |
2836 | |
2859 | |
2837 | =item EV_USE_INOTIFY |
2860 | =item EV_USE_INOTIFY |
2838 | |
2861 | |
2839 | If defined to be C<1>, libev will compile in support for the Linux inotify |
2862 | If defined to be C<1>, libev will compile in support for the Linux inotify |
2840 | interface to speed up C<ev_stat> watchers. Its actual availability will |
2863 | interface to speed up C<ev_stat> watchers. Its actual availability will |
2841 | be detected at runtime. |
2864 | be detected at runtime. If undefined, it will be enabled if the headers |
|
|
2865 | indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled. |
2842 | |
2866 | |
2843 | =item EV_ATOMIC_T |
2867 | =item EV_ATOMIC_T |
2844 | |
2868 | |
2845 | Libev requires an integer type (suitable for storing C<0> or C<1>) whose |
2869 | Libev requires an integer type (suitable for storing C<0> or C<1>) whose |
2846 | access is atomic with respect to other threads or signal contexts. No such |
2870 | access is atomic with respect to other threads or signal contexts. No such |