… | |
… | |
131 | .\} |
131 | .\} |
132 | .rm #[ #] #H #V #F C |
132 | .rm #[ #] #H #V #F C |
133 | .\" ======================================================================== |
133 | .\" ======================================================================== |
134 | .\" |
134 | .\" |
135 | .IX Title "LIBEV 3" |
135 | .IX Title "LIBEV 3" |
136 | .TH LIBEV 3 "2019-06-25" "libev-4.25" "libev - high performance full featured event loop" |
136 | .TH LIBEV 3 "2019-07-07" "libev-4.27" "libev - high performance full featured event loop" |
137 | .\" For nroff, turn off justification. Always turn off hyphenation; it makes |
137 | .\" For nroff, turn off justification. Always turn off hyphenation; it makes |
138 | .\" way too many mistakes in technical documents. |
138 | .\" way too many mistakes in technical documents. |
139 | .if n .ad l |
139 | .if n .ad l |
140 | .nh |
140 | .nh |
141 | .SH "NAME" |
141 | .SH "NAME" |
… | |
… | |
291 | When libev detects a usage error such as a negative timer interval, then |
291 | When libev detects a usage error such as a negative timer interval, then |
292 | it will print a diagnostic message and abort (via the \f(CW\*(C`assert\*(C'\fR mechanism, |
292 | it will print a diagnostic message and abort (via the \f(CW\*(C`assert\*(C'\fR mechanism, |
293 | so \f(CW\*(C`NDEBUG\*(C'\fR will disable this checking): these are programming errors in |
293 | so \f(CW\*(C`NDEBUG\*(C'\fR will disable this checking): these are programming errors in |
294 | the libev caller and need to be fixed there. |
294 | the libev caller and need to be fixed there. |
295 | .PP |
295 | .PP |
|
|
296 | Via the \f(CW\*(C`EV_FREQUENT\*(C'\fR macro you can compile in and/or enable extensive |
|
|
297 | consistency checking code inside libev that can be used to check for |
|
|
298 | internal inconsistencies, suually caused by application bugs. |
|
|
299 | .PP |
296 | Libev also has a few internal error-checking \f(CW\*(C`assert\*(C'\fRions, and also has |
300 | Libev also has a few internal error-checking \f(CW\*(C`assert\*(C'\fRions. These do not |
297 | extensive consistency checking code. These do not trigger under normal |
|
|
298 | circumstances, as they indicate either a bug in libev or worse. |
301 | trigger under normal circumstances, as they indicate either a bug in libev |
|
|
302 | or worse. |
299 | .SH "GLOBAL FUNCTIONS" |
303 | .SH "GLOBAL FUNCTIONS" |
300 | .IX Header "GLOBAL FUNCTIONS" |
304 | .IX Header "GLOBAL FUNCTIONS" |
301 | These functions can be called anytime, even before initialising the |
305 | These functions can be called anytime, even before initialising the |
302 | library in any way. |
306 | library in any way. |
303 | .IP "ev_tstamp ev_time ()" 4 |
307 | .IP "ev_tstamp ev_time ()" 4 |
… | |
… | |
1867 | reuse the same code path. |
1871 | reuse the same code path. |
1868 | .PP |
1872 | .PP |
1869 | \fIThe special problem of fork\fR |
1873 | \fIThe special problem of fork\fR |
1870 | .IX Subsection "The special problem of fork" |
1874 | .IX Subsection "The special problem of fork" |
1871 | .PP |
1875 | .PP |
1872 | Some backends (epoll, kqueue, probably linuxaio) do not support \f(CW\*(C`fork ()\*(C'\fR |
1876 | Some backends (epoll, kqueue, linuxaio, iouring) do not support \f(CW\*(C`fork ()\*(C'\fR |
1873 | at all or exhibit useless behaviour. Libev fully supports fork, but needs |
1877 | at all or exhibit useless behaviour. Libev fully supports fork, but needs |
1874 | to be told about it in the child if you want to continue to use it in the |
1878 | to be told about it in the child if you want to continue to use it in the |
1875 | child. |
1879 | child. |
1876 | .PP |
1880 | .PP |
1877 | To support fork in your child processes, you have to call \f(CW\*(C`ev_loop_fork |
1881 | To support fork in your child processes, you have to call \f(CW\*(C`ev_loop_fork |
… | |
… | |
4620 | \& |
4624 | \& |
4621 | \& ev_select.c only when select backend is enabled |
4625 | \& ev_select.c only when select backend is enabled |
4622 | \& ev_poll.c only when poll backend is enabled |
4626 | \& ev_poll.c only when poll backend is enabled |
4623 | \& ev_epoll.c only when the epoll backend is enabled |
4627 | \& ev_epoll.c only when the epoll backend is enabled |
4624 | \& ev_linuxaio.c only when the linux aio backend is enabled |
4628 | \& ev_linuxaio.c only when the linux aio backend is enabled |
|
|
4629 | \& ev_iouring.c only when the linux io_uring backend is enabled |
4625 | \& ev_kqueue.c only when the kqueue backend is enabled |
4630 | \& ev_kqueue.c only when the kqueue backend is enabled |
4626 | \& ev_port.c only when the solaris port backend is enabled |
4631 | \& ev_port.c only when the solaris port backend is enabled |
4627 | .Ve |
4632 | .Ve |
4628 | .PP |
4633 | .PP |
4629 | \&\fIev.c\fR includes the backend files directly when enabled, so you only need |
4634 | \&\fIev.c\fR includes the backend files directly when enabled, so you only need |
… | |
… | |
4812 | otherwise another method will be used as fallback. This is the preferred |
4817 | otherwise another method will be used as fallback. This is the preferred |
4813 | backend for GNU/Linux systems. If undefined, it will be enabled if the |
4818 | backend for GNU/Linux systems. If undefined, it will be enabled if the |
4814 | headers indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled. |
4819 | headers indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled. |
4815 | .IP "\s-1EV_USE_LINUXAIO\s0" 4 |
4820 | .IP "\s-1EV_USE_LINUXAIO\s0" 4 |
4816 | .IX Item "EV_USE_LINUXAIO" |
4821 | .IX Item "EV_USE_LINUXAIO" |
|
|
4822 | If defined to be \f(CW1\fR, libev will compile in support for the Linux aio |
|
|
4823 | backend (\f(CW\*(C`EV_USE_EPOLL\*(C'\fR must also be enabled). If undefined, it will be |
|
|
4824 | enabled on linux, otherwise disabled. |
|
|
4825 | .IP "\s-1EV_USE_IOURING\s0" 4 |
|
|
4826 | .IX Item "EV_USE_IOURING" |
4817 | If defined to be \f(CW1\fR, libev will compile in support for the Linux |
4827 | If defined to be \f(CW1\fR, libev will compile in support for the Linux |
4818 | aio backend. Due to it's currenbt limitations it has to be requested |
4828 | io_uring backend (\f(CW\*(C`EV_USE_EPOLL\*(C'\fR must also be enabled). Due to it's |
4819 | explicitly. If undefined, it will be enabled on linux, otherwise |
4829 | current limitations it has to be requested explicitly. If undefined, it |
4820 | disabled. |
4830 | will be enabled on linux, otherwise disabled. |
4821 | .IP "\s-1EV_USE_KQUEUE\s0" 4 |
4831 | .IP "\s-1EV_USE_KQUEUE\s0" 4 |
4822 | .IX Item "EV_USE_KQUEUE" |
4832 | .IX Item "EV_USE_KQUEUE" |
4823 | If defined to be \f(CW1\fR, libev will compile in support for the \s-1BSD\s0 style |
4833 | If defined to be \f(CW1\fR, libev will compile in support for the \s-1BSD\s0 style |
4824 | \&\f(CW\*(C`kqueue\*(C'\fR(2) backend. Its actual availability will be detected at runtime, |
4834 | \&\f(CW\*(C`kqueue\*(C'\fR(2) backend. Its actual availability will be detected at runtime, |
4825 | otherwise another method will be used as fallback. This is the preferred |
4835 | otherwise another method will be used as fallback. This is the preferred |
… | |
… | |
5081 | in. If set to \f(CW1\fR, then verification code will be compiled in, but not |
5091 | in. If set to \f(CW1\fR, then verification code will be compiled in, but not |
5082 | called. If set to \f(CW2\fR, then the internal verification code will be |
5092 | called. If set to \f(CW2\fR, then the internal verification code will be |
5083 | called once per loop, which can slow down libev. If set to \f(CW3\fR, then the |
5093 | called once per loop, which can slow down libev. If set to \f(CW3\fR, then the |
5084 | verification code will be called very frequently, which will slow down |
5094 | verification code will be called very frequently, which will slow down |
5085 | libev considerably. |
5095 | libev considerably. |
|
|
5096 | .Sp |
|
|
5097 | Verification errors are reported via C's \f(CW\*(C`assert\*(C'\fR mechanism, so if you |
|
|
5098 | disable that (e.g. by defining \f(CW\*(C`NDEBUG\*(C'\fR) then no errors will be reported. |
5086 | .Sp |
5099 | .Sp |
5087 | The default is \f(CW1\fR, unless \f(CW\*(C`EV_FEATURES\*(C'\fR overrides it, in which case it |
5100 | The default is \f(CW1\fR, unless \f(CW\*(C`EV_FEATURES\*(C'\fR overrides it, in which case it |
5088 | will be \f(CW0\fR. |
5101 | will be \f(CW0\fR. |
5089 | .IP "\s-1EV_COMMON\s0" 4 |
5102 | .IP "\s-1EV_COMMON\s0" 4 |
5090 | .IX Item "EV_COMMON" |
5103 | .IX Item "EV_COMMON" |