1 | .\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) |
1 | .\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30) |
2 | .\" |
2 | .\" |
3 | .\" Standard preamble: |
3 | .\" Standard preamble: |
4 | .\" ======================================================================== |
4 | .\" ======================================================================== |
5 | .de Sp \" Vertical space (when we can't use .PP) |
5 | .de Sp \" Vertical space (when we can't use .PP) |
6 | .if t .sp .5v |
6 | .if t .sp .5v |
… | |
… | |
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 "2014-09-05" "libev-4.15" "libev - high performance full featured event loop" |
136 | .TH LIBEV 3 "2016-02-18" "libev-4.22" "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" |
… | |
… | |
541 | GNU/Linux system for example, \f(CW\*(C`getpid\*(C'\fR is actually a simple 5\-insn sequence |
541 | GNU/Linux system for example, \f(CW\*(C`getpid\*(C'\fR is actually a simple 5\-insn sequence |
542 | without a system call and thus \fIvery\fR fast, but my GNU/Linux system also has |
542 | without a system call and thus \fIvery\fR fast, but my GNU/Linux system also has |
543 | \&\f(CW\*(C`pthread_atfork\*(C'\fR which is even faster). |
543 | \&\f(CW\*(C`pthread_atfork\*(C'\fR which is even faster). |
544 | .Sp |
544 | .Sp |
545 | The big advantage of this flag is that you can forget about fork (and |
545 | The big advantage of this flag is that you can forget about fork (and |
546 | forget about forgetting to tell libev about forking) when you use this |
546 | forget about forgetting to tell libev about forking, although you still |
547 | flag. |
547 | have to ignore \f(CW\*(C`SIGPIPE\*(C'\fR) when you use this flag. |
548 | .Sp |
548 | .Sp |
549 | This flag setting cannot be overridden or specified in the \f(CW\*(C`LIBEV_FLAGS\*(C'\fR |
549 | This flag setting cannot be overridden or specified in the \f(CW\*(C`LIBEV_FLAGS\*(C'\fR |
550 | environment variable. |
550 | environment variable. |
551 | .ie n .IP """EVFLAG_NOINOTIFY""" 4 |
551 | .ie n .IP """EVFLAG_NOINOTIFY""" 4 |
552 | .el .IP "\f(CWEVFLAG_NOINOTIFY\fR" 4 |
552 | .el .IP "\f(CWEVFLAG_NOINOTIFY\fR" 4 |
… | |
… | |
816 | to reinitialise the kernel state for backends that have one. Despite |
816 | to reinitialise the kernel state for backends that have one. Despite |
817 | the name, you can call it anytime you are allowed to start or stop |
817 | the name, you can call it anytime you are allowed to start or stop |
818 | watchers (except inside an \f(CW\*(C`ev_prepare\*(C'\fR callback), but it makes most |
818 | watchers (except inside an \f(CW\*(C`ev_prepare\*(C'\fR callback), but it makes most |
819 | sense after forking, in the child process. You \fImust\fR call it (or use |
819 | sense after forking, in the child process. You \fImust\fR call it (or use |
820 | \&\f(CW\*(C`EVFLAG_FORKCHECK\*(C'\fR) in the child before resuming or calling \f(CW\*(C`ev_run\*(C'\fR. |
820 | \&\f(CW\*(C`EVFLAG_FORKCHECK\*(C'\fR) in the child before resuming or calling \f(CW\*(C`ev_run\*(C'\fR. |
|
|
821 | .Sp |
|
|
822 | In addition, if you want to reuse a loop (via this function or |
|
|
823 | \&\f(CW\*(C`EVFLAG_FORKCHECK\*(C'\fR), you \fIalso\fR have to ignore \f(CW\*(C`SIGPIPE\*(C'\fR. |
821 | .Sp |
824 | .Sp |
822 | Again, you \fIhave\fR to call it on \fIany\fR loop that you want to re-use after |
825 | Again, you \fIhave\fR to call it on \fIany\fR loop that you want to re-use after |
823 | a fork, \fIeven if you do not plan to use the loop in the parent\fR. This is |
826 | a fork, \fIeven if you do not plan to use the loop in the parent\fR. This is |
824 | because some kernel interfaces *cough* \fIkqueue\fR *cough* do funny things |
827 | because some kernel interfaces *cough* \fIkqueue\fR *cough* do funny things |
825 | during fork. |
828 | during fork. |
… | |
… | |
2343 | Periodic watchers are also timers of a kind, but they are very versatile |
2346 | Periodic watchers are also timers of a kind, but they are very versatile |
2344 | (and unfortunately a bit complex). |
2347 | (and unfortunately a bit complex). |
2345 | .PP |
2348 | .PP |
2346 | Unlike \f(CW\*(C`ev_timer\*(C'\fR, periodic watchers are not based on real time (or |
2349 | Unlike \f(CW\*(C`ev_timer\*(C'\fR, periodic watchers are not based on real time (or |
2347 | relative time, the physical time that passes) but on wall clock time |
2350 | relative time, the physical time that passes) but on wall clock time |
2348 | (absolute time, the thing you can read on your calender or clock). The |
2351 | (absolute time, the thing you can read on your calendar or clock). The |
2349 | difference is that wall clock time can run faster or slower than real |
2352 | difference is that wall clock time can run faster or slower than real |
2350 | time, and time jumps are not uncommon (e.g. when you adjust your |
2353 | time, and time jumps are not uncommon (e.g. when you adjust your |
2351 | wrist-watch). |
2354 | wrist-watch). |
2352 | .PP |
2355 | .PP |
2353 | You can tell a periodic watcher to trigger after some specific point |
2356 | You can tell a periodic watcher to trigger after some specific point |
… | |
… | |
4052 | files, \fImy_ev.h\fR and \fImy_ev.c\fR that include the respective libev files: |
4055 | files, \fImy_ev.h\fR and \fImy_ev.c\fR that include the respective libev files: |
4053 | .PP |
4056 | .PP |
4054 | .Vb 4 |
4057 | .Vb 4 |
4055 | \& // my_ev.h |
4058 | \& // my_ev.h |
4056 | \& #define EV_CB_DECLARE(type) struct my_coro *cb; |
4059 | \& #define EV_CB_DECLARE(type) struct my_coro *cb; |
4057 | \& #define EV_CB_INVOKE(watcher) switch_to ((watcher)\->cb); |
4060 | \& #define EV_CB_INVOKE(watcher) switch_to ((watcher)\->cb) |
4058 | \& #include "../libev/ev.h" |
4061 | \& #include "../libev/ev.h" |
4059 | \& |
4062 | \& |
4060 | \& // my_ev.c |
4063 | \& // my_ev.c |
4061 | \& #define EV_H "my_ev.h" |
4064 | \& #define EV_H "my_ev.h" |
4062 | \& #include "../libev/ev.c" |
4065 | \& #include "../libev/ev.c" |