… | |
… | |
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 |
… | |
… | |
2633 | =item C<EV_DEFAULT>, C<EV_DEFAULT_> |
2633 | =item C<EV_DEFAULT>, C<EV_DEFAULT_> |
2634 | |
2634 | |
2635 | Similar to the other two macros, this gives you the value of the default |
2635 | Similar to the other two macros, this gives you the value of the default |
2636 | loop, if multiple loops are supported ("ev loop default"). |
2636 | loop, if multiple loops are supported ("ev loop default"). |
2637 | |
2637 | |
|
|
2638 | =item C<EV_DEFAULT_UC>, C<EV_DEFAULT_UC_> |
|
|
2639 | |
|
|
2640 | Usage identical to C<EV_DEFAULT> and C<EV_DEFAULT_>, but requires that the |
|
|
2641 | default loop has been initialised (C<UC> == unchecked). Their behaviour |
|
|
2642 | is undefined when the default loop has not been initialised by a previous |
|
|
2643 | execution of C<EV_DEFAULT>, C<EV_DEFAULT_> or C<ev_default_init (...)>. |
|
|
2644 | |
|
|
2645 | It is often prudent to use C<EV_DEFAULT> when initialising the first |
|
|
2646 | watcher in a function but use C<EV_DEFAULT_UC> afterwards. |
|
|
2647 | |
2638 | =back |
2648 | =back |
2639 | |
2649 | |
2640 | Example: Declare and initialise a check watcher, utilising the above |
2650 | Example: Declare and initialise a check watcher, utilising the above |
2641 | macros so it will work regardless of whether multiple loops are supported |
2651 | macros so it will work regardless of whether multiple loops are supported |
2642 | or not. |
2652 | or not. |
… | |
… | |
2737 | |
2747 | |
2738 | libev.m4 |
2748 | libev.m4 |
2739 | |
2749 | |
2740 | =head2 PREPROCESSOR SYMBOLS/MACROS |
2750 | =head2 PREPROCESSOR SYMBOLS/MACROS |
2741 | |
2751 | |
2742 | Libev can be configured via a variety of preprocessor symbols you have to define |
2752 | Libev can be configured via a variety of preprocessor symbols you have to |
2743 | before including any of its files. The default is not to build for multiplicity |
2753 | define before including any of its files. The default in the absense of |
2744 | and only include the select backend. |
2754 | autoconf 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 | |
2777 | If defined to be C<1>, libev will assume that C<nanosleep ()> is available |
2787 | If defined to be C<1>, libev will assume that C<nanosleep ()> is available |
2778 | and will use it for delays. Otherwise it will use C<select ()>. |
2788 | and will use it for delays. Otherwise it will use C<select ()>. |
2779 | |
2789 | |
|
|
2790 | =item EV_USE_EVENTFD |
|
|
2791 | |
|
|
2792 | If defined to be C<1>, then libev will assume that C<eventfd ()> is |
|
|
2793 | available and will probe for kernel support at runtime. This will improve |
|
|
2794 | C<ev_signal> and C<ev_async> performance and reduce resource consumption. |
|
|
2795 | If undefined, it will be enabled if the headers indicate GNU/Linux + Glibc |
|
|
2796 | 2.7 or newer, otherwise disabled. |
|
|
2797 | |
2780 | =item EV_USE_SELECT |
2798 | =item EV_USE_SELECT |
2781 | |
2799 | |
2782 | If undefined or defined to be C<1>, libev will compile in support for the |
2800 | If undefined or defined to be C<1>, libev will compile in support for the |
2783 | C<select>(2) backend. No attempt at autodetection will be done: if no |
2801 | C<select>(2) backend. No attempt at autodetection will be done: if no |
2784 | other method takes over, select will be it. Otherwise the select backend |
2802 | other 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 | |
2823 | If defined to be C<1>, libev will compile in support for the Linux |
2841 | If defined to be C<1>, libev will compile in support for the Linux |
2824 | C<epoll>(7) backend. Its availability will be detected at runtime, |
2842 | C<epoll>(7) backend. Its availability will be detected at runtime, |
2825 | otherwise another method will be used as fallback. This is the |
2843 | otherwise another method will be used as fallback. This is the preferred |
2826 | preferred backend for GNU/Linux systems. |
2844 | backend for GNU/Linux systems. If undefined, it will be enabled if the |
|
|
2845 | headers indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled. |
2827 | |
2846 | |
2828 | =item EV_USE_KQUEUE |
2847 | =item EV_USE_KQUEUE |
2829 | |
2848 | |
2830 | If defined to be C<1>, libev will compile in support for the BSD style |
2849 | If defined to be C<1>, libev will compile in support for the BSD style |
2831 | C<kqueue>(2) backend. Its actual availability will be detected at runtime, |
2850 | C<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 | |
2853 | If defined to be C<1>, libev will compile in support for the Linux inotify |
2872 | If defined to be C<1>, libev will compile in support for the Linux inotify |
2854 | interface to speed up C<ev_stat> watchers. Its actual availability will |
2873 | interface to speed up C<ev_stat> watchers. Its actual availability will |
2855 | be detected at runtime. |
2874 | be detected at runtime. If undefined, it will be enabled if the headers |
|
|
2875 | indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled. |
2856 | |
2876 | |
2857 | =item EV_ATOMIC_T |
2877 | =item EV_ATOMIC_T |
2858 | |
2878 | |
2859 | Libev requires an integer type (suitable for storing C<0> or C<1>) whose |
2879 | Libev requires an integer type (suitable for storing C<0> or C<1>) whose |
2860 | access is atomic with respect to other threads or signal contexts. No such |
2880 | access is atomic with respect to other threads or signal contexts. No such |