evdispatch 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. data/Manifest.txt +21 -65
  2. data/ext/revdispatch/dispatch.cc +3 -0
  3. data/ext/revdispatch/extconf.rb +50 -32
  4. data/ext/revdispatch/{libdispatch-0.1 → libdispatch}/libev-3.31/ev++.h +0 -0
  5. data/ext/revdispatch/{libdispatch-0.1 → libdispatch}/libev-3.31/ev.c +0 -0
  6. data/ext/revdispatch/{libdispatch-0.1 → libdispatch}/libev-3.31/ev.h +0 -0
  7. data/ext/revdispatch/{libdispatch-0.1 → libdispatch}/libev-3.31/ev_epoll.c +0 -0
  8. data/ext/revdispatch/{libdispatch-0.1 → libdispatch}/libev-3.31/ev_kqueue.c +0 -0
  9. data/ext/revdispatch/{libdispatch-0.1 → libdispatch}/libev-3.31/ev_poll.c +0 -0
  10. data/ext/revdispatch/{libdispatch-0.1 → libdispatch}/libev-3.31/ev_port.c +0 -0
  11. data/ext/revdispatch/{libdispatch-0.1 → libdispatch}/libev-3.31/ev_select.c +0 -0
  12. data/ext/revdispatch/{libdispatch-0.1 → libdispatch}/libev-3.31/ev_vars.h +0 -0
  13. data/ext/revdispatch/{libdispatch-0.1 → libdispatch}/libev-3.31/ev_win32.c +0 -0
  14. data/ext/revdispatch/{libdispatch-0.1 → libdispatch}/libev-3.31/ev_wrap.h +0 -0
  15. data/ext/revdispatch/{libdispatch-0.1 → libdispatch}/libev-3.31/event.c +0 -0
  16. data/ext/revdispatch/{libdispatch-0.1 → libdispatch}/libev-3.31/event.h +0 -0
  17. data/ext/revdispatch/{libdispatch-0.1 → libdispatch}/src/ev_dispatch.cc +6 -17
  18. data/ext/revdispatch/{libdispatch-0.1 → libdispatch}/src/ev_dispatch.h +0 -0
  19. data/ext/revdispatch/libdispatch/src/ev_embed.c +6 -0
  20. data/ext/revdispatch/{libdispatch-0.1 → libdispatch}/src/ev_http.cc +11 -8
  21. data/ext/revdispatch/{libdispatch-0.1 → libdispatch}/src/ev_http.h +0 -0
  22. data/lib/evdispatch/version.rb +2 -2
  23. data/website/index.html +7 -1
  24. data/website/index.txt +6 -0
  25. metadata +23 -67
  26. data/ext/revdispatch/libdispatch-0.1/Changelog +0 -12
  27. data/ext/revdispatch/libdispatch-0.1/LICENSE +0 -0
  28. data/ext/revdispatch/libdispatch-0.1/Makefile.am +0 -10
  29. data/ext/revdispatch/libdispatch-0.1/Makefile.in +0 -636
  30. data/ext/revdispatch/libdispatch-0.1/README +0 -3
  31. data/ext/revdispatch/libdispatch-0.1/aclocal.m4 +0 -7268
  32. data/ext/revdispatch/libdispatch-0.1/autogen.sh +0 -11
  33. data/ext/revdispatch/libdispatch-0.1/config.guess +0 -1516
  34. data/ext/revdispatch/libdispatch-0.1/config.h.in +0 -112
  35. data/ext/revdispatch/libdispatch-0.1/config.sub +0 -1626
  36. data/ext/revdispatch/libdispatch-0.1/configure +0 -21779
  37. data/ext/revdispatch/libdispatch-0.1/configure.ac +0 -42
  38. data/ext/revdispatch/libdispatch-0.1/depcomp +0 -584
  39. data/ext/revdispatch/libdispatch-0.1/install-sh +0 -507
  40. data/ext/revdispatch/libdispatch-0.1/libev-3.31/Changes +0 -78
  41. data/ext/revdispatch/libdispatch-0.1/libev-3.31/LICENSE +0 -25
  42. data/ext/revdispatch/libdispatch-0.1/libev-3.31/Makefile.am +0 -18
  43. data/ext/revdispatch/libdispatch-0.1/libev-3.31/Makefile.in +0 -677
  44. data/ext/revdispatch/libdispatch-0.1/libev-3.31/README +0 -130
  45. data/ext/revdispatch/libdispatch-0.1/libev-3.31/aclocal.m4 +0 -7268
  46. data/ext/revdispatch/libdispatch-0.1/libev-3.31/autogen.sh +0 -6
  47. data/ext/revdispatch/libdispatch-0.1/libev-3.31/config.guess +0 -1516
  48. data/ext/revdispatch/libdispatch-0.1/libev-3.31/config.h.in +0 -112
  49. data/ext/revdispatch/libdispatch-0.1/libev-3.31/config.sub +0 -1626
  50. data/ext/revdispatch/libdispatch-0.1/libev-3.31/configure +0 -21500
  51. data/ext/revdispatch/libdispatch-0.1/libev-3.31/configure.ac +0 -18
  52. data/ext/revdispatch/libdispatch-0.1/libev-3.31/ev.3 +0 -3344
  53. data/ext/revdispatch/libdispatch-0.1/libev-3.31/ev.pod +0 -3268
  54. data/ext/revdispatch/libdispatch-0.1/libev-3.31/install-sh +0 -294
  55. data/ext/revdispatch/libdispatch-0.1/libev-3.31/libev.m4 +0 -28
  56. data/ext/revdispatch/libdispatch-0.1/libev-3.31/ltmain.sh +0 -6871
  57. data/ext/revdispatch/libdispatch-0.1/libev-3.31/missing +0 -336
  58. data/ext/revdispatch/libdispatch-0.1/libev-3.31/mkinstalldirs +0 -111
  59. data/ext/revdispatch/libdispatch-0.1/ltmain.sh +0 -6930
  60. data/ext/revdispatch/libdispatch-0.1/missing +0 -367
  61. data/ext/revdispatch/libdispatch-0.1/src/Makefile.am +0 -11
  62. data/ext/revdispatch/libdispatch-0.1/src/Makefile.in +0 -485
  63. data/ext/revdispatch/libdispatch-0.1/test/Makefile.am +0 -30
  64. data/ext/revdispatch/libdispatch-0.1/test/Makefile.in +0 -623
  65. data/ext/revdispatch/libdispatch-0.1/test/key_test.cc +0 -52
  66. data/ext/revdispatch/libdispatch-0.1/test/next_test.cc +0 -84
  67. data/ext/revdispatch/libdispatch-0.1/test/opt_test.cc +0 -70
  68. data/ext/revdispatch/libdispatch-0.1/test/pipe_test.cc +0 -241
  69. data/ext/revdispatch/libdispatch-0.1/test/post_test.cc +0 -66
  70. data/ext/revdispatch/libdispatch-0.1/test/stress_test.cc +0 -62
@@ -1,3268 +0,0 @@
1
- =head1 NAME
2
-
3
- libev - a high performance full-featured event loop written in C
4
-
5
- =head1 SYNOPSIS
6
-
7
- #include <ev.h>
8
-
9
- =head2 EXAMPLE PROGRAM
10
-
11
- // a single header file is required
12
- #include <ev.h>
13
-
14
- // every watcher type has its own typedef'd struct
15
- // with the name ev_<type>
16
- ev_io stdin_watcher;
17
- ev_timer timeout_watcher;
18
-
19
- // all watcher callbacks have a similar signature
20
- // this callback is called when data is readable on stdin
21
- static void
22
- stdin_cb (EV_P_ struct ev_io *w, int revents)
23
- {
24
- puts ("stdin ready");
25
- // for one-shot events, one must manually stop the watcher
26
- // with its corresponding stop function.
27
- ev_io_stop (EV_A_ w);
28
-
29
- // this causes all nested ev_loop's to stop iterating
30
- ev_unloop (EV_A_ EVUNLOOP_ALL);
31
- }
32
-
33
- // another callback, this time for a time-out
34
- static void
35
- timeout_cb (EV_P_ struct ev_timer *w, int revents)
36
- {
37
- puts ("timeout");
38
- // this causes the innermost ev_loop to stop iterating
39
- ev_unloop (EV_A_ EVUNLOOP_ONE);
40
- }
41
-
42
- int
43
- main (void)
44
- {
45
- // use the default event loop unless you have special needs
46
- struct ev_loop *loop = ev_default_loop (0);
47
-
48
- // initialise an io watcher, then start it
49
- // this one will watch for stdin to become readable
50
- ev_io_init (&stdin_watcher, stdin_cb, /*STDIN_FILENO*/ 0, EV_READ);
51
- ev_io_start (loop, &stdin_watcher);
52
-
53
- // initialise a timer watcher, then start it
54
- // simple non-repeating 5.5 second timeout
55
- ev_timer_init (&timeout_watcher, timeout_cb, 5.5, 0.);
56
- ev_timer_start (loop, &timeout_watcher);
57
-
58
- // now wait for events to arrive
59
- ev_loop (loop, 0);
60
-
61
- // unloop was called, so exit
62
- return 0;
63
- }
64
-
65
- =head1 DESCRIPTION
66
-
67
- The newest version of this document is also available as an html-formatted
68
- web page you might find easier to navigate when reading it for the first
69
- time: L<http://cvs.schmorp.de/libev/ev.html>.
70
-
71
- Libev is an event loop: you register interest in certain events (such as a
72
- file descriptor being readable or a timeout occurring), and it will manage
73
- these event sources and provide your program with events.
74
-
75
- To do this, it must take more or less complete control over your process
76
- (or thread) by executing the I<event loop> handler, and will then
77
- communicate events via a callback mechanism.
78
-
79
- You register interest in certain events by registering so-called I<event
80
- watchers>, which are relatively small C structures you initialise with the
81
- details of the event, and then hand it over to libev by I<starting> the
82
- watcher.
83
-
84
- =head2 FEATURES
85
-
86
- Libev supports C<select>, C<poll>, the Linux-specific C<epoll>, the
87
- BSD-specific C<kqueue> and the Solaris-specific event port mechanisms
88
- for file descriptor events (C<ev_io>), the Linux C<inotify> interface
89
- (for C<ev_stat>), relative timers (C<ev_timer>), absolute timers
90
- with customised rescheduling (C<ev_periodic>), synchronous signals
91
- (C<ev_signal>), process status change events (C<ev_child>), and event
92
- watchers dealing with the event loop mechanism itself (C<ev_idle>,
93
- C<ev_embed>, C<ev_prepare> and C<ev_check> watchers) as well as
94
- file watchers (C<ev_stat>) and even limited support for fork events
95
- (C<ev_fork>).
96
-
97
- It also is quite fast (see this
98
- L<benchmark|http://libev.schmorp.de/bench.html> comparing it to libevent
99
- for example).
100
-
101
- =head2 CONVENTIONS
102
-
103
- Libev is very configurable. In this manual the default (and most common)
104
- configuration will be described, which supports multiple event loops. For
105
- more info about various configuration options please have a look at
106
- B<EMBED> section in this manual. If libev was configured without support
107
- for multiple event loops, then all functions taking an initial argument of
108
- name C<loop> (which is always of type C<struct ev_loop *>) will not have
109
- this argument.
110
-
111
- =head2 TIME REPRESENTATION
112
-
113
- Libev represents time as a single floating point number, representing the
114
- (fractional) number of seconds since the (POSIX) epoch (somewhere near
115
- the beginning of 1970, details are complicated, don't ask). This type is
116
- called C<ev_tstamp>, which is what you should use too. It usually aliases
117
- to the C<double> type in C, and when you need to do any calculations on
118
- it, you should treat it as some floatingpoint value. Unlike the name
119
- component C<stamp> might indicate, it is also used for time differences
120
- throughout libev.
121
-
122
- =head1 GLOBAL FUNCTIONS
123
-
124
- These functions can be called anytime, even before initialising the
125
- library in any way.
126
-
127
- =over 4
128
-
129
- =item ev_tstamp ev_time ()
130
-
131
- Returns the current time as libev would use it. Please note that the
132
- C<ev_now> function is usually faster and also often returns the timestamp
133
- you actually want to know.
134
-
135
- =item ev_sleep (ev_tstamp interval)
136
-
137
- Sleep for the given interval: The current thread will be blocked until
138
- either it is interrupted or the given time interval has passed. Basically
139
- this is a subsecond-resolution C<sleep ()>.
140
-
141
- =item int ev_version_major ()
142
-
143
- =item int ev_version_minor ()
144
-
145
- You can find out the major and minor ABI version numbers of the library
146
- you linked against by calling the functions C<ev_version_major> and
147
- C<ev_version_minor>. If you want, you can compare against the global
148
- symbols C<EV_VERSION_MAJOR> and C<EV_VERSION_MINOR>, which specify the
149
- version of the library your program was compiled against.
150
-
151
- These version numbers refer to the ABI version of the library, not the
152
- release version.
153
-
154
- Usually, it's a good idea to terminate if the major versions mismatch,
155
- as this indicates an incompatible change. Minor versions are usually
156
- compatible to older versions, so a larger minor version alone is usually
157
- not a problem.
158
-
159
- Example: Make sure we haven't accidentally been linked against the wrong
160
- version.
161
-
162
- assert (("libev version mismatch",
163
- ev_version_major () == EV_VERSION_MAJOR
164
- && ev_version_minor () >= EV_VERSION_MINOR));
165
-
166
- =item unsigned int ev_supported_backends ()
167
-
168
- Return the set of all backends (i.e. their corresponding C<EV_BACKEND_*>
169
- value) compiled into this binary of libev (independent of their
170
- availability on the system you are running on). See C<ev_default_loop> for
171
- a description of the set values.
172
-
173
- Example: make sure we have the epoll method, because yeah this is cool and
174
- a must have and can we have a torrent of it please!!!11
175
-
176
- assert (("sorry, no epoll, no sex",
177
- ev_supported_backends () & EVBACKEND_EPOLL));
178
-
179
- =item unsigned int ev_recommended_backends ()
180
-
181
- Return the set of all backends compiled into this binary of libev and also
182
- recommended for this platform. This set is often smaller than the one
183
- returned by C<ev_supported_backends>, as for example kqueue is broken on
184
- most BSDs and will not be autodetected unless you explicitly request it
185
- (assuming you know what you are doing). This is the set of backends that
186
- libev will probe for if you specify no backends explicitly.
187
-
188
- =item unsigned int ev_embeddable_backends ()
189
-
190
- Returns the set of backends that are embeddable in other event loops. This
191
- is the theoretical, all-platform, value. To find which backends
192
- might be supported on the current system, you would need to look at
193
- C<ev_embeddable_backends () & ev_supported_backends ()>, likewise for
194
- recommended ones.
195
-
196
- See the description of C<ev_embed> watchers for more info.
197
-
198
- =item ev_set_allocator (void *(*cb)(void *ptr, long size))
199
-
200
- Sets the allocation function to use (the prototype is similar - the
201
- semantics are identical to the C<realloc> C89/SuS/POSIX function). It is
202
- used to allocate and free memory (no surprises here). If it returns zero
203
- when memory needs to be allocated (C<size != 0>), the library might abort
204
- or take some potentially destructive action.
205
-
206
- Since some systems (at least OpenBSD and Darwin) fail to implement
207
- correct C<realloc> semantics, libev will use a wrapper around the system
208
- C<realloc> and C<free> functions by default.
209
-
210
- You could override this function in high-availability programs to, say,
211
- free some memory if it cannot allocate memory, to use a special allocator,
212
- or even to sleep a while and retry until some memory is available.
213
-
214
- Example: Replace the libev allocator with one that waits a bit and then
215
- retries (example requires a standards-compliant C<realloc>).
216
-
217
- static void *
218
- persistent_realloc (void *ptr, size_t size)
219
- {
220
- for (;;)
221
- {
222
- void *newptr = realloc (ptr, size);
223
-
224
- if (newptr)
225
- return newptr;
226
-
227
- sleep (60);
228
- }
229
- }
230
-
231
- ...
232
- ev_set_allocator (persistent_realloc);
233
-
234
- =item ev_set_syserr_cb (void (*cb)(const char *msg));
235
-
236
- Set the callback function to call on a retryable syscall error (such
237
- as failed select, poll, epoll_wait). The message is a printable string
238
- indicating the system call or subsystem causing the problem. If this
239
- callback is set, then libev will expect it to remedy the sitution, no
240
- matter what, when it returns. That is, libev will generally retry the
241
- requested operation, or, if the condition doesn't go away, do bad stuff
242
- (such as abort).
243
-
244
- Example: This is basically the same thing that libev does internally, too.
245
-
246
- static void
247
- fatal_error (const char *msg)
248
- {
249
- perror (msg);
250
- abort ();
251
- }
252
-
253
- ...
254
- ev_set_syserr_cb (fatal_error);
255
-
256
- =back
257
-
258
- =head1 FUNCTIONS CONTROLLING THE EVENT LOOP
259
-
260
- An event loop is described by a C<struct ev_loop *>. The library knows two
261
- types of such loops, the I<default> loop, which supports signals and child
262
- events, and dynamically created loops which do not.
263
-
264
- =over 4
265
-
266
- =item struct ev_loop *ev_default_loop (unsigned int flags)
267
-
268
- This will initialise the default event loop if it hasn't been initialised
269
- yet and return it. If the default loop could not be initialised, returns
270
- false. If it already was initialised it simply returns it (and ignores the
271
- flags. If that is troubling you, check C<ev_backend ()> afterwards).
272
-
273
- If you don't know what event loop to use, use the one returned from this
274
- function.
275
-
276
- Note that this function is I<not> thread-safe, so if you want to use it
277
- from multiple threads, you have to lock (note also that this is unlikely,
278
- as loops cannot bes hared easily between threads anyway).
279
-
280
- The default loop is the only loop that can handle C<ev_signal> and
281
- C<ev_child> watchers, and to do this, it always registers a handler
282
- for C<SIGCHLD>. If this is a problem for your app you can either
283
- create a dynamic loop with C<ev_loop_new> that doesn't do that, or you
284
- can simply overwrite the C<SIGCHLD> signal handler I<after> calling
285
- C<ev_default_init>.
286
-
287
- The flags argument can be used to specify special behaviour or specific
288
- backends to use, and is usually specified as C<0> (or C<EVFLAG_AUTO>).
289
-
290
- The following flags are supported:
291
-
292
- =over 4
293
-
294
- =item C<EVFLAG_AUTO>
295
-
296
- The default flags value. Use this if you have no clue (it's the right
297
- thing, believe me).
298
-
299
- =item C<EVFLAG_NOENV>
300
-
301
- If this flag bit is ored into the flag value (or the program runs setuid
302
- or setgid) then libev will I<not> look at the environment variable
303
- C<LIBEV_FLAGS>. Otherwise (the default), this environment variable will
304
- override the flags completely if it is found in the environment. This is
305
- useful to try out specific backends to test their performance, or to work
306
- around bugs.
307
-
308
- =item C<EVFLAG_FORKCHECK>
309
-
310
- Instead of calling C<ev_default_fork> or C<ev_loop_fork> manually after
311
- a fork, you can also make libev check for a fork in each iteration by
312
- enabling this flag.
313
-
314
- This works by calling C<getpid ()> on every iteration of the loop,
315
- and thus this might slow down your event loop if you do a lot of loop
316
- iterations and little real work, but is usually not noticeable (on my
317
- GNU/Linux system for example, C<getpid> is actually a simple 5-insn sequence
318
- without a syscall and thus I<very> fast, but my GNU/Linux system also has
319
- C<pthread_atfork> which is even faster).
320
-
321
- The big advantage of this flag is that you can forget about fork (and
322
- forget about forgetting to tell libev about forking) when you use this
323
- flag.
324
-
325
- This flag setting cannot be overriden or specified in the C<LIBEV_FLAGS>
326
- environment variable.
327
-
328
- =item C<EVBACKEND_SELECT> (value 1, portable select backend)
329
-
330
- This is your standard select(2) backend. Not I<completely> standard, as
331
- libev tries to roll its own fd_set with no limits on the number of fds,
332
- but if that fails, expect a fairly low limit on the number of fds when
333
- using this backend. It doesn't scale too well (O(highest_fd)), but its
334
- usually the fastest backend for a low number of (low-numbered :) fds.
335
-
336
- To get good performance out of this backend you need a high amount of
337
- parallelity (most of the file descriptors should be busy). If you are
338
- writing a server, you should C<accept ()> in a loop to accept as many
339
- connections as possible during one iteration. You might also want to have
340
- a look at C<ev_set_io_collect_interval ()> to increase the amount of
341
- readyness notifications you get per iteration.
342
-
343
- =item C<EVBACKEND_POLL> (value 2, poll backend, available everywhere except on windows)
344
-
345
- And this is your standard poll(2) backend. It's more complicated
346
- than select, but handles sparse fds better and has no artificial
347
- limit on the number of fds you can use (except it will slow down
348
- considerably with a lot of inactive fds). It scales similarly to select,
349
- i.e. O(total_fds). See the entry for C<EVBACKEND_SELECT>, above, for
350
- performance tips.
351
-
352
- =item C<EVBACKEND_EPOLL> (value 4, Linux)
353
-
354
- For few fds, this backend is a bit little slower than poll and select,
355
- but it scales phenomenally better. While poll and select usually scale
356
- like O(total_fds) where n is the total number of fds (or the highest fd),
357
- epoll scales either O(1) or O(active_fds). The epoll design has a number
358
- of shortcomings, such as silently dropping events in some hard-to-detect
359
- cases and requiring a syscall per fd change, no fork support and bad
360
- support for dup.
361
-
362
- While stopping, setting and starting an I/O watcher in the same iteration
363
- will result in some caching, there is still a syscall per such incident
364
- (because the fd could point to a different file description now), so its
365
- best to avoid that. Also, C<dup ()>'ed file descriptors might not work
366
- very well if you register events for both fds.
367
-
368
- Please note that epoll sometimes generates spurious notifications, so you
369
- need to use non-blocking I/O or other means to avoid blocking when no data
370
- (or space) is available.
371
-
372
- Best performance from this backend is achieved by not unregistering all
373
- watchers for a file descriptor until it has been closed, if possible, i.e.
374
- keep at least one watcher active per fd at all times.
375
-
376
- While nominally embeddeble in other event loops, this feature is broken in
377
- all kernel versions tested so far.
378
-
379
- =item C<EVBACKEND_KQUEUE> (value 8, most BSD clones)
380
-
381
- Kqueue deserves special mention, as at the time of this writing, it
382
- was broken on all BSDs except NetBSD (usually it doesn't work reliably
383
- with anything but sockets and pipes, except on Darwin, where of course
384
- it's completely useless). For this reason it's not being "autodetected"
385
- unless you explicitly specify it explicitly in the flags (i.e. using
386
- C<EVBACKEND_KQUEUE>) or libev was compiled on a known-to-be-good (-enough)
387
- system like NetBSD.
388
-
389
- You still can embed kqueue into a normal poll or select backend and use it
390
- only for sockets (after having made sure that sockets work with kqueue on
391
- the target platform). See C<ev_embed> watchers for more info.
392
-
393
- It scales in the same way as the epoll backend, but the interface to the
394
- kernel is more efficient (which says nothing about its actual speed, of
395
- course). While stopping, setting and starting an I/O watcher does never
396
- cause an extra syscall as with C<EVBACKEND_EPOLL>, it still adds up to
397
- two event changes per incident, support for C<fork ()> is very bad and it
398
- drops fds silently in similarly hard-to-detect cases.
399
-
400
- This backend usually performs well under most conditions.
401
-
402
- While nominally embeddable in other event loops, this doesn't work
403
- everywhere, so you might need to test for this. And since it is broken
404
- almost everywhere, you should only use it when you have a lot of sockets
405
- (for which it usually works), by embedding it into another event loop
406
- (e.g. C<EVBACKEND_SELECT> or C<EVBACKEND_POLL>) and using it only for
407
- sockets.
408
-
409
- =item C<EVBACKEND_DEVPOLL> (value 16, Solaris 8)
410
-
411
- This is not implemented yet (and might never be, unless you send me an
412
- implementation). According to reports, C</dev/poll> only supports sockets
413
- and is not embeddable, which would limit the usefulness of this backend
414
- immensely.
415
-
416
- =item C<EVBACKEND_PORT> (value 32, Solaris 10)
417
-
418
- This uses the Solaris 10 event port mechanism. As with everything on Solaris,
419
- it's really slow, but it still scales very well (O(active_fds)).
420
-
421
- Please note that solaris event ports can deliver a lot of spurious
422
- notifications, so you need to use non-blocking I/O or other means to avoid
423
- blocking when no data (or space) is available.
424
-
425
- While this backend scales well, it requires one system call per active
426
- file descriptor per loop iteration. For small and medium numbers of file
427
- descriptors a "slow" C<EVBACKEND_SELECT> or C<EVBACKEND_POLL> backend
428
- might perform better.
429
-
430
- On the positive side, ignoring the spurious readyness notifications, this
431
- backend actually performed to specification in all tests and is fully
432
- embeddable, which is a rare feat among the OS-specific backends.
433
-
434
- =item C<EVBACKEND_ALL>
435
-
436
- Try all backends (even potentially broken ones that wouldn't be tried
437
- with C<EVFLAG_AUTO>). Since this is a mask, you can do stuff such as
438
- C<EVBACKEND_ALL & ~EVBACKEND_KQUEUE>.
439
-
440
- It is definitely not recommended to use this flag.
441
-
442
- =back
443
-
444
- If one or more of these are ored into the flags value, then only these
445
- backends will be tried (in the reverse order as listed here). If none are
446
- specified, all backends in C<ev_recommended_backends ()> will be tried.
447
-
448
- The most typical usage is like this:
449
-
450
- if (!ev_default_loop (0))
451
- fatal ("could not initialise libev, bad $LIBEV_FLAGS in environment?");
452
-
453
- Restrict libev to the select and poll backends, and do not allow
454
- environment settings to be taken into account:
455
-
456
- ev_default_loop (EVBACKEND_POLL | EVBACKEND_SELECT | EVFLAG_NOENV);
457
-
458
- Use whatever libev has to offer, but make sure that kqueue is used if
459
- available (warning, breaks stuff, best use only with your own private
460
- event loop and only if you know the OS supports your types of fds):
461
-
462
- ev_default_loop (ev_recommended_backends () | EVBACKEND_KQUEUE);
463
-
464
- =item struct ev_loop *ev_loop_new (unsigned int flags)
465
-
466
- Similar to C<ev_default_loop>, but always creates a new event loop that is
467
- always distinct from the default loop. Unlike the default loop, it cannot
468
- handle signal and child watchers, and attempts to do so will be greeted by
469
- undefined behaviour (or a failed assertion if assertions are enabled).
470
-
471
- Note that this function I<is> thread-safe, and the recommended way to use
472
- libev with threads is indeed to create one loop per thread, and using the
473
- default loop in the "main" or "initial" thread.
474
-
475
- Example: Try to create a event loop that uses epoll and nothing else.
476
-
477
- struct ev_loop *epoller = ev_loop_new (EVBACKEND_EPOLL | EVFLAG_NOENV);
478
- if (!epoller)
479
- fatal ("no epoll found here, maybe it hides under your chair");
480
-
481
- =item ev_default_destroy ()
482
-
483
- Destroys the default loop again (frees all memory and kernel state
484
- etc.). None of the active event watchers will be stopped in the normal
485
- sense, so e.g. C<ev_is_active> might still return true. It is your
486
- responsibility to either stop all watchers cleanly yoursef I<before>
487
- calling this function, or cope with the fact afterwards (which is usually
488
- the easiest thing, you can just ignore the watchers and/or C<free ()> them
489
- for example).
490
-
491
- Note that certain global state, such as signal state, will not be freed by
492
- this function, and related watchers (such as signal and child watchers)
493
- would need to be stopped manually.
494
-
495
- In general it is not advisable to call this function except in the
496
- rare occasion where you really need to free e.g. the signal handling
497
- pipe fds. If you need dynamically allocated loops it is better to use
498
- C<ev_loop_new> and C<ev_loop_destroy>).
499
-
500
- =item ev_loop_destroy (loop)
501
-
502
- Like C<ev_default_destroy>, but destroys an event loop created by an
503
- earlier call to C<ev_loop_new>.
504
-
505
- =item ev_default_fork ()
506
-
507
- This function sets a flag that causes subsequent C<ev_loop> iterations
508
- to reinitialise the kernel state for backends that have one. Despite the
509
- name, you can call it anytime, but it makes most sense after forking, in
510
- the child process (or both child and parent, but that again makes little
511
- sense). You I<must> call it in the child before using any of the libev
512
- functions, and it will only take effect at the next C<ev_loop> iteration.
513
-
514
- On the other hand, you only need to call this function in the child
515
- process if and only if you want to use the event library in the child. If
516
- you just fork+exec, you don't have to call it at all.
517
-
518
- The function itself is quite fast and it's usually not a problem to call
519
- it just in case after a fork. To make this easy, the function will fit in
520
- quite nicely into a call to C<pthread_atfork>:
521
-
522
- pthread_atfork (0, 0, ev_default_fork);
523
-
524
- =item ev_loop_fork (loop)
525
-
526
- Like C<ev_default_fork>, but acts on an event loop created by
527
- C<ev_loop_new>. Yes, you have to call this on every allocated event loop
528
- after fork, and how you do this is entirely your own problem.
529
-
530
- =item int ev_is_default_loop (loop)
531
-
532
- Returns true when the given loop actually is the default loop, false otherwise.
533
-
534
- =item unsigned int ev_loop_count (loop)
535
-
536
- Returns the count of loop iterations for the loop, which is identical to
537
- the number of times libev did poll for new events. It starts at C<0> and
538
- happily wraps around with enough iterations.
539
-
540
- This value can sometimes be useful as a generation counter of sorts (it
541
- "ticks" the number of loop iterations), as it roughly corresponds with
542
- C<ev_prepare> and C<ev_check> calls.
543
-
544
- =item unsigned int ev_backend (loop)
545
-
546
- Returns one of the C<EVBACKEND_*> flags indicating the event backend in
547
- use.
548
-
549
- =item ev_tstamp ev_now (loop)
550
-
551
- Returns the current "event loop time", which is the time the event loop
552
- received events and started processing them. This timestamp does not
553
- change as long as callbacks are being processed, and this is also the base
554
- time used for relative timers. You can treat it as the timestamp of the
555
- event occurring (or more correctly, libev finding out about it).
556
-
557
- =item ev_loop (loop, int flags)
558
-
559
- Finally, this is it, the event handler. This function usually is called
560
- after you initialised all your watchers and you want to start handling
561
- events.
562
-
563
- If the flags argument is specified as C<0>, it will not return until
564
- either no event watchers are active anymore or C<ev_unloop> was called.
565
-
566
- Please note that an explicit C<ev_unloop> is usually better than
567
- relying on all watchers to be stopped when deciding when a program has
568
- finished (especially in interactive programs), but having a program that
569
- automatically loops as long as it has to and no longer by virtue of
570
- relying on its watchers stopping correctly is a thing of beauty.
571
-
572
- A flags value of C<EVLOOP_NONBLOCK> will look for new events, will handle
573
- those events and any outstanding ones, but will not block your process in
574
- case there are no events and will return after one iteration of the loop.
575
-
576
- A flags value of C<EVLOOP_ONESHOT> will look for new events (waiting if
577
- neccessary) and will handle those and any outstanding ones. It will block
578
- your process until at least one new event arrives, and will return after
579
- one iteration of the loop. This is useful if you are waiting for some
580
- external event in conjunction with something not expressible using other
581
- libev watchers. However, a pair of C<ev_prepare>/C<ev_check> watchers is
582
- usually a better approach for this kind of thing.
583
-
584
- Here are the gory details of what C<ev_loop> does:
585
-
586
- - Before the first iteration, call any pending watchers.
587
- * If EVFLAG_FORKCHECK was used, check for a fork.
588
- - If a fork was detected, queue and call all fork watchers.
589
- - Queue and call all prepare watchers.
590
- - If we have been forked, recreate the kernel state.
591
- - Update the kernel state with all outstanding changes.
592
- - Update the "event loop time".
593
- - Calculate for how long to sleep or block, if at all
594
- (active idle watchers, EVLOOP_NONBLOCK or not having
595
- any active watchers at all will result in not sleeping).
596
- - Sleep if the I/O and timer collect interval say so.
597
- - Block the process, waiting for any events.
598
- - Queue all outstanding I/O (fd) events.
599
- - Update the "event loop time" and do time jump handling.
600
- - Queue all outstanding timers.
601
- - Queue all outstanding periodics.
602
- - If no events are pending now, queue all idle watchers.
603
- - Queue all check watchers.
604
- - Call all queued watchers in reverse order (i.e. check watchers first).
605
- Signals and child watchers are implemented as I/O watchers, and will
606
- be handled here by queueing them when their watcher gets executed.
607
- - If ev_unloop has been called, or EVLOOP_ONESHOT or EVLOOP_NONBLOCK
608
- were used, or there are no active watchers, return, otherwise
609
- continue with step *.
610
-
611
- Example: Queue some jobs and then loop until no events are outstanding
612
- anymore.
613
-
614
- ... queue jobs here, make sure they register event watchers as long
615
- ... as they still have work to do (even an idle watcher will do..)
616
- ev_loop (my_loop, 0);
617
- ... jobs done. yeah!
618
-
619
- =item ev_unloop (loop, how)
620
-
621
- Can be used to make a call to C<ev_loop> return early (but only after it
622
- has processed all outstanding events). The C<how> argument must be either
623
- C<EVUNLOOP_ONE>, which will make the innermost C<ev_loop> call return, or
624
- C<EVUNLOOP_ALL>, which will make all nested C<ev_loop> calls return.
625
-
626
- This "unloop state" will be cleared when entering C<ev_loop> again.
627
-
628
- =item ev_ref (loop)
629
-
630
- =item ev_unref (loop)
631
-
632
- Ref/unref can be used to add or remove a reference count on the event
633
- loop: Every watcher keeps one reference, and as long as the reference
634
- count is nonzero, C<ev_loop> will not return on its own. If you have
635
- a watcher you never unregister that should not keep C<ev_loop> from
636
- returning, ev_unref() after starting, and ev_ref() before stopping it. For
637
- example, libev itself uses this for its internal signal pipe: It is not
638
- visible to the libev user and should not keep C<ev_loop> from exiting if
639
- no event watchers registered by it are active. It is also an excellent
640
- way to do this for generic recurring timers or from within third-party
641
- libraries. Just remember to I<unref after start> and I<ref before stop>
642
- (but only if the watcher wasn't active before, or was active before,
643
- respectively).
644
-
645
- Example: Create a signal watcher, but keep it from keeping C<ev_loop>
646
- running when nothing else is active.
647
-
648
- struct ev_signal exitsig;
649
- ev_signal_init (&exitsig, sig_cb, SIGINT);
650
- ev_signal_start (loop, &exitsig);
651
- evf_unref (loop);
652
-
653
- Example: For some weird reason, unregister the above signal handler again.
654
-
655
- ev_ref (loop);
656
- ev_signal_stop (loop, &exitsig);
657
-
658
- =item ev_set_io_collect_interval (loop, ev_tstamp interval)
659
-
660
- =item ev_set_timeout_collect_interval (loop, ev_tstamp interval)
661
-
662
- These advanced functions influence the time that libev will spend waiting
663
- for events. Both are by default C<0>, meaning that libev will try to
664
- invoke timer/periodic callbacks and I/O callbacks with minimum latency.
665
-
666
- Setting these to a higher value (the C<interval> I<must> be >= C<0>)
667
- allows libev to delay invocation of I/O and timer/periodic callbacks to
668
- increase efficiency of loop iterations.
669
-
670
- The background is that sometimes your program runs just fast enough to
671
- handle one (or very few) event(s) per loop iteration. While this makes
672
- the program responsive, it also wastes a lot of CPU time to poll for new
673
- events, especially with backends like C<select ()> which have a high
674
- overhead for the actual polling but can deliver many events at once.
675
-
676
- By setting a higher I<io collect interval> you allow libev to spend more
677
- time collecting I/O events, so you can handle more events per iteration,
678
- at the cost of increasing latency. Timeouts (both C<ev_periodic> and
679
- C<ev_timer>) will be not affected. Setting this to a non-null value will
680
- introduce an additional C<ev_sleep ()> call into most loop iterations.
681
-
682
- Likewise, by setting a higher I<timeout collect interval> you allow libev
683
- to spend more time collecting timeouts, at the expense of increased
684
- latency (the watcher callback will be called later). C<ev_io> watchers
685
- will not be affected. Setting this to a non-null value will not introduce
686
- any overhead in libev.
687
-
688
- Many (busy) programs can usually benefit by setting the io collect
689
- interval to a value near C<0.1> or so, which is often enough for
690
- interactive servers (of course not for games), likewise for timeouts. It
691
- usually doesn't make much sense to set it to a lower value than C<0.01>,
692
- as this approsaches the timing granularity of most systems.
693
-
694
- =back
695
-
696
-
697
- =head1 ANATOMY OF A WATCHER
698
-
699
- A watcher is a structure that you create and register to record your
700
- interest in some event. For instance, if you want to wait for STDIN to
701
- become readable, you would create an C<ev_io> watcher for that:
702
-
703
- static void my_cb (struct ev_loop *loop, struct ev_io *w, int revents)
704
- {
705
- ev_io_stop (w);
706
- ev_unloop (loop, EVUNLOOP_ALL);
707
- }
708
-
709
- struct ev_loop *loop = ev_default_loop (0);
710
- struct ev_io stdin_watcher;
711
- ev_init (&stdin_watcher, my_cb);
712
- ev_io_set (&stdin_watcher, STDIN_FILENO, EV_READ);
713
- ev_io_start (loop, &stdin_watcher);
714
- ev_loop (loop, 0);
715
-
716
- As you can see, you are responsible for allocating the memory for your
717
- watcher structures (and it is usually a bad idea to do this on the stack,
718
- although this can sometimes be quite valid).
719
-
720
- Each watcher structure must be initialised by a call to C<ev_init
721
- (watcher *, callback)>, which expects a callback to be provided. This
722
- callback gets invoked each time the event occurs (or, in the case of io
723
- watchers, each time the event loop detects that the file descriptor given
724
- is readable and/or writable).
725
-
726
- Each watcher type has its own C<< ev_<type>_set (watcher *, ...) >> macro
727
- with arguments specific to this watcher type. There is also a macro
728
- to combine initialisation and setting in one call: C<< ev_<type>_init
729
- (watcher *, callback, ...) >>.
730
-
731
- To make the watcher actually watch out for events, you have to start it
732
- with a watcher-specific start function (C<< ev_<type>_start (loop, watcher
733
- *) >>), and you can stop watching for events at any time by calling the
734
- corresponding stop function (C<< ev_<type>_stop (loop, watcher *) >>.
735
-
736
- As long as your watcher is active (has been started but not stopped) you
737
- must not touch the values stored in it. Most specifically you must never
738
- reinitialise it or call its C<set> macro.
739
-
740
- Each and every callback receives the event loop pointer as first, the
741
- registered watcher structure as second, and a bitset of received events as
742
- third argument.
743
-
744
- The received events usually include a single bit per event type received
745
- (you can receive multiple events at the same time). The possible bit masks
746
- are:
747
-
748
- =over 4
749
-
750
- =item C<EV_READ>
751
-
752
- =item C<EV_WRITE>
753
-
754
- The file descriptor in the C<ev_io> watcher has become readable and/or
755
- writable.
756
-
757
- =item C<EV_TIMEOUT>
758
-
759
- The C<ev_timer> watcher has timed out.
760
-
761
- =item C<EV_PERIODIC>
762
-
763
- The C<ev_periodic> watcher has timed out.
764
-
765
- =item C<EV_SIGNAL>
766
-
767
- The signal specified in the C<ev_signal> watcher has been received by a thread.
768
-
769
- =item C<EV_CHILD>
770
-
771
- The pid specified in the C<ev_child> watcher has received a status change.
772
-
773
- =item C<EV_STAT>
774
-
775
- The path specified in the C<ev_stat> watcher changed its attributes somehow.
776
-
777
- =item C<EV_IDLE>
778
-
779
- The C<ev_idle> watcher has determined that you have nothing better to do.
780
-
781
- =item C<EV_PREPARE>
782
-
783
- =item C<EV_CHECK>
784
-
785
- All C<ev_prepare> watchers are invoked just I<before> C<ev_loop> starts
786
- to gather new events, and all C<ev_check> watchers are invoked just after
787
- C<ev_loop> has gathered them, but before it invokes any callbacks for any
788
- received events. Callbacks of both watcher types can start and stop as
789
- many watchers as they want, and all of them will be taken into account
790
- (for example, a C<ev_prepare> watcher might start an idle watcher to keep
791
- C<ev_loop> from blocking).
792
-
793
- =item C<EV_EMBED>
794
-
795
- The embedded event loop specified in the C<ev_embed> watcher needs attention.
796
-
797
- =item C<EV_FORK>
798
-
799
- The event loop has been resumed in the child process after fork (see
800
- C<ev_fork>).
801
-
802
- =item C<EV_ASYNC>
803
-
804
- The given async watcher has been asynchronously notified (see C<ev_async>).
805
-
806
- =item C<EV_ERROR>
807
-
808
- An unspecified error has occured, the watcher has been stopped. This might
809
- happen because the watcher could not be properly started because libev
810
- ran out of memory, a file descriptor was found to be closed or any other
811
- problem. You best act on it by reporting the problem and somehow coping
812
- with the watcher being stopped.
813
-
814
- Libev will usually signal a few "dummy" events together with an error,
815
- for example it might indicate that a fd is readable or writable, and if
816
- your callbacks is well-written it can just attempt the operation and cope
817
- with the error from read() or write(). This will not work in multithreaded
818
- programs, though, so beware.
819
-
820
- =back
821
-
822
- =head2 GENERIC WATCHER FUNCTIONS
823
-
824
- In the following description, C<TYPE> stands for the watcher type,
825
- e.g. C<timer> for C<ev_timer> watchers and C<io> for C<ev_io> watchers.
826
-
827
- =over 4
828
-
829
- =item C<ev_init> (ev_TYPE *watcher, callback)
830
-
831
- This macro initialises the generic portion of a watcher. The contents
832
- of the watcher object can be arbitrary (so C<malloc> will do). Only
833
- the generic parts of the watcher are initialised, you I<need> to call
834
- the type-specific C<ev_TYPE_set> macro afterwards to initialise the
835
- type-specific parts. For each type there is also a C<ev_TYPE_init> macro
836
- which rolls both calls into one.
837
-
838
- You can reinitialise a watcher at any time as long as it has been stopped
839
- (or never started) and there are no pending events outstanding.
840
-
841
- The callback is always of type C<void (*)(ev_loop *loop, ev_TYPE *watcher,
842
- int revents)>.
843
-
844
- =item C<ev_TYPE_set> (ev_TYPE *, [args])
845
-
846
- This macro initialises the type-specific parts of a watcher. You need to
847
- call C<ev_init> at least once before you call this macro, but you can
848
- call C<ev_TYPE_set> any number of times. You must not, however, call this
849
- macro on a watcher that is active (it can be pending, however, which is a
850
- difference to the C<ev_init> macro).
851
-
852
- Although some watcher types do not have type-specific arguments
853
- (e.g. C<ev_prepare>) you still need to call its C<set> macro.
854
-
855
- =item C<ev_TYPE_init> (ev_TYPE *watcher, callback, [args])
856
-
857
- This convinience macro rolls both C<ev_init> and C<ev_TYPE_set> macro
858
- calls into a single call. This is the most convinient method to initialise
859
- a watcher. The same limitations apply, of course.
860
-
861
- =item C<ev_TYPE_start> (loop *, ev_TYPE *watcher)
862
-
863
- Starts (activates) the given watcher. Only active watchers will receive
864
- events. If the watcher is already active nothing will happen.
865
-
866
- =item C<ev_TYPE_stop> (loop *, ev_TYPE *watcher)
867
-
868
- Stops the given watcher again (if active) and clears the pending
869
- status. It is possible that stopped watchers are pending (for example,
870
- non-repeating timers are being stopped when they become pending), but
871
- C<ev_TYPE_stop> ensures that the watcher is neither active nor pending. If
872
- you want to free or reuse the memory used by the watcher it is therefore a
873
- good idea to always call its C<ev_TYPE_stop> function.
874
-
875
- =item bool ev_is_active (ev_TYPE *watcher)
876
-
877
- Returns a true value iff the watcher is active (i.e. it has been started
878
- and not yet been stopped). As long as a watcher is active you must not modify
879
- it.
880
-
881
- =item bool ev_is_pending (ev_TYPE *watcher)
882
-
883
- Returns a true value iff the watcher is pending, (i.e. it has outstanding
884
- events but its callback has not yet been invoked). As long as a watcher
885
- is pending (but not active) you must not call an init function on it (but
886
- C<ev_TYPE_set> is safe), you must not change its priority, and you must
887
- make sure the watcher is available to libev (e.g. you cannot C<free ()>
888
- it).
889
-
890
- =item callback ev_cb (ev_TYPE *watcher)
891
-
892
- Returns the callback currently set on the watcher.
893
-
894
- =item ev_cb_set (ev_TYPE *watcher, callback)
895
-
896
- Change the callback. You can change the callback at virtually any time
897
- (modulo threads).
898
-
899
- =item ev_set_priority (ev_TYPE *watcher, priority)
900
-
901
- =item int ev_priority (ev_TYPE *watcher)
902
-
903
- Set and query the priority of the watcher. The priority is a small
904
- integer between C<EV_MAXPRI> (default: C<2>) and C<EV_MINPRI>
905
- (default: C<-2>). Pending watchers with higher priority will be invoked
906
- before watchers with lower priority, but priority will not keep watchers
907
- from being executed (except for C<ev_idle> watchers).
908
-
909
- This means that priorities are I<only> used for ordering callback
910
- invocation after new events have been received. This is useful, for
911
- example, to reduce latency after idling, or more often, to bind two
912
- watchers on the same event and make sure one is called first.
913
-
914
- If you need to suppress invocation when higher priority events are pending
915
- you need to look at C<ev_idle> watchers, which provide this functionality.
916
-
917
- You I<must not> change the priority of a watcher as long as it is active or
918
- pending.
919
-
920
- The default priority used by watchers when no priority has been set is
921
- always C<0>, which is supposed to not be too high and not be too low :).
922
-
923
- Setting a priority outside the range of C<EV_MINPRI> to C<EV_MAXPRI> is
924
- fine, as long as you do not mind that the priority value you query might
925
- or might not have been adjusted to be within valid range.
926
-
927
- =item ev_invoke (loop, ev_TYPE *watcher, int revents)
928
-
929
- Invoke the C<watcher> with the given C<loop> and C<revents>. Neither
930
- C<loop> nor C<revents> need to be valid as long as the watcher callback
931
- can deal with that fact.
932
-
933
- =item int ev_clear_pending (loop, ev_TYPE *watcher)
934
-
935
- If the watcher is pending, this function returns clears its pending status
936
- and returns its C<revents> bitset (as if its callback was invoked). If the
937
- watcher isn't pending it does nothing and returns C<0>.
938
-
939
- =back
940
-
941
-
942
- =head2 ASSOCIATING CUSTOM DATA WITH A WATCHER
943
-
944
- Each watcher has, by default, a member C<void *data> that you can change
945
- and read at any time, libev will completely ignore it. This can be used
946
- to associate arbitrary data with your watcher. If you need more data and
947
- don't want to allocate memory and store a pointer to it in that data
948
- member, you can also "subclass" the watcher type and provide your own
949
- data:
950
-
951
- struct my_io
952
- {
953
- struct ev_io io;
954
- int otherfd;
955
- void *somedata;
956
- struct whatever *mostinteresting;
957
- }
958
-
959
- And since your callback will be called with a pointer to the watcher, you
960
- can cast it back to your own type:
961
-
962
- static void my_cb (struct ev_loop *loop, struct ev_io *w_, int revents)
963
- {
964
- struct my_io *w = (struct my_io *)w_;
965
- ...
966
- }
967
-
968
- More interesting and less C-conformant ways of casting your callback type
969
- instead have been omitted.
970
-
971
- Another common scenario is having some data structure with multiple
972
- watchers:
973
-
974
- struct my_biggy
975
- {
976
- int some_data;
977
- ev_timer t1;
978
- ev_timer t2;
979
- }
980
-
981
- In this case getting the pointer to C<my_biggy> is a bit more complicated,
982
- you need to use C<offsetof>:
983
-
984
- #include <stddef.h>
985
-
986
- static void
987
- t1_cb (EV_P_ struct ev_timer *w, int revents)
988
- {
989
- struct my_biggy big = (struct my_biggy *
990
- (((char *)w) - offsetof (struct my_biggy, t1));
991
- }
992
-
993
- static void
994
- t2_cb (EV_P_ struct ev_timer *w, int revents)
995
- {
996
- struct my_biggy big = (struct my_biggy *
997
- (((char *)w) - offsetof (struct my_biggy, t2));
998
- }
999
-
1000
-
1001
- =head1 WATCHER TYPES
1002
-
1003
- This section describes each watcher in detail, but will not repeat
1004
- information given in the last section. Any initialisation/set macros,
1005
- functions and members specific to the watcher type are explained.
1006
-
1007
- Members are additionally marked with either I<[read-only]>, meaning that,
1008
- while the watcher is active, you can look at the member and expect some
1009
- sensible content, but you must not modify it (you can modify it while the
1010
- watcher is stopped to your hearts content), or I<[read-write]>, which
1011
- means you can expect it to have some sensible content while the watcher
1012
- is active, but you can also modify it. Modifying it may not do something
1013
- sensible or take immediate effect (or do anything at all), but libev will
1014
- not crash or malfunction in any way.
1015
-
1016
-
1017
- =head2 C<ev_io> - is this file descriptor readable or writable?
1018
-
1019
- I/O watchers check whether a file descriptor is readable or writable
1020
- in each iteration of the event loop, or, more precisely, when reading
1021
- would not block the process and writing would at least be able to write
1022
- some data. This behaviour is called level-triggering because you keep
1023
- receiving events as long as the condition persists. Remember you can stop
1024
- the watcher if you don't want to act on the event and neither want to
1025
- receive future events.
1026
-
1027
- In general you can register as many read and/or write event watchers per
1028
- fd as you want (as long as you don't confuse yourself). Setting all file
1029
- descriptors to non-blocking mode is also usually a good idea (but not
1030
- required if you know what you are doing).
1031
-
1032
- If you must do this, then force the use of a known-to-be-good backend
1033
- (at the time of this writing, this includes only C<EVBACKEND_SELECT> and
1034
- C<EVBACKEND_POLL>).
1035
-
1036
- Another thing you have to watch out for is that it is quite easy to
1037
- receive "spurious" readyness notifications, that is your callback might
1038
- be called with C<EV_READ> but a subsequent C<read>(2) will actually block
1039
- because there is no data. Not only are some backends known to create a
1040
- lot of those (for example solaris ports), it is very easy to get into
1041
- this situation even with a relatively standard program structure. Thus
1042
- it is best to always use non-blocking I/O: An extra C<read>(2) returning
1043
- C<EAGAIN> is far preferable to a program hanging until some data arrives.
1044
-
1045
- If you cannot run the fd in non-blocking mode (for example you should not
1046
- play around with an Xlib connection), then you have to seperately re-test
1047
- whether a file descriptor is really ready with a known-to-be good interface
1048
- such as poll (fortunately in our Xlib example, Xlib already does this on
1049
- its own, so its quite safe to use).
1050
-
1051
- =head3 The special problem of disappearing file descriptors
1052
-
1053
- Some backends (e.g. kqueue, epoll) need to be told about closing a file
1054
- descriptor (either by calling C<close> explicitly or by any other means,
1055
- such as C<dup>). The reason is that you register interest in some file
1056
- descriptor, but when it goes away, the operating system will silently drop
1057
- this interest. If another file descriptor with the same number then is
1058
- registered with libev, there is no efficient way to see that this is, in
1059
- fact, a different file descriptor.
1060
-
1061
- To avoid having to explicitly tell libev about such cases, libev follows
1062
- the following policy: Each time C<ev_io_set> is being called, libev
1063
- will assume that this is potentially a new file descriptor, otherwise
1064
- it is assumed that the file descriptor stays the same. That means that
1065
- you I<have> to call C<ev_io_set> (or C<ev_io_init>) when you change the
1066
- descriptor even if the file descriptor number itself did not change.
1067
-
1068
- This is how one would do it normally anyway, the important point is that
1069
- the libev application should not optimise around libev but should leave
1070
- optimisations to libev.
1071
-
1072
- =head3 The special problem of dup'ed file descriptors
1073
-
1074
- Some backends (e.g. epoll), cannot register events for file descriptors,
1075
- but only events for the underlying file descriptions. That means when you
1076
- have C<dup ()>'ed file descriptors or weirder constellations, and register
1077
- events for them, only one file descriptor might actually receive events.
1078
-
1079
- There is no workaround possible except not registering events
1080
- for potentially C<dup ()>'ed file descriptors, or to resort to
1081
- C<EVBACKEND_SELECT> or C<EVBACKEND_POLL>.
1082
-
1083
- =head3 The special problem of fork
1084
-
1085
- Some backends (epoll, kqueue) do not support C<fork ()> at all or exhibit
1086
- useless behaviour. Libev fully supports fork, but needs to be told about
1087
- it in the child.
1088
-
1089
- To support fork in your programs, you either have to call
1090
- C<ev_default_fork ()> or C<ev_loop_fork ()> after a fork in the child,
1091
- enable C<EVFLAG_FORKCHECK>, or resort to C<EVBACKEND_SELECT> or
1092
- C<EVBACKEND_POLL>.
1093
-
1094
- =head3 The special problem of SIGPIPE
1095
-
1096
- While not really specific to libev, it is easy to forget about SIGPIPE:
1097
- when reading from a pipe whose other end has been closed, your program
1098
- gets send a SIGPIPE, which, by default, aborts your program. For most
1099
- programs this is sensible behaviour, for daemons, this is usually
1100
- undesirable.
1101
-
1102
- So when you encounter spurious, unexplained daemon exits, make sure you
1103
- ignore SIGPIPE (and maybe make sure you log the exit status of your daemon
1104
- somewhere, as that would have given you a big clue).
1105
-
1106
-
1107
- =head3 Watcher-Specific Functions
1108
-
1109
- =over 4
1110
-
1111
- =item ev_io_init (ev_io *, callback, int fd, int events)
1112
-
1113
- =item ev_io_set (ev_io *, int fd, int events)
1114
-
1115
- Configures an C<ev_io> watcher. The C<fd> is the file descriptor to
1116
- rceeive events for and events is either C<EV_READ>, C<EV_WRITE> or
1117
- C<EV_READ | EV_WRITE> to receive the given events.
1118
-
1119
- =item int fd [read-only]
1120
-
1121
- The file descriptor being watched.
1122
-
1123
- =item int events [read-only]
1124
-
1125
- The events being watched.
1126
-
1127
- =back
1128
-
1129
- =head3 Examples
1130
-
1131
- Example: Call C<stdin_readable_cb> when STDIN_FILENO has become, well
1132
- readable, but only once. Since it is likely line-buffered, you could
1133
- attempt to read a whole line in the callback.
1134
-
1135
- static void
1136
- stdin_readable_cb (struct ev_loop *loop, struct ev_io *w, int revents)
1137
- {
1138
- ev_io_stop (loop, w);
1139
- .. read from stdin here (or from w->fd) and haqndle any I/O errors
1140
- }
1141
-
1142
- ...
1143
- struct ev_loop *loop = ev_default_init (0);
1144
- struct ev_io stdin_readable;
1145
- ev_io_init (&stdin_readable, stdin_readable_cb, STDIN_FILENO, EV_READ);
1146
- ev_io_start (loop, &stdin_readable);
1147
- ev_loop (loop, 0);
1148
-
1149
-
1150
- =head2 C<ev_timer> - relative and optionally repeating timeouts
1151
-
1152
- Timer watchers are simple relative timers that generate an event after a
1153
- given time, and optionally repeating in regular intervals after that.
1154
-
1155
- The timers are based on real time, that is, if you register an event that
1156
- times out after an hour and you reset your system clock to last years
1157
- time, it will still time out after (roughly) and hour. "Roughly" because
1158
- detecting time jumps is hard, and some inaccuracies are unavoidable (the
1159
- monotonic clock option helps a lot here).
1160
-
1161
- The relative timeouts are calculated relative to the C<ev_now ()>
1162
- time. This is usually the right thing as this timestamp refers to the time
1163
- of the event triggering whatever timeout you are modifying/starting. If
1164
- you suspect event processing to be delayed and you I<need> to base the timeout
1165
- on the current time, use something like this to adjust for this:
1166
-
1167
- ev_timer_set (&timer, after + ev_now () - ev_time (), 0.);
1168
-
1169
- The callback is guarenteed to be invoked only when its timeout has passed,
1170
- but if multiple timers become ready during the same loop iteration then
1171
- order of execution is undefined.
1172
-
1173
- =head3 Watcher-Specific Functions and Data Members
1174
-
1175
- =over 4
1176
-
1177
- =item ev_timer_init (ev_timer *, callback, ev_tstamp after, ev_tstamp repeat)
1178
-
1179
- =item ev_timer_set (ev_timer *, ev_tstamp after, ev_tstamp repeat)
1180
-
1181
- Configure the timer to trigger after C<after> seconds. If C<repeat> is
1182
- C<0.>, then it will automatically be stopped. If it is positive, then the
1183
- timer will automatically be configured to trigger again C<repeat> seconds
1184
- later, again, and again, until stopped manually.
1185
-
1186
- The timer itself will do a best-effort at avoiding drift, that is, if you
1187
- configure a timer to trigger every 10 seconds, then it will trigger at
1188
- exactly 10 second intervals. If, however, your program cannot keep up with
1189
- the timer (because it takes longer than those 10 seconds to do stuff) the
1190
- timer will not fire more than once per event loop iteration.
1191
-
1192
- =item ev_timer_again (loop, ev_timer *)
1193
-
1194
- This will act as if the timer timed out and restart it again if it is
1195
- repeating. The exact semantics are:
1196
-
1197
- If the timer is pending, its pending status is cleared.
1198
-
1199
- If the timer is started but nonrepeating, stop it (as if it timed out).
1200
-
1201
- If the timer is repeating, either start it if necessary (with the
1202
- C<repeat> value), or reset the running timer to the C<repeat> value.
1203
-
1204
- This sounds a bit complicated, but here is a useful and typical
1205
- example: Imagine you have a tcp connection and you want a so-called idle
1206
- timeout, that is, you want to be called when there have been, say, 60
1207
- seconds of inactivity on the socket. The easiest way to do this is to
1208
- configure an C<ev_timer> with a C<repeat> value of C<60> and then call
1209
- C<ev_timer_again> each time you successfully read or write some data. If
1210
- you go into an idle state where you do not expect data to travel on the
1211
- socket, you can C<ev_timer_stop> the timer, and C<ev_timer_again> will
1212
- automatically restart it if need be.
1213
-
1214
- That means you can ignore the C<after> value and C<ev_timer_start>
1215
- altogether and only ever use the C<repeat> value and C<ev_timer_again>:
1216
-
1217
- ev_timer_init (timer, callback, 0., 5.);
1218
- ev_timer_again (loop, timer);
1219
- ...
1220
- timer->again = 17.;
1221
- ev_timer_again (loop, timer);
1222
- ...
1223
- timer->again = 10.;
1224
- ev_timer_again (loop, timer);
1225
-
1226
- This is more slightly efficient then stopping/starting the timer each time
1227
- you want to modify its timeout value.
1228
-
1229
- =item ev_tstamp repeat [read-write]
1230
-
1231
- The current C<repeat> value. Will be used each time the watcher times out
1232
- or C<ev_timer_again> is called and determines the next timeout (if any),
1233
- which is also when any modifications are taken into account.
1234
-
1235
- =back
1236
-
1237
- =head3 Examples
1238
-
1239
- Example: Create a timer that fires after 60 seconds.
1240
-
1241
- static void
1242
- one_minute_cb (struct ev_loop *loop, struct ev_timer *w, int revents)
1243
- {
1244
- .. one minute over, w is actually stopped right here
1245
- }
1246
-
1247
- struct ev_timer mytimer;
1248
- ev_timer_init (&mytimer, one_minute_cb, 60., 0.);
1249
- ev_timer_start (loop, &mytimer);
1250
-
1251
- Example: Create a timeout timer that times out after 10 seconds of
1252
- inactivity.
1253
-
1254
- static void
1255
- timeout_cb (struct ev_loop *loop, struct ev_timer *w, int revents)
1256
- {
1257
- .. ten seconds without any activity
1258
- }
1259
-
1260
- struct ev_timer mytimer;
1261
- ev_timer_init (&mytimer, timeout_cb, 0., 10.); /* note, only repeat used */
1262
- ev_timer_again (&mytimer); /* start timer */
1263
- ev_loop (loop, 0);
1264
-
1265
- // and in some piece of code that gets executed on any "activity":
1266
- // reset the timeout to start ticking again at 10 seconds
1267
- ev_timer_again (&mytimer);
1268
-
1269
-
1270
- =head2 C<ev_periodic> - to cron or not to cron?
1271
-
1272
- Periodic watchers are also timers of a kind, but they are very versatile
1273
- (and unfortunately a bit complex).
1274
-
1275
- Unlike C<ev_timer>'s, they are not based on real time (or relative time)
1276
- but on wallclock time (absolute time). You can tell a periodic watcher
1277
- to trigger "at" some specific point in time. For example, if you tell a
1278
- periodic watcher to trigger in 10 seconds (by specifiying e.g. C<ev_now ()
1279
- + 10.>) and then reset your system clock to the last year, then it will
1280
- take a year to trigger the event (unlike an C<ev_timer>, which would trigger
1281
- roughly 10 seconds later).
1282
-
1283
- They can also be used to implement vastly more complex timers, such as
1284
- triggering an event on each midnight, local time or other, complicated,
1285
- rules.
1286
-
1287
- As with timers, the callback is guarenteed to be invoked only when the
1288
- time (C<at>) has been passed, but if multiple periodic timers become ready
1289
- during the same loop iteration then order of execution is undefined.
1290
-
1291
- =head3 Watcher-Specific Functions and Data Members
1292
-
1293
- =over 4
1294
-
1295
- =item ev_periodic_init (ev_periodic *, callback, ev_tstamp at, ev_tstamp interval, reschedule_cb)
1296
-
1297
- =item ev_periodic_set (ev_periodic *, ev_tstamp after, ev_tstamp repeat, reschedule_cb)
1298
-
1299
- Lots of arguments, lets sort it out... There are basically three modes of
1300
- operation, and we will explain them from simplest to complex:
1301
-
1302
- =over 4
1303
-
1304
- =item * absolute timer (at = time, interval = reschedule_cb = 0)
1305
-
1306
- In this configuration the watcher triggers an event at the wallclock time
1307
- C<at> and doesn't repeat. It will not adjust when a time jump occurs,
1308
- that is, if it is to be run at January 1st 2011 then it will run when the
1309
- system time reaches or surpasses this time.
1310
-
1311
- =item * repeating interval timer (at = offset, interval > 0, reschedule_cb = 0)
1312
-
1313
- In this mode the watcher will always be scheduled to time out at the next
1314
- C<at + N * interval> time (for some integer N, which can also be negative)
1315
- and then repeat, regardless of any time jumps.
1316
-
1317
- This can be used to create timers that do not drift with respect to system
1318
- time:
1319
-
1320
- ev_periodic_set (&periodic, 0., 3600., 0);
1321
-
1322
- This doesn't mean there will always be 3600 seconds in between triggers,
1323
- but only that the the callback will be called when the system time shows a
1324
- full hour (UTC), or more correctly, when the system time is evenly divisible
1325
- by 3600.
1326
-
1327
- Another way to think about it (for the mathematically inclined) is that
1328
- C<ev_periodic> will try to run the callback in this mode at the next possible
1329
- time where C<time = at (mod interval)>, regardless of any time jumps.
1330
-
1331
- For numerical stability it is preferable that the C<at> value is near
1332
- C<ev_now ()> (the current time), but there is no range requirement for
1333
- this value.
1334
-
1335
- =item * manual reschedule mode (at and interval ignored, reschedule_cb = callback)
1336
-
1337
- In this mode the values for C<interval> and C<at> are both being
1338
- ignored. Instead, each time the periodic watcher gets scheduled, the
1339
- reschedule callback will be called with the watcher as first, and the
1340
- current time as second argument.
1341
-
1342
- NOTE: I<This callback MUST NOT stop or destroy any periodic watcher,
1343
- ever, or make any event loop modifications>. If you need to stop it,
1344
- return C<now + 1e30> (or so, fudge fudge) and stop it afterwards (e.g. by
1345
- starting an C<ev_prepare> watcher, which is legal).
1346
-
1347
- Its prototype is C<ev_tstamp (*reschedule_cb)(struct ev_periodic *w,
1348
- ev_tstamp now)>, e.g.:
1349
-
1350
- static ev_tstamp my_rescheduler (struct ev_periodic *w, ev_tstamp now)
1351
- {
1352
- return now + 60.;
1353
- }
1354
-
1355
- It must return the next time to trigger, based on the passed time value
1356
- (that is, the lowest time value larger than to the second argument). It
1357
- will usually be called just before the callback will be triggered, but
1358
- might be called at other times, too.
1359
-
1360
- NOTE: I<< This callback must always return a time that is later than the
1361
- passed C<now> value >>. Not even C<now> itself will do, it I<must> be larger.
1362
-
1363
- This can be used to create very complex timers, such as a timer that
1364
- triggers on each midnight, local time. To do this, you would calculate the
1365
- next midnight after C<now> and return the timestamp value for this. How
1366
- you do this is, again, up to you (but it is not trivial, which is the main
1367
- reason I omitted it as an example).
1368
-
1369
- =back
1370
-
1371
- =item ev_periodic_again (loop, ev_periodic *)
1372
-
1373
- Simply stops and restarts the periodic watcher again. This is only useful
1374
- when you changed some parameters or the reschedule callback would return
1375
- a different time than the last time it was called (e.g. in a crond like
1376
- program when the crontabs have changed).
1377
-
1378
- =item ev_tstamp offset [read-write]
1379
-
1380
- When repeating, this contains the offset value, otherwise this is the
1381
- absolute point in time (the C<at> value passed to C<ev_periodic_set>).
1382
-
1383
- Can be modified any time, but changes only take effect when the periodic
1384
- timer fires or C<ev_periodic_again> is being called.
1385
-
1386
- =item ev_tstamp interval [read-write]
1387
-
1388
- The current interval value. Can be modified any time, but changes only
1389
- take effect when the periodic timer fires or C<ev_periodic_again> is being
1390
- called.
1391
-
1392
- =item ev_tstamp (*reschedule_cb)(struct ev_periodic *w, ev_tstamp now) [read-write]
1393
-
1394
- The current reschedule callback, or C<0>, if this functionality is
1395
- switched off. Can be changed any time, but changes only take effect when
1396
- the periodic timer fires or C<ev_periodic_again> is being called.
1397
-
1398
- =item ev_tstamp at [read-only]
1399
-
1400
- When active, contains the absolute time that the watcher is supposed to
1401
- trigger next.
1402
-
1403
- =back
1404
-
1405
- =head3 Examples
1406
-
1407
- Example: Call a callback every hour, or, more precisely, whenever the
1408
- system clock is divisible by 3600. The callback invocation times have
1409
- potentially a lot of jittering, but good long-term stability.
1410
-
1411
- static void
1412
- clock_cb (struct ev_loop *loop, struct ev_io *w, int revents)
1413
- {
1414
- ... its now a full hour (UTC, or TAI or whatever your clock follows)
1415
- }
1416
-
1417
- struct ev_periodic hourly_tick;
1418
- ev_periodic_init (&hourly_tick, clock_cb, 0., 3600., 0);
1419
- ev_periodic_start (loop, &hourly_tick);
1420
-
1421
- Example: The same as above, but use a reschedule callback to do it:
1422
-
1423
- #include <math.h>
1424
-
1425
- static ev_tstamp
1426
- my_scheduler_cb (struct ev_periodic *w, ev_tstamp now)
1427
- {
1428
- return fmod (now, 3600.) + 3600.;
1429
- }
1430
-
1431
- ev_periodic_init (&hourly_tick, clock_cb, 0., 0., my_scheduler_cb);
1432
-
1433
- Example: Call a callback every hour, starting now:
1434
-
1435
- struct ev_periodic hourly_tick;
1436
- ev_periodic_init (&hourly_tick, clock_cb,
1437
- fmod (ev_now (loop), 3600.), 3600., 0);
1438
- ev_periodic_start (loop, &hourly_tick);
1439
-
1440
-
1441
- =head2 C<ev_signal> - signal me when a signal gets signalled!
1442
-
1443
- Signal watchers will trigger an event when the process receives a specific
1444
- signal one or more times. Even though signals are very asynchronous, libev
1445
- will try it's best to deliver signals synchronously, i.e. as part of the
1446
- normal event processing, like any other event.
1447
-
1448
- You can configure as many watchers as you like per signal. Only when the
1449
- first watcher gets started will libev actually register a signal watcher
1450
- with the kernel (thus it coexists with your own signal handlers as long
1451
- as you don't register any with libev). Similarly, when the last signal
1452
- watcher for a signal is stopped libev will reset the signal handler to
1453
- SIG_DFL (regardless of what it was set to before).
1454
-
1455
- If possible and supported, libev will install its handlers with
1456
- C<SA_RESTART> behaviour enabled, so syscalls should not be unduly
1457
- interrupted. If you have a problem with syscalls getting interrupted by
1458
- signals you can block all signals in an C<ev_check> watcher and unblock
1459
- them in an C<ev_prepare> watcher.
1460
-
1461
- =head3 Watcher-Specific Functions and Data Members
1462
-
1463
- =over 4
1464
-
1465
- =item ev_signal_init (ev_signal *, callback, int signum)
1466
-
1467
- =item ev_signal_set (ev_signal *, int signum)
1468
-
1469
- Configures the watcher to trigger on the given signal number (usually one
1470
- of the C<SIGxxx> constants).
1471
-
1472
- =item int signum [read-only]
1473
-
1474
- The signal the watcher watches out for.
1475
-
1476
- =back
1477
-
1478
- =head3 Examples
1479
-
1480
- Example: Try to exit cleanly on SIGINT and SIGTERM.
1481
-
1482
- static void
1483
- sigint_cb (struct ev_loop *loop, struct ev_signal *w, int revents)
1484
- {
1485
- ev_unloop (loop, EVUNLOOP_ALL);
1486
- }
1487
-
1488
- struct ev_signal signal_watcher;
1489
- ev_signal_init (&signal_watcher, sigint_cb, SIGINT);
1490
- ev_signal_start (loop, &sigint_cb);
1491
-
1492
-
1493
- =head2 C<ev_child> - watch out for process status changes
1494
-
1495
- Child watchers trigger when your process receives a SIGCHLD in response to
1496
- some child status changes (most typically when a child of yours dies). It
1497
- is permissible to install a child watcher I<after> the child has been
1498
- forked (which implies it might have already exited), as long as the event
1499
- loop isn't entered (or is continued from a watcher).
1500
-
1501
- Only the default event loop is capable of handling signals, and therefore
1502
- you can only rgeister child watchers in the default event loop.
1503
-
1504
- =head3 Process Interaction
1505
-
1506
- Libev grabs C<SIGCHLD> as soon as the default event loop is
1507
- initialised. This is necessary to guarantee proper behaviour even if
1508
- the first child watcher is started after the child exits. The occurance
1509
- of C<SIGCHLD> is recorded asynchronously, but child reaping is done
1510
- synchronously as part of the event loop processing. Libev always reaps all
1511
- children, even ones not watched.
1512
-
1513
- =head3 Overriding the Built-In Processing
1514
-
1515
- Libev offers no special support for overriding the built-in child
1516
- processing, but if your application collides with libev's default child
1517
- handler, you can override it easily by installing your own handler for
1518
- C<SIGCHLD> after initialising the default loop, and making sure the
1519
- default loop never gets destroyed. You are encouraged, however, to use an
1520
- event-based approach to child reaping and thus use libev's support for
1521
- that, so other libev users can use C<ev_child> watchers freely.
1522
-
1523
- =head3 Watcher-Specific Functions and Data Members
1524
-
1525
- =over 4
1526
-
1527
- =item ev_child_init (ev_child *, callback, int pid, int trace)
1528
-
1529
- =item ev_child_set (ev_child *, int pid, int trace)
1530
-
1531
- Configures the watcher to wait for status changes of process C<pid> (or
1532
- I<any> process if C<pid> is specified as C<0>). The callback can look
1533
- at the C<rstatus> member of the C<ev_child> watcher structure to see
1534
- the status word (use the macros from C<sys/wait.h> and see your systems
1535
- C<waitpid> documentation). The C<rpid> member contains the pid of the
1536
- process causing the status change. C<trace> must be either C<0> (only
1537
- activate the watcher when the process terminates) or C<1> (additionally
1538
- activate the watcher when the process is stopped or continued).
1539
-
1540
- =item int pid [read-only]
1541
-
1542
- The process id this watcher watches out for, or C<0>, meaning any process id.
1543
-
1544
- =item int rpid [read-write]
1545
-
1546
- The process id that detected a status change.
1547
-
1548
- =item int rstatus [read-write]
1549
-
1550
- The process exit/trace status caused by C<rpid> (see your systems
1551
- C<waitpid> and C<sys/wait.h> documentation for details).
1552
-
1553
- =back
1554
-
1555
- =head3 Examples
1556
-
1557
- Example: C<fork()> a new process and install a child handler to wait for
1558
- its completion.
1559
-
1560
- ev_child cw;
1561
-
1562
- static void
1563
- child_cb (EV_P_ struct ev_child *w, int revents)
1564
- {
1565
- ev_child_stop (EV_A_ w);
1566
- printf ("process %d exited with status %x\n", w->rpid, w->rstatus);
1567
- }
1568
-
1569
- pid_t pid = fork ();
1570
-
1571
- if (pid < 0)
1572
- // error
1573
- else if (pid == 0)
1574
- {
1575
- // the forked child executes here
1576
- exit (1);
1577
- }
1578
- else
1579
- {
1580
- ev_child_init (&cw, child_cb, pid, 0);
1581
- ev_child_start (EV_DEFAULT_ &cw);
1582
- }
1583
-
1584
-
1585
- =head2 C<ev_stat> - did the file attributes just change?
1586
-
1587
- This watches a filesystem path for attribute changes. That is, it calls
1588
- C<stat> regularly (or when the OS says it changed) and sees if it changed
1589
- compared to the last time, invoking the callback if it did.
1590
-
1591
- The path does not need to exist: changing from "path exists" to "path does
1592
- not exist" is a status change like any other. The condition "path does
1593
- not exist" is signified by the C<st_nlink> field being zero (which is
1594
- otherwise always forced to be at least one) and all the other fields of
1595
- the stat buffer having unspecified contents.
1596
-
1597
- The path I<should> be absolute and I<must not> end in a slash. If it is
1598
- relative and your working directory changes, the behaviour is undefined.
1599
-
1600
- Since there is no standard to do this, the portable implementation simply
1601
- calls C<stat (2)> regularly on the path to see if it changed somehow. You
1602
- can specify a recommended polling interval for this case. If you specify
1603
- a polling interval of C<0> (highly recommended!) then a I<suitable,
1604
- unspecified default> value will be used (which you can expect to be around
1605
- five seconds, although this might change dynamically). Libev will also
1606
- impose a minimum interval which is currently around C<0.1>, but thats
1607
- usually overkill.
1608
-
1609
- This watcher type is not meant for massive numbers of stat watchers,
1610
- as even with OS-supported change notifications, this can be
1611
- resource-intensive.
1612
-
1613
- At the time of this writing, only the Linux inotify interface is
1614
- implemented (implementing kqueue support is left as an exercise for the
1615
- reader). Inotify will be used to give hints only and should not change the
1616
- semantics of C<ev_stat> watchers, which means that libev sometimes needs
1617
- to fall back to regular polling again even with inotify, but changes are
1618
- usually detected immediately, and if the file exists there will be no
1619
- polling.
1620
-
1621
- =head3 ABI Issues (Largefile Support)
1622
-
1623
- Libev by default (unless the user overrides this) uses the default
1624
- compilation environment, which means that on systems with optionally
1625
- disabled large file support, you get the 32 bit version of the stat
1626
- structure. When using the library from programs that change the ABI to
1627
- use 64 bit file offsets the programs will fail. In that case you have to
1628
- compile libev with the same flags to get binary compatibility. This is
1629
- obviously the case with any flags that change the ABI, but the problem is
1630
- most noticably with ev_stat and largefile support.
1631
-
1632
- =head3 Inotify
1633
-
1634
- When C<inotify (7)> support has been compiled into libev (generally only
1635
- available on Linux) and present at runtime, it will be used to speed up
1636
- change detection where possible. The inotify descriptor will be created lazily
1637
- when the first C<ev_stat> watcher is being started.
1638
-
1639
- Inotify presense does not change the semantics of C<ev_stat> watchers
1640
- except that changes might be detected earlier, and in some cases, to avoid
1641
- making regular C<stat> calls. Even in the presense of inotify support
1642
- there are many cases where libev has to resort to regular C<stat> polling.
1643
-
1644
- (There is no support for kqueue, as apparently it cannot be used to
1645
- implement this functionality, due to the requirement of having a file
1646
- descriptor open on the object at all times).
1647
-
1648
- =head3 The special problem of stat time resolution
1649
-
1650
- The C<stat ()> syscall only supports full-second resolution portably, and
1651
- even on systems where the resolution is higher, many filesystems still
1652
- only support whole seconds.
1653
-
1654
- That means that, if the time is the only thing that changes, you might
1655
- miss updates: on the first update, C<ev_stat> detects a change and calls
1656
- your callback, which does something. When there is another update within
1657
- the same second, C<ev_stat> will be unable to detect it.
1658
-
1659
- The solution to this is to delay acting on a change for a second (or till
1660
- the next second boundary), using a roughly one-second delay C<ev_timer>
1661
- (C<ev_timer_set (w, 0., 1.01); ev_timer_again (loop, w)>). The C<.01>
1662
- is added to work around small timing inconsistencies of some operating
1663
- systems.
1664
-
1665
- =head3 Watcher-Specific Functions and Data Members
1666
-
1667
- =over 4
1668
-
1669
- =item ev_stat_init (ev_stat *, callback, const char *path, ev_tstamp interval)
1670
-
1671
- =item ev_stat_set (ev_stat *, const char *path, ev_tstamp interval)
1672
-
1673
- Configures the watcher to wait for status changes of the given
1674
- C<path>. The C<interval> is a hint on how quickly a change is expected to
1675
- be detected and should normally be specified as C<0> to let libev choose
1676
- a suitable value. The memory pointed to by C<path> must point to the same
1677
- path for as long as the watcher is active.
1678
-
1679
- The callback will be receive C<EV_STAT> when a change was detected,
1680
- relative to the attributes at the time the watcher was started (or the
1681
- last change was detected).
1682
-
1683
- =item ev_stat_stat (loop, ev_stat *)
1684
-
1685
- Updates the stat buffer immediately with new values. If you change the
1686
- watched path in your callback, you could call this fucntion to avoid
1687
- detecting this change (while introducing a race condition). Can also be
1688
- useful simply to find out the new values.
1689
-
1690
- =item ev_statdata attr [read-only]
1691
-
1692
- The most-recently detected attributes of the file. Although the type is of
1693
- C<ev_statdata>, this is usually the (or one of the) C<struct stat> types
1694
- suitable for your system. If the C<st_nlink> member is C<0>, then there
1695
- was some error while C<stat>ing the file.
1696
-
1697
- =item ev_statdata prev [read-only]
1698
-
1699
- The previous attributes of the file. The callback gets invoked whenever
1700
- C<prev> != C<attr>.
1701
-
1702
- =item ev_tstamp interval [read-only]
1703
-
1704
- The specified interval.
1705
-
1706
- =item const char *path [read-only]
1707
-
1708
- The filesystem path that is being watched.
1709
-
1710
- =back
1711
-
1712
- =head3 Examples
1713
-
1714
- Example: Watch C</etc/passwd> for attribute changes.
1715
-
1716
- static void
1717
- passwd_cb (struct ev_loop *loop, ev_stat *w, int revents)
1718
- {
1719
- /* /etc/passwd changed in some way */
1720
- if (w->attr.st_nlink)
1721
- {
1722
- printf ("passwd current size %ld\n", (long)w->attr.st_size);
1723
- printf ("passwd current atime %ld\n", (long)w->attr.st_mtime);
1724
- printf ("passwd current mtime %ld\n", (long)w->attr.st_mtime);
1725
- }
1726
- else
1727
- /* you shalt not abuse printf for puts */
1728
- puts ("wow, /etc/passwd is not there, expect problems. "
1729
- "if this is windows, they already arrived\n");
1730
- }
1731
-
1732
- ...
1733
- ev_stat passwd;
1734
-
1735
- ev_stat_init (&passwd, passwd_cb, "/etc/passwd", 0.);
1736
- ev_stat_start (loop, &passwd);
1737
-
1738
- Example: Like above, but additionally use a one-second delay so we do not
1739
- miss updates (however, frequent updates will delay processing, too, so
1740
- one might do the work both on C<ev_stat> callback invocation I<and> on
1741
- C<ev_timer> callback invocation).
1742
-
1743
- static ev_stat passwd;
1744
- static ev_timer timer;
1745
-
1746
- static void
1747
- timer_cb (EV_P_ ev_timer *w, int revents)
1748
- {
1749
- ev_timer_stop (EV_A_ w);
1750
-
1751
- /* now it's one second after the most recent passwd change */
1752
- }
1753
-
1754
- static void
1755
- stat_cb (EV_P_ ev_stat *w, int revents)
1756
- {
1757
- /* reset the one-second timer */
1758
- ev_timer_again (EV_A_ &timer);
1759
- }
1760
-
1761
- ...
1762
- ev_stat_init (&passwd, stat_cb, "/etc/passwd", 0.);
1763
- ev_stat_start (loop, &passwd);
1764
- ev_timer_init (&timer, timer_cb, 0., 1.01);
1765
-
1766
-
1767
- =head2 C<ev_idle> - when you've got nothing better to do...
1768
-
1769
- Idle watchers trigger events when no other events of the same or higher
1770
- priority are pending (prepare, check and other idle watchers do not
1771
- count).
1772
-
1773
- That is, as long as your process is busy handling sockets or timeouts
1774
- (or even signals, imagine) of the same or higher priority it will not be
1775
- triggered. But when your process is idle (or only lower-priority watchers
1776
- are pending), the idle watchers are being called once per event loop
1777
- iteration - until stopped, that is, or your process receives more events
1778
- and becomes busy again with higher priority stuff.
1779
-
1780
- The most noteworthy effect is that as long as any idle watchers are
1781
- active, the process will not block when waiting for new events.
1782
-
1783
- Apart from keeping your process non-blocking (which is a useful
1784
- effect on its own sometimes), idle watchers are a good place to do
1785
- "pseudo-background processing", or delay processing stuff to after the
1786
- event loop has handled all outstanding events.
1787
-
1788
- =head3 Watcher-Specific Functions and Data Members
1789
-
1790
- =over 4
1791
-
1792
- =item ev_idle_init (ev_signal *, callback)
1793
-
1794
- Initialises and configures the idle watcher - it has no parameters of any
1795
- kind. There is a C<ev_idle_set> macro, but using it is utterly pointless,
1796
- believe me.
1797
-
1798
- =back
1799
-
1800
- =head3 Examples
1801
-
1802
- Example: Dynamically allocate an C<ev_idle> watcher, start it, and in the
1803
- callback, free it. Also, use no error checking, as usual.
1804
-
1805
- static void
1806
- idle_cb (struct ev_loop *loop, struct ev_idle *w, int revents)
1807
- {
1808
- free (w);
1809
- // now do something you wanted to do when the program has
1810
- // no longer anything immediate to do.
1811
- }
1812
-
1813
- struct ev_idle *idle_watcher = malloc (sizeof (struct ev_idle));
1814
- ev_idle_init (idle_watcher, idle_cb);
1815
- ev_idle_start (loop, idle_cb);
1816
-
1817
-
1818
- =head2 C<ev_prepare> and C<ev_check> - customise your event loop!
1819
-
1820
- Prepare and check watchers are usually (but not always) used in tandem:
1821
- prepare watchers get invoked before the process blocks and check watchers
1822
- afterwards.
1823
-
1824
- You I<must not> call C<ev_loop> or similar functions that enter
1825
- the current event loop from either C<ev_prepare> or C<ev_check>
1826
- watchers. Other loops than the current one are fine, however. The
1827
- rationale behind this is that you do not need to check for recursion in
1828
- those watchers, i.e. the sequence will always be C<ev_prepare>, blocking,
1829
- C<ev_check> so if you have one watcher of each kind they will always be
1830
- called in pairs bracketing the blocking call.
1831
-
1832
- Their main purpose is to integrate other event mechanisms into libev and
1833
- their use is somewhat advanced. This could be used, for example, to track
1834
- variable changes, implement your own watchers, integrate net-snmp or a
1835
- coroutine library and lots more. They are also occasionally useful if
1836
- you cache some data and want to flush it before blocking (for example,
1837
- in X programs you might want to do an C<XFlush ()> in an C<ev_prepare>
1838
- watcher).
1839
-
1840
- This is done by examining in each prepare call which file descriptors need
1841
- to be watched by the other library, registering C<ev_io> watchers for
1842
- them and starting an C<ev_timer> watcher for any timeouts (many libraries
1843
- provide just this functionality). Then, in the check watcher you check for
1844
- any events that occured (by checking the pending status of all watchers
1845
- and stopping them) and call back into the library. The I/O and timer
1846
- callbacks will never actually be called (but must be valid nevertheless,
1847
- because you never know, you know?).
1848
-
1849
- As another example, the Perl Coro module uses these hooks to integrate
1850
- coroutines into libev programs, by yielding to other active coroutines
1851
- during each prepare and only letting the process block if no coroutines
1852
- are ready to run (it's actually more complicated: it only runs coroutines
1853
- with priority higher than or equal to the event loop and one coroutine
1854
- of lower priority, but only once, using idle watchers to keep the event
1855
- loop from blocking if lower-priority coroutines are active, thus mapping
1856
- low-priority coroutines to idle/background tasks).
1857
-
1858
- It is recommended to give C<ev_check> watchers highest (C<EV_MAXPRI>)
1859
- priority, to ensure that they are being run before any other watchers
1860
- after the poll. Also, C<ev_check> watchers (and C<ev_prepare> watchers,
1861
- too) should not activate ("feed") events into libev. While libev fully
1862
- supports this, they will be called before other C<ev_check> watchers
1863
- did their job. As C<ev_check> watchers are often used to embed other
1864
- (non-libev) event loops those other event loops might be in an unusable
1865
- state until their C<ev_check> watcher ran (always remind yourself to
1866
- coexist peacefully with others).
1867
-
1868
- =head3 Watcher-Specific Functions and Data Members
1869
-
1870
- =over 4
1871
-
1872
- =item ev_prepare_init (ev_prepare *, callback)
1873
-
1874
- =item ev_check_init (ev_check *, callback)
1875
-
1876
- Initialises and configures the prepare or check watcher - they have no
1877
- parameters of any kind. There are C<ev_prepare_set> and C<ev_check_set>
1878
- macros, but using them is utterly, utterly and completely pointless.
1879
-
1880
- =back
1881
-
1882
- =head3 Examples
1883
-
1884
- There are a number of principal ways to embed other event loops or modules
1885
- into libev. Here are some ideas on how to include libadns into libev
1886
- (there is a Perl module named C<EV::ADNS> that does this, which you could
1887
- use for an actually working example. Another Perl module named C<EV::Glib>
1888
- embeds a Glib main context into libev, and finally, C<Glib::EV> embeds EV
1889
- into the Glib event loop).
1890
-
1891
- Method 1: Add IO watchers and a timeout watcher in a prepare handler,
1892
- and in a check watcher, destroy them and call into libadns. What follows
1893
- is pseudo-code only of course. This requires you to either use a low
1894
- priority for the check watcher or use C<ev_clear_pending> explicitly, as
1895
- the callbacks for the IO/timeout watchers might not have been called yet.
1896
-
1897
- static ev_io iow [nfd];
1898
- static ev_timer tw;
1899
-
1900
- static void
1901
- io_cb (ev_loop *loop, ev_io *w, int revents)
1902
- {
1903
- }
1904
-
1905
- // create io watchers for each fd and a timer before blocking
1906
- static void
1907
- adns_prepare_cb (ev_loop *loop, ev_prepare *w, int revents)
1908
- {
1909
- int timeout = 3600000;
1910
- struct pollfd fds [nfd];
1911
- // actual code will need to loop here and realloc etc.
1912
- adns_beforepoll (ads, fds, &nfd, &timeout, timeval_from (ev_time ()));
1913
-
1914
- /* the callback is illegal, but won't be called as we stop during check */
1915
- ev_timer_init (&tw, 0, timeout * 1e-3);
1916
- ev_timer_start (loop, &tw);
1917
-
1918
- // create one ev_io per pollfd
1919
- for (int i = 0; i < nfd; ++i)
1920
- {
1921
- ev_io_init (iow + i, io_cb, fds [i].fd,
1922
- ((fds [i].events & POLLIN ? EV_READ : 0)
1923
- | (fds [i].events & POLLOUT ? EV_WRITE : 0)));
1924
-
1925
- fds [i].revents = 0;
1926
- ev_io_start (loop, iow + i);
1927
- }
1928
- }
1929
-
1930
- // stop all watchers after blocking
1931
- static void
1932
- adns_check_cb (ev_loop *loop, ev_check *w, int revents)
1933
- {
1934
- ev_timer_stop (loop, &tw);
1935
-
1936
- for (int i = 0; i < nfd; ++i)
1937
- {
1938
- // set the relevant poll flags
1939
- // could also call adns_processreadable etc. here
1940
- struct pollfd *fd = fds + i;
1941
- int revents = ev_clear_pending (iow + i);
1942
- if (revents & EV_READ ) fd->revents |= fd->events & POLLIN;
1943
- if (revents & EV_WRITE) fd->revents |= fd->events & POLLOUT;
1944
-
1945
- // now stop the watcher
1946
- ev_io_stop (loop, iow + i);
1947
- }
1948
-
1949
- adns_afterpoll (adns, fds, nfd, timeval_from (ev_now (loop));
1950
- }
1951
-
1952
- Method 2: This would be just like method 1, but you run C<adns_afterpoll>
1953
- in the prepare watcher and would dispose of the check watcher.
1954
-
1955
- Method 3: If the module to be embedded supports explicit event
1956
- notification (adns does), you can also make use of the actual watcher
1957
- callbacks, and only destroy/create the watchers in the prepare watcher.
1958
-
1959
- static void
1960
- timer_cb (EV_P_ ev_timer *w, int revents)
1961
- {
1962
- adns_state ads = (adns_state)w->data;
1963
- update_now (EV_A);
1964
-
1965
- adns_processtimeouts (ads, &tv_now);
1966
- }
1967
-
1968
- static void
1969
- io_cb (EV_P_ ev_io *w, int revents)
1970
- {
1971
- adns_state ads = (adns_state)w->data;
1972
- update_now (EV_A);
1973
-
1974
- if (revents & EV_READ ) adns_processreadable (ads, w->fd, &tv_now);
1975
- if (revents & EV_WRITE) adns_processwriteable (ads, w->fd, &tv_now);
1976
- }
1977
-
1978
- // do not ever call adns_afterpoll
1979
-
1980
- Method 4: Do not use a prepare or check watcher because the module you
1981
- want to embed is too inflexible to support it. Instead, youc na override
1982
- their poll function. The drawback with this solution is that the main
1983
- loop is now no longer controllable by EV. The C<Glib::EV> module does
1984
- this.
1985
-
1986
- static gint
1987
- event_poll_func (GPollFD *fds, guint nfds, gint timeout)
1988
- {
1989
- int got_events = 0;
1990
-
1991
- for (n = 0; n < nfds; ++n)
1992
- // create/start io watcher that sets the relevant bits in fds[n] and increment got_events
1993
-
1994
- if (timeout >= 0)
1995
- // create/start timer
1996
-
1997
- // poll
1998
- ev_loop (EV_A_ 0);
1999
-
2000
- // stop timer again
2001
- if (timeout >= 0)
2002
- ev_timer_stop (EV_A_ &to);
2003
-
2004
- // stop io watchers again - their callbacks should have set
2005
- for (n = 0; n < nfds; ++n)
2006
- ev_io_stop (EV_A_ iow [n]);
2007
-
2008
- return got_events;
2009
- }
2010
-
2011
-
2012
- =head2 C<ev_embed> - when one backend isn't enough...
2013
-
2014
- This is a rather advanced watcher type that lets you embed one event loop
2015
- into another (currently only C<ev_io> events are supported in the embedded
2016
- loop, other types of watchers might be handled in a delayed or incorrect
2017
- fashion and must not be used).
2018
-
2019
- There are primarily two reasons you would want that: work around bugs and
2020
- prioritise I/O.
2021
-
2022
- As an example for a bug workaround, the kqueue backend might only support
2023
- sockets on some platform, so it is unusable as generic backend, but you
2024
- still want to make use of it because you have many sockets and it scales
2025
- so nicely. In this case, you would create a kqueue-based loop and embed it
2026
- into your default loop (which might use e.g. poll). Overall operation will
2027
- be a bit slower because first libev has to poll and then call kevent, but
2028
- at least you can use both at what they are best.
2029
-
2030
- As for prioritising I/O: rarely you have the case where some fds have
2031
- to be watched and handled very quickly (with low latency), and even
2032
- priorities and idle watchers might have too much overhead. In this case
2033
- you would put all the high priority stuff in one loop and all the rest in
2034
- a second one, and embed the second one in the first.
2035
-
2036
- As long as the watcher is active, the callback will be invoked every time
2037
- there might be events pending in the embedded loop. The callback must then
2038
- call C<ev_embed_sweep (mainloop, watcher)> to make a single sweep and invoke
2039
- their callbacks (you could also start an idle watcher to give the embedded
2040
- loop strictly lower priority for example). You can also set the callback
2041
- to C<0>, in which case the embed watcher will automatically execute the
2042
- embedded loop sweep.
2043
-
2044
- As long as the watcher is started it will automatically handle events. The
2045
- callback will be invoked whenever some events have been handled. You can
2046
- set the callback to C<0> to avoid having to specify one if you are not
2047
- interested in that.
2048
-
2049
- Also, there have not currently been made special provisions for forking:
2050
- when you fork, you not only have to call C<ev_loop_fork> on both loops,
2051
- but you will also have to stop and restart any C<ev_embed> watchers
2052
- yourself.
2053
-
2054
- Unfortunately, not all backends are embeddable, only the ones returned by
2055
- C<ev_embeddable_backends> are, which, unfortunately, does not include any
2056
- portable one.
2057
-
2058
- So when you want to use this feature you will always have to be prepared
2059
- that you cannot get an embeddable loop. The recommended way to get around
2060
- this is to have a separate variables for your embeddable loop, try to
2061
- create it, and if that fails, use the normal loop for everything.
2062
-
2063
- =head3 Watcher-Specific Functions and Data Members
2064
-
2065
- =over 4
2066
-
2067
- =item ev_embed_init (ev_embed *, callback, struct ev_loop *embedded_loop)
2068
-
2069
- =item ev_embed_set (ev_embed *, callback, struct ev_loop *embedded_loop)
2070
-
2071
- Configures the watcher to embed the given loop, which must be
2072
- embeddable. If the callback is C<0>, then C<ev_embed_sweep> will be
2073
- invoked automatically, otherwise it is the responsibility of the callback
2074
- to invoke it (it will continue to be called until the sweep has been done,
2075
- if you do not want thta, you need to temporarily stop the embed watcher).
2076
-
2077
- =item ev_embed_sweep (loop, ev_embed *)
2078
-
2079
- Make a single, non-blocking sweep over the embedded loop. This works
2080
- similarly to C<ev_loop (embedded_loop, EVLOOP_NONBLOCK)>, but in the most
2081
- apropriate way for embedded loops.
2082
-
2083
- =item struct ev_loop *other [read-only]
2084
-
2085
- The embedded event loop.
2086
-
2087
- =back
2088
-
2089
- =head3 Examples
2090
-
2091
- Example: Try to get an embeddable event loop and embed it into the default
2092
- event loop. If that is not possible, use the default loop. The default
2093
- loop is stored in C<loop_hi>, while the mebeddable loop is stored in
2094
- C<loop_lo> (which is C<loop_hi> in the acse no embeddable loop can be
2095
- used).
2096
-
2097
- struct ev_loop *loop_hi = ev_default_init (0);
2098
- struct ev_loop *loop_lo = 0;
2099
- struct ev_embed embed;
2100
-
2101
- // see if there is a chance of getting one that works
2102
- // (remember that a flags value of 0 means autodetection)
2103
- loop_lo = ev_embeddable_backends () & ev_recommended_backends ()
2104
- ? ev_loop_new (ev_embeddable_backends () & ev_recommended_backends ())
2105
- : 0;
2106
-
2107
- // if we got one, then embed it, otherwise default to loop_hi
2108
- if (loop_lo)
2109
- {
2110
- ev_embed_init (&embed, 0, loop_lo);
2111
- ev_embed_start (loop_hi, &embed);
2112
- }
2113
- else
2114
- loop_lo = loop_hi;
2115
-
2116
- Example: Check if kqueue is available but not recommended and create
2117
- a kqueue backend for use with sockets (which usually work with any
2118
- kqueue implementation). Store the kqueue/socket-only event loop in
2119
- C<loop_socket>. (One might optionally use C<EVFLAG_NOENV>, too).
2120
-
2121
- struct ev_loop *loop = ev_default_init (0);
2122
- struct ev_loop *loop_socket = 0;
2123
- struct ev_embed embed;
2124
-
2125
- if (ev_supported_backends () & ~ev_recommended_backends () & EVBACKEND_KQUEUE)
2126
- if ((loop_socket = ev_loop_new (EVBACKEND_KQUEUE))
2127
- {
2128
- ev_embed_init (&embed, 0, loop_socket);
2129
- ev_embed_start (loop, &embed);
2130
- }
2131
-
2132
- if (!loop_socket)
2133
- loop_socket = loop;
2134
-
2135
- // now use loop_socket for all sockets, and loop for everything else
2136
-
2137
-
2138
- =head2 C<ev_fork> - the audacity to resume the event loop after a fork
2139
-
2140
- Fork watchers are called when a C<fork ()> was detected (usually because
2141
- whoever is a good citizen cared to tell libev about it by calling
2142
- C<ev_default_fork> or C<ev_loop_fork>). The invocation is done before the
2143
- event loop blocks next and before C<ev_check> watchers are being called,
2144
- and only in the child after the fork. If whoever good citizen calling
2145
- C<ev_default_fork> cheats and calls it in the wrong process, the fork
2146
- handlers will be invoked, too, of course.
2147
-
2148
- =head3 Watcher-Specific Functions and Data Members
2149
-
2150
- =over 4
2151
-
2152
- =item ev_fork_init (ev_signal *, callback)
2153
-
2154
- Initialises and configures the fork watcher - it has no parameters of any
2155
- kind. There is a C<ev_fork_set> macro, but using it is utterly pointless,
2156
- believe me.
2157
-
2158
- =back
2159
-
2160
-
2161
- =head2 C<ev_async> - how to wake up another event loop
2162
-
2163
- In general, you cannot use an C<ev_loop> from multiple threads or other
2164
- asynchronous sources such as signal handlers (as opposed to multiple event
2165
- loops - those are of course safe to use in different threads).
2166
-
2167
- Sometimes, however, you need to wake up another event loop you do not
2168
- control, for example because it belongs to another thread. This is what
2169
- C<ev_async> watchers do: as long as the C<ev_async> watcher is active, you
2170
- can signal it by calling C<ev_async_send>, which is thread- and signal
2171
- safe.
2172
-
2173
- This functionality is very similar to C<ev_signal> watchers, as signals,
2174
- too, are asynchronous in nature, and signals, too, will be compressed
2175
- (i.e. the number of callback invocations may be less than the number of
2176
- C<ev_async_sent> calls).
2177
-
2178
- Unlike C<ev_signal> watchers, C<ev_async> works with any event loop, not
2179
- just the default loop.
2180
-
2181
- =head3 Queueing
2182
-
2183
- C<ev_async> does not support queueing of data in any way. The reason
2184
- is that the author does not know of a simple (or any) algorithm for a
2185
- multiple-writer-single-reader queue that works in all cases and doesn't
2186
- need elaborate support such as pthreads.
2187
-
2188
- That means that if you want to queue data, you have to provide your own
2189
- queue. But at least I can tell you would implement locking around your
2190
- queue:
2191
-
2192
- =over 4
2193
-
2194
- =item queueing from a signal handler context
2195
-
2196
- To implement race-free queueing, you simply add to the queue in the signal
2197
- handler but you block the signal handler in the watcher callback. Here is an example that does that for
2198
- some fictitiuous SIGUSR1 handler:
2199
-
2200
- static ev_async mysig;
2201
-
2202
- static void
2203
- sigusr1_handler (void)
2204
- {
2205
- sometype data;
2206
-
2207
- // no locking etc.
2208
- queue_put (data);
2209
- ev_async_send (EV_DEFAULT_ &mysig);
2210
- }
2211
-
2212
- static void
2213
- mysig_cb (EV_P_ ev_async *w, int revents)
2214
- {
2215
- sometype data;
2216
- sigset_t block, prev;
2217
-
2218
- sigemptyset (&block);
2219
- sigaddset (&block, SIGUSR1);
2220
- sigprocmask (SIG_BLOCK, &block, &prev);
2221
-
2222
- while (queue_get (&data))
2223
- process (data);
2224
-
2225
- if (sigismember (&prev, SIGUSR1)
2226
- sigprocmask (SIG_UNBLOCK, &block, 0);
2227
- }
2228
-
2229
- (Note: pthreads in theory requires you to use C<pthread_setmask>
2230
- instead of C<sigprocmask> when you use threads, but libev doesn't do it
2231
- either...).
2232
-
2233
- =item queueing from a thread context
2234
-
2235
- The strategy for threads is different, as you cannot (easily) block
2236
- threads but you can easily preempt them, so to queue safely you need to
2237
- employ a traditional mutex lock, such as in this pthread example:
2238
-
2239
- static ev_async mysig;
2240
- static pthread_mutex_t mymutex = PTHREAD_MUTEX_INITIALIZER;
2241
-
2242
- static void
2243
- otherthread (void)
2244
- {
2245
- // only need to lock the actual queueing operation
2246
- pthread_mutex_lock (&mymutex);
2247
- queue_put (data);
2248
- pthread_mutex_unlock (&mymutex);
2249
-
2250
- ev_async_send (EV_DEFAULT_ &mysig);
2251
- }
2252
-
2253
- static void
2254
- mysig_cb (EV_P_ ev_async *w, int revents)
2255
- {
2256
- pthread_mutex_lock (&mymutex);
2257
-
2258
- while (queue_get (&data))
2259
- process (data);
2260
-
2261
- pthread_mutex_unlock (&mymutex);
2262
- }
2263
-
2264
- =back
2265
-
2266
-
2267
- =head3 Watcher-Specific Functions and Data Members
2268
-
2269
- =over 4
2270
-
2271
- =item ev_async_init (ev_async *, callback)
2272
-
2273
- Initialises and configures the async watcher - it has no parameters of any
2274
- kind. There is a C<ev_asynd_set> macro, but using it is utterly pointless,
2275
- believe me.
2276
-
2277
- =item ev_async_send (loop, ev_async *)
2278
-
2279
- Sends/signals/activates the given C<ev_async> watcher, that is, feeds
2280
- an C<EV_ASYNC> event on the watcher into the event loop. Unlike
2281
- C<ev_feed_event>, this call is safe to do in other threads, signal or
2282
- similar contexts (see the dicusssion of C<EV_ATOMIC_T> in the embedding
2283
- section below on what exactly this means).
2284
-
2285
- This call incurs the overhead of a syscall only once per loop iteration,
2286
- so while the overhead might be noticable, it doesn't apply to repeated
2287
- calls to C<ev_async_send>.
2288
-
2289
- =item bool = ev_async_pending (ev_async *)
2290
-
2291
- Returns a non-zero value when C<ev_async_send> has been called on the
2292
- watcher but the event has not yet been processed (or even noted) by the
2293
- event loop.
2294
-
2295
- C<ev_async_send> sets a flag in the watcher and wakes up the loop. When
2296
- the loop iterates next and checks for the watcher to have become active,
2297
- it will reset the flag again. C<ev_async_pending> can be used to very
2298
- quickly check wether invoking the loop might be a good idea.
2299
-
2300
- Not that this does I<not> check wether the watcher itself is pending, only
2301
- wether it has been requested to make this watcher pending.
2302
-
2303
- =back
2304
-
2305
-
2306
- =head1 OTHER FUNCTIONS
2307
-
2308
- There are some other functions of possible interest. Described. Here. Now.
2309
-
2310
- =over 4
2311
-
2312
- =item ev_once (loop, int fd, int events, ev_tstamp timeout, callback)
2313
-
2314
- This function combines a simple timer and an I/O watcher, calls your
2315
- callback on whichever event happens first and automatically stop both
2316
- watchers. This is useful if you want to wait for a single event on an fd
2317
- or timeout without having to allocate/configure/start/stop/free one or
2318
- more watchers yourself.
2319
-
2320
- If C<fd> is less than 0, then no I/O watcher will be started and events
2321
- is being ignored. Otherwise, an C<ev_io> watcher for the given C<fd> and
2322
- C<events> set will be craeted and started.
2323
-
2324
- If C<timeout> is less than 0, then no timeout watcher will be
2325
- started. Otherwise an C<ev_timer> watcher with after = C<timeout> (and
2326
- repeat = 0) will be started. While C<0> is a valid timeout, it is of
2327
- dubious value.
2328
-
2329
- The callback has the type C<void (*cb)(int revents, void *arg)> and gets
2330
- passed an C<revents> set like normal event callbacks (a combination of
2331
- C<EV_ERROR>, C<EV_READ>, C<EV_WRITE> or C<EV_TIMEOUT>) and the C<arg>
2332
- value passed to C<ev_once>:
2333
-
2334
- static void stdin_ready (int revents, void *arg)
2335
- {
2336
- if (revents & EV_TIMEOUT)
2337
- /* doh, nothing entered */;
2338
- else if (revents & EV_READ)
2339
- /* stdin might have data for us, joy! */;
2340
- }
2341
-
2342
- ev_once (STDIN_FILENO, EV_READ, 10., stdin_ready, 0);
2343
-
2344
- =item ev_feed_event (ev_loop *, watcher *, int revents)
2345
-
2346
- Feeds the given event set into the event loop, as if the specified event
2347
- had happened for the specified watcher (which must be a pointer to an
2348
- initialised but not necessarily started event watcher).
2349
-
2350
- =item ev_feed_fd_event (ev_loop *, int fd, int revents)
2351
-
2352
- Feed an event on the given fd, as if a file descriptor backend detected
2353
- the given events it.
2354
-
2355
- =item ev_feed_signal_event (ev_loop *loop, int signum)
2356
-
2357
- Feed an event as if the given signal occured (C<loop> must be the default
2358
- loop!).
2359
-
2360
- =back
2361
-
2362
-
2363
- =head1 LIBEVENT EMULATION
2364
-
2365
- Libev offers a compatibility emulation layer for libevent. It cannot
2366
- emulate the internals of libevent, so here are some usage hints:
2367
-
2368
- =over 4
2369
-
2370
- =item * Use it by including <event.h>, as usual.
2371
-
2372
- =item * The following members are fully supported: ev_base, ev_callback,
2373
- ev_arg, ev_fd, ev_res, ev_events.
2374
-
2375
- =item * Avoid using ev_flags and the EVLIST_*-macros, while it is
2376
- maintained by libev, it does not work exactly the same way as in libevent (consider
2377
- it a private API).
2378
-
2379
- =item * Priorities are not currently supported. Initialising priorities
2380
- will fail and all watchers will have the same priority, even though there
2381
- is an ev_pri field.
2382
-
2383
- =item * In libevent, the last base created gets the signals, in libev, the
2384
- first base created (== the default loop) gets the signals.
2385
-
2386
- =item * Other members are not supported.
2387
-
2388
- =item * The libev emulation is I<not> ABI compatible to libevent, you need
2389
- to use the libev header file and library.
2390
-
2391
- =back
2392
-
2393
- =head1 C++ SUPPORT
2394
-
2395
- Libev comes with some simplistic wrapper classes for C++ that mainly allow
2396
- you to use some convinience methods to start/stop watchers and also change
2397
- the callback model to a model using method callbacks on objects.
2398
-
2399
- To use it,
2400
-
2401
- #include <ev++.h>
2402
-
2403
- This automatically includes F<ev.h> and puts all of its definitions (many
2404
- of them macros) into the global namespace. All C++ specific things are
2405
- put into the C<ev> namespace. It should support all the same embedding
2406
- options as F<ev.h>, most notably C<EV_MULTIPLICITY>.
2407
-
2408
- Care has been taken to keep the overhead low. The only data member the C++
2409
- classes add (compared to plain C-style watchers) is the event loop pointer
2410
- that the watcher is associated with (or no additional members at all if
2411
- you disable C<EV_MULTIPLICITY> when embedding libev).
2412
-
2413
- Currently, functions, and static and non-static member functions can be
2414
- used as callbacks. Other types should be easy to add as long as they only
2415
- need one additional pointer for context. If you need support for other
2416
- types of functors please contact the author (preferably after implementing
2417
- it).
2418
-
2419
- Here is a list of things available in the C<ev> namespace:
2420
-
2421
- =over 4
2422
-
2423
- =item C<ev::READ>, C<ev::WRITE> etc.
2424
-
2425
- These are just enum values with the same values as the C<EV_READ> etc.
2426
- macros from F<ev.h>.
2427
-
2428
- =item C<ev::tstamp>, C<ev::now>
2429
-
2430
- Aliases to the same types/functions as with the C<ev_> prefix.
2431
-
2432
- =item C<ev::io>, C<ev::timer>, C<ev::periodic>, C<ev::idle>, C<ev::sig> etc.
2433
-
2434
- For each C<ev_TYPE> watcher in F<ev.h> there is a corresponding class of
2435
- the same name in the C<ev> namespace, with the exception of C<ev_signal>
2436
- which is called C<ev::sig> to avoid clashes with the C<signal> macro
2437
- defines by many implementations.
2438
-
2439
- All of those classes have these methods:
2440
-
2441
- =over 4
2442
-
2443
- =item ev::TYPE::TYPE ()
2444
-
2445
- =item ev::TYPE::TYPE (struct ev_loop *)
2446
-
2447
- =item ev::TYPE::~TYPE
2448
-
2449
- The constructor (optionally) takes an event loop to associate the watcher
2450
- with. If it is omitted, it will use C<EV_DEFAULT>.
2451
-
2452
- The constructor calls C<ev_init> for you, which means you have to call the
2453
- C<set> method before starting it.
2454
-
2455
- It will not set a callback, however: You have to call the templated C<set>
2456
- method to set a callback before you can start the watcher.
2457
-
2458
- (The reason why you have to use a method is a limitation in C++ which does
2459
- not allow explicit template arguments for constructors).
2460
-
2461
- The destructor automatically stops the watcher if it is active.
2462
-
2463
- =item w->set<class, &class::method> (object *)
2464
-
2465
- This method sets the callback method to call. The method has to have a
2466
- signature of C<void (*)(ev_TYPE &, int)>, it receives the watcher as
2467
- first argument and the C<revents> as second. The object must be given as
2468
- parameter and is stored in the C<data> member of the watcher.
2469
-
2470
- This method synthesizes efficient thunking code to call your method from
2471
- the C callback that libev requires. If your compiler can inline your
2472
- callback (i.e. it is visible to it at the place of the C<set> call and
2473
- your compiler is good :), then the method will be fully inlined into the
2474
- thunking function, making it as fast as a direct C callback.
2475
-
2476
- Example: simple class declaration and watcher initialisation
2477
-
2478
- struct myclass
2479
- {
2480
- void io_cb (ev::io &w, int revents) { }
2481
- }
2482
-
2483
- myclass obj;
2484
- ev::io iow;
2485
- iow.set <myclass, &myclass::io_cb> (&obj);
2486
-
2487
- =item w->set<function> (void *data = 0)
2488
-
2489
- Also sets a callback, but uses a static method or plain function as
2490
- callback. The optional C<data> argument will be stored in the watcher's
2491
- C<data> member and is free for you to use.
2492
-
2493
- The prototype of the C<function> must be C<void (*)(ev::TYPE &w, int)>.
2494
-
2495
- See the method-C<set> above for more details.
2496
-
2497
- Example:
2498
-
2499
- static void io_cb (ev::io &w, int revents) { }
2500
- iow.set <io_cb> ();
2501
-
2502
- =item w->set (struct ev_loop *)
2503
-
2504
- Associates a different C<struct ev_loop> with this watcher. You can only
2505
- do this when the watcher is inactive (and not pending either).
2506
-
2507
- =item w->set ([args])
2508
-
2509
- Basically the same as C<ev_TYPE_set>, with the same args. Must be
2510
- called at least once. Unlike the C counterpart, an active watcher gets
2511
- automatically stopped and restarted when reconfiguring it with this
2512
- method.
2513
-
2514
- =item w->start ()
2515
-
2516
- Starts the watcher. Note that there is no C<loop> argument, as the
2517
- constructor already stores the event loop.
2518
-
2519
- =item w->stop ()
2520
-
2521
- Stops the watcher if it is active. Again, no C<loop> argument.
2522
-
2523
- =item w->again () (C<ev::timer>, C<ev::periodic> only)
2524
-
2525
- For C<ev::timer> and C<ev::periodic>, this invokes the corresponding
2526
- C<ev_TYPE_again> function.
2527
-
2528
- =item w->sweep () (C<ev::embed> only)
2529
-
2530
- Invokes C<ev_embed_sweep>.
2531
-
2532
- =item w->update () (C<ev::stat> only)
2533
-
2534
- Invokes C<ev_stat_stat>.
2535
-
2536
- =back
2537
-
2538
- =back
2539
-
2540
- Example: Define a class with an IO and idle watcher, start one of them in
2541
- the constructor.
2542
-
2543
- class myclass
2544
- {
2545
- ev::io io; void io_cb (ev::io &w, int revents);
2546
- ev:idle idle void idle_cb (ev::idle &w, int revents);
2547
-
2548
- myclass (int fd)
2549
- {
2550
- io .set <myclass, &myclass::io_cb > (this);
2551
- idle.set <myclass, &myclass::idle_cb> (this);
2552
-
2553
- io.start (fd, ev::READ);
2554
- }
2555
- };
2556
-
2557
-
2558
- =head1 OTHER LANGUAGE BINDINGS
2559
-
2560
- Libev does not offer other language bindings itself, but bindings for a
2561
- numbe rof languages exist in the form of third-party packages. If you know
2562
- any interesting language binding in addition to the ones listed here, drop
2563
- me a note.
2564
-
2565
- =over 4
2566
-
2567
- =item Perl
2568
-
2569
- The EV module implements the full libev API and is actually used to test
2570
- libev. EV is developed together with libev. Apart from the EV core module,
2571
- there are additional modules that implement libev-compatible interfaces
2572
- to C<libadns> (C<EV::ADNS>), C<Net::SNMP> (C<Net::SNMP::EV>) and the
2573
- C<libglib> event core (C<Glib::EV> and C<EV::Glib>).
2574
-
2575
- It can be found and installed via CPAN, its homepage is found at
2576
- L<http://software.schmorp.de/pkg/EV>.
2577
-
2578
- =item Ruby
2579
-
2580
- Tony Arcieri has written a ruby extension that offers access to a subset
2581
- of the libev API and adds filehandle abstractions, asynchronous DNS and
2582
- more on top of it. It can be found via gem servers. Its homepage is at
2583
- L<http://rev.rubyforge.org/>.
2584
-
2585
- =item D
2586
-
2587
- Leandro Lucarella has written a D language binding (F<ev.d>) for libev, to
2588
- be found at L<http://git.llucax.com.ar/?p=software/ev.d.git;a=summary>.
2589
-
2590
- =back
2591
-
2592
-
2593
- =head1 MACRO MAGIC
2594
-
2595
- Libev can be compiled with a variety of options, the most fundamantal
2596
- of which is C<EV_MULTIPLICITY>. This option determines whether (most)
2597
- functions and callbacks have an initial C<struct ev_loop *> argument.
2598
-
2599
- To make it easier to write programs that cope with either variant, the
2600
- following macros are defined:
2601
-
2602
- =over 4
2603
-
2604
- =item C<EV_A>, C<EV_A_>
2605
-
2606
- This provides the loop I<argument> for functions, if one is required ("ev
2607
- loop argument"). The C<EV_A> form is used when this is the sole argument,
2608
- C<EV_A_> is used when other arguments are following. Example:
2609
-
2610
- ev_unref (EV_A);
2611
- ev_timer_add (EV_A_ watcher);
2612
- ev_loop (EV_A_ 0);
2613
-
2614
- It assumes the variable C<loop> of type C<struct ev_loop *> is in scope,
2615
- which is often provided by the following macro.
2616
-
2617
- =item C<EV_P>, C<EV_P_>
2618
-
2619
- This provides the loop I<parameter> for functions, if one is required ("ev
2620
- loop parameter"). The C<EV_P> form is used when this is the sole parameter,
2621
- C<EV_P_> is used when other parameters are following. Example:
2622
-
2623
- // this is how ev_unref is being declared
2624
- static void ev_unref (EV_P);
2625
-
2626
- // this is how you can declare your typical callback
2627
- static void cb (EV_P_ ev_timer *w, int revents)
2628
-
2629
- It declares a parameter C<loop> of type C<struct ev_loop *>, quite
2630
- suitable for use with C<EV_A>.
2631
-
2632
- =item C<EV_DEFAULT>, C<EV_DEFAULT_>
2633
-
2634
- Similar to the other two macros, this gives you the value of the default
2635
- loop, if multiple loops are supported ("ev loop default").
2636
-
2637
- =item C<EV_DEFAULT_UC>, C<EV_DEFAULT_UC_>
2638
-
2639
- Usage identical to C<EV_DEFAULT> and C<EV_DEFAULT_>, but requires that the
2640
- default loop has been initialised (C<UC> == unchecked). Their behaviour
2641
- is undefined when the default loop has not been initialised by a previous
2642
- execution of C<EV_DEFAULT>, C<EV_DEFAULT_> or C<ev_default_init (...)>.
2643
-
2644
- It is often prudent to use C<EV_DEFAULT> when initialising the first
2645
- watcher in a function but use C<EV_DEFAULT_UC> afterwards.
2646
-
2647
- =back
2648
-
2649
- Example: Declare and initialise a check watcher, utilising the above
2650
- macros so it will work regardless of whether multiple loops are supported
2651
- or not.
2652
-
2653
- static void
2654
- check_cb (EV_P_ ev_timer *w, int revents)
2655
- {
2656
- ev_check_stop (EV_A_ w);
2657
- }
2658
-
2659
- ev_check check;
2660
- ev_check_init (&check, check_cb);
2661
- ev_check_start (EV_DEFAULT_ &check);
2662
- ev_loop (EV_DEFAULT_ 0);
2663
-
2664
- =head1 EMBEDDING
2665
-
2666
- Libev can (and often is) directly embedded into host
2667
- applications. Examples of applications that embed it include the Deliantra
2668
- Game Server, the EV perl module, the GNU Virtual Private Ethernet (gvpe)
2669
- and rxvt-unicode.
2670
-
2671
- The goal is to enable you to just copy the necessary files into your
2672
- source directory without having to change even a single line in them, so
2673
- you can easily upgrade by simply copying (or having a checked-out copy of
2674
- libev somewhere in your source tree).
2675
-
2676
- =head2 FILESETS
2677
-
2678
- Depending on what features you need you need to include one or more sets of files
2679
- in your app.
2680
-
2681
- =head3 CORE EVENT LOOP
2682
-
2683
- To include only the libev core (all the C<ev_*> functions), with manual
2684
- configuration (no autoconf):
2685
-
2686
- #define EV_STANDALONE 1
2687
- #include "ev.c"
2688
-
2689
- This will automatically include F<ev.h>, too, and should be done in a
2690
- single C source file only to provide the function implementations. To use
2691
- it, do the same for F<ev.h> in all files wishing to use this API (best
2692
- done by writing a wrapper around F<ev.h> that you can include instead and
2693
- where you can put other configuration options):
2694
-
2695
- #define EV_STANDALONE 1
2696
- #include "ev.h"
2697
-
2698
- Both header files and implementation files can be compiled with a C++
2699
- compiler (at least, thats a stated goal, and breakage will be treated
2700
- as a bug).
2701
-
2702
- You need the following files in your source tree, or in a directory
2703
- in your include path (e.g. in libev/ when using -Ilibev):
2704
-
2705
- ev.h
2706
- ev.c
2707
- ev_vars.h
2708
- ev_wrap.h
2709
-
2710
- ev_win32.c required on win32 platforms only
2711
-
2712
- ev_select.c only when select backend is enabled (which is enabled by default)
2713
- ev_poll.c only when poll backend is enabled (disabled by default)
2714
- ev_epoll.c only when the epoll backend is enabled (disabled by default)
2715
- ev_kqueue.c only when the kqueue backend is enabled (disabled by default)
2716
- ev_port.c only when the solaris port backend is enabled (disabled by default)
2717
-
2718
- F<ev.c> includes the backend files directly when enabled, so you only need
2719
- to compile this single file.
2720
-
2721
- =head3 LIBEVENT COMPATIBILITY API
2722
-
2723
- To include the libevent compatibility API, also include:
2724
-
2725
- #include "event.c"
2726
-
2727
- in the file including F<ev.c>, and:
2728
-
2729
- #include "event.h"
2730
-
2731
- in the files that want to use the libevent API. This also includes F<ev.h>.
2732
-
2733
- You need the following additional files for this:
2734
-
2735
- event.h
2736
- event.c
2737
-
2738
- =head3 AUTOCONF SUPPORT
2739
-
2740
- Instead of using C<EV_STANDALONE=1> and providing your config in
2741
- whatever way you want, you can also C<m4_include([libev.m4])> in your
2742
- F<configure.ac> and leave C<EV_STANDALONE> undefined. F<ev.c> will then
2743
- include F<config.h> and configure itself accordingly.
2744
-
2745
- For this of course you need the m4 file:
2746
-
2747
- libev.m4
2748
-
2749
- =head2 PREPROCESSOR SYMBOLS/MACROS
2750
-
2751
- Libev can be configured via a variety of preprocessor symbols you have to
2752
- define before including any of its files. The default in the absense of
2753
- autoconf is noted for every option.
2754
-
2755
- =over 4
2756
-
2757
- =item EV_STANDALONE
2758
-
2759
- Must always be C<1> if you do not use autoconf configuration, which
2760
- keeps libev from including F<config.h>, and it also defines dummy
2761
- implementations for some libevent functions (such as logging, which is not
2762
- supported). It will also not define any of the structs usually found in
2763
- F<event.h> that are not directly supported by the libev core alone.
2764
-
2765
- =item EV_USE_MONOTONIC
2766
-
2767
- If defined to be C<1>, libev will try to detect the availability of the
2768
- monotonic clock option at both compiletime and runtime. Otherwise no use
2769
- of the monotonic clock option will be attempted. If you enable this, you
2770
- usually have to link against librt or something similar. Enabling it when
2771
- the functionality isn't available is safe, though, although you have
2772
- to make sure you link against any libraries where the C<clock_gettime>
2773
- function is hiding in (often F<-lrt>).
2774
-
2775
- =item EV_USE_REALTIME
2776
-
2777
- If defined to be C<1>, libev will try to detect the availability of the
2778
- realtime clock option at compiletime (and assume its availability at
2779
- runtime if successful). Otherwise no use of the realtime clock option will
2780
- be attempted. This effectively replaces C<gettimeofday> by C<clock_get
2781
- (CLOCK_REALTIME, ...)> and will not normally affect correctness. See the
2782
- note about libraries in the description of C<EV_USE_MONOTONIC>, though.
2783
-
2784
- =item EV_USE_NANOSLEEP
2785
-
2786
- If defined to be C<1>, libev will assume that C<nanosleep ()> is available
2787
- and will use it for delays. Otherwise it will use C<select ()>.
2788
-
2789
- =item EV_USE_EVENTFD
2790
-
2791
- If defined to be C<1>, then libev will assume that C<eventfd ()> is
2792
- available and will probe for kernel support at runtime. This will improve
2793
- C<ev_signal> and C<ev_async> performance and reduce resource consumption.
2794
- If undefined, it will be enabled if the headers indicate GNU/Linux + Glibc
2795
- 2.7 or newer, otherwise disabled.
2796
-
2797
- =item EV_USE_SELECT
2798
-
2799
- If undefined or defined to be C<1>, libev will compile in support for the
2800
- C<select>(2) backend. No attempt at autodetection will be done: if no
2801
- other method takes over, select will be it. Otherwise the select backend
2802
- will not be compiled in.
2803
-
2804
- =item EV_SELECT_USE_FD_SET
2805
-
2806
- If defined to C<1>, then the select backend will use the system C<fd_set>
2807
- structure. This is useful if libev doesn't compile due to a missing
2808
- C<NFDBITS> or C<fd_mask> definition or it misguesses the bitset layout on
2809
- exotic systems. This usually limits the range of file descriptors to some
2810
- low limit such as 1024 or might have other limitations (winsocket only
2811
- allows 64 sockets). The C<FD_SETSIZE> macro, set before compilation, might
2812
- influence the size of the C<fd_set> used.
2813
-
2814
- =item EV_SELECT_IS_WINSOCKET
2815
-
2816
- When defined to C<1>, the select backend will assume that
2817
- select/socket/connect etc. don't understand file descriptors but
2818
- wants osf handles on win32 (this is the case when the select to
2819
- be used is the winsock select). This means that it will call
2820
- C<_get_osfhandle> on the fd to convert it to an OS handle. Otherwise,
2821
- it is assumed that all these functions actually work on fds, even
2822
- on win32. Should not be defined on non-win32 platforms.
2823
-
2824
- =item EV_FD_TO_WIN32_HANDLE
2825
-
2826
- If C<EV_SELECT_IS_WINSOCKET> is enabled, then libev needs a way to map
2827
- file descriptors to socket handles. When not defining this symbol (the
2828
- default), then libev will call C<_get_osfhandle>, which is usually
2829
- correct. In some cases, programs use their own file descriptor management,
2830
- in which case they can provide this function to map fds to socket handles.
2831
-
2832
- =item EV_USE_POLL
2833
-
2834
- If defined to be C<1>, libev will compile in support for the C<poll>(2)
2835
- backend. Otherwise it will be enabled on non-win32 platforms. It
2836
- takes precedence over select.
2837
-
2838
- =item EV_USE_EPOLL
2839
-
2840
- If defined to be C<1>, libev will compile in support for the Linux
2841
- C<epoll>(7) backend. Its availability will be detected at runtime,
2842
- otherwise another method will be used as fallback. This is the preferred
2843
- backend for GNU/Linux systems. If undefined, it will be enabled if the
2844
- headers indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled.
2845
-
2846
- =item EV_USE_KQUEUE
2847
-
2848
- If defined to be C<1>, libev will compile in support for the BSD style
2849
- C<kqueue>(2) backend. Its actual availability will be detected at runtime,
2850
- otherwise another method will be used as fallback. This is the preferred
2851
- backend for BSD and BSD-like systems, although on most BSDs kqueue only
2852
- supports some types of fds correctly (the only platform we found that
2853
- supports ptys for example was NetBSD), so kqueue might be compiled in, but
2854
- not be used unless explicitly requested. The best way to use it is to find
2855
- out whether kqueue supports your type of fd properly and use an embedded
2856
- kqueue loop.
2857
-
2858
- =item EV_USE_PORT
2859
-
2860
- If defined to be C<1>, libev will compile in support for the Solaris
2861
- 10 port style backend. Its availability will be detected at runtime,
2862
- otherwise another method will be used as fallback. This is the preferred
2863
- backend for Solaris 10 systems.
2864
-
2865
- =item EV_USE_DEVPOLL
2866
-
2867
- reserved for future expansion, works like the USE symbols above.
2868
-
2869
- =item EV_USE_INOTIFY
2870
-
2871
- If defined to be C<1>, libev will compile in support for the Linux inotify
2872
- interface to speed up C<ev_stat> watchers. Its actual availability will
2873
- be detected at runtime. If undefined, it will be enabled if the headers
2874
- indicate GNU/Linux + Glibc 2.4 or newer, otherwise disabled.
2875
-
2876
- =item EV_ATOMIC_T
2877
-
2878
- Libev requires an integer type (suitable for storing C<0> or C<1>) whose
2879
- access is atomic with respect to other threads or signal contexts. No such
2880
- type is easily found in the C language, so you can provide your own type
2881
- that you know is safe for your purposes. It is used both for signal handler "locking"
2882
- as well as for signal and thread safety in C<ev_async> watchers.
2883
-
2884
- In the absense of this define, libev will use C<sig_atomic_t volatile>
2885
- (from F<signal.h>), which is usually good enough on most platforms.
2886
-
2887
- =item EV_H
2888
-
2889
- The name of the F<ev.h> header file used to include it. The default if
2890
- undefined is C<"ev.h"> in F<event.h>, F<ev.c> and F<ev++.h>. This can be
2891
- used to virtually rename the F<ev.h> header file in case of conflicts.
2892
-
2893
- =item EV_CONFIG_H
2894
-
2895
- If C<EV_STANDALONE> isn't C<1>, this variable can be used to override
2896
- F<ev.c>'s idea of where to find the F<config.h> file, similarly to
2897
- C<EV_H>, above.
2898
-
2899
- =item EV_EVENT_H
2900
-
2901
- Similarly to C<EV_H>, this macro can be used to override F<event.c>'s idea
2902
- of how the F<event.h> header can be found, the default is C<"event.h">.
2903
-
2904
- =item EV_PROTOTYPES
2905
-
2906
- If defined to be C<0>, then F<ev.h> will not define any function
2907
- prototypes, but still define all the structs and other symbols. This is
2908
- occasionally useful if you want to provide your own wrapper functions
2909
- around libev functions.
2910
-
2911
- =item EV_MULTIPLICITY
2912
-
2913
- If undefined or defined to C<1>, then all event-loop-specific functions
2914
- will have the C<struct ev_loop *> as first argument, and you can create
2915
- additional independent event loops. Otherwise there will be no support
2916
- for multiple event loops and there is no first event loop pointer
2917
- argument. Instead, all functions act on the single default loop.
2918
-
2919
- =item EV_MINPRI
2920
-
2921
- =item EV_MAXPRI
2922
-
2923
- The range of allowed priorities. C<EV_MINPRI> must be smaller or equal to
2924
- C<EV_MAXPRI>, but otherwise there are no non-obvious limitations. You can
2925
- provide for more priorities by overriding those symbols (usually defined
2926
- to be C<-2> and C<2>, respectively).
2927
-
2928
- When doing priority-based operations, libev usually has to linearly search
2929
- all the priorities, so having many of them (hundreds) uses a lot of space
2930
- and time, so using the defaults of five priorities (-2 .. +2) is usually
2931
- fine.
2932
-
2933
- If your embedding app does not need any priorities, defining these both to
2934
- C<0> will save some memory and cpu.
2935
-
2936
- =item EV_PERIODIC_ENABLE
2937
-
2938
- If undefined or defined to be C<1>, then periodic timers are supported. If
2939
- defined to be C<0>, then they are not. Disabling them saves a few kB of
2940
- code.
2941
-
2942
- =item EV_IDLE_ENABLE
2943
-
2944
- If undefined or defined to be C<1>, then idle watchers are supported. If
2945
- defined to be C<0>, then they are not. Disabling them saves a few kB of
2946
- code.
2947
-
2948
- =item EV_EMBED_ENABLE
2949
-
2950
- If undefined or defined to be C<1>, then embed watchers are supported. If
2951
- defined to be C<0>, then they are not.
2952
-
2953
- =item EV_STAT_ENABLE
2954
-
2955
- If undefined or defined to be C<1>, then stat watchers are supported. If
2956
- defined to be C<0>, then they are not.
2957
-
2958
- =item EV_FORK_ENABLE
2959
-
2960
- If undefined or defined to be C<1>, then fork watchers are supported. If
2961
- defined to be C<0>, then they are not.
2962
-
2963
- =item EV_ASYNC_ENABLE
2964
-
2965
- If undefined or defined to be C<1>, then async watchers are supported. If
2966
- defined to be C<0>, then they are not.
2967
-
2968
- =item EV_MINIMAL
2969
-
2970
- If you need to shave off some kilobytes of code at the expense of some
2971
- speed, define this symbol to C<1>. Currently only used for gcc to override
2972
- some inlining decisions, saves roughly 30% codesize of amd64.
2973
-
2974
- =item EV_PID_HASHSIZE
2975
-
2976
- C<ev_child> watchers use a small hash table to distribute workload by
2977
- pid. The default size is C<16> (or C<1> with C<EV_MINIMAL>), usually more
2978
- than enough. If you need to manage thousands of children you might want to
2979
- increase this value (I<must> be a power of two).
2980
-
2981
- =item EV_INOTIFY_HASHSIZE
2982
-
2983
- C<ev_stat> watchers use a small hash table to distribute workload by
2984
- inotify watch id. The default size is C<16> (or C<1> with C<EV_MINIMAL>),
2985
- usually more than enough. If you need to manage thousands of C<ev_stat>
2986
- watchers you might want to increase this value (I<must> be a power of
2987
- two).
2988
-
2989
- =item EV_COMMON
2990
-
2991
- By default, all watchers have a C<void *data> member. By redefining
2992
- this macro to a something else you can include more and other types of
2993
- members. You have to define it each time you include one of the files,
2994
- though, and it must be identical each time.
2995
-
2996
- For example, the perl EV module uses something like this:
2997
-
2998
- #define EV_COMMON \
2999
- SV *self; /* contains this struct */ \
3000
- SV *cb_sv, *fh /* note no trailing ";" */
3001
-
3002
- =item EV_CB_DECLARE (type)
3003
-
3004
- =item EV_CB_INVOKE (watcher, revents)
3005
-
3006
- =item ev_set_cb (ev, cb)
3007
-
3008
- Can be used to change the callback member declaration in each watcher,
3009
- and the way callbacks are invoked and set. Must expand to a struct member
3010
- definition and a statement, respectively. See the F<ev.h> header file for
3011
- their default definitions. One possible use for overriding these is to
3012
- avoid the C<struct ev_loop *> as first argument in all cases, or to use
3013
- method calls instead of plain function calls in C++.
3014
-
3015
- =head2 EXPORTED API SYMBOLS
3016
-
3017
- If you need to re-export the API (e.g. via a dll) and you need a list of
3018
- exported symbols, you can use the provided F<Symbol.*> files which list
3019
- all public symbols, one per line:
3020
-
3021
- Symbols.ev for libev proper
3022
- Symbols.event for the libevent emulation
3023
-
3024
- This can also be used to rename all public symbols to avoid clashes with
3025
- multiple versions of libev linked together (which is obviously bad in
3026
- itself, but sometimes it is inconvinient to avoid this).
3027
-
3028
- A sed command like this will create wrapper C<#define>'s that you need to
3029
- include before including F<ev.h>:
3030
-
3031
- <Symbols.ev sed -e "s/.*/#define & myprefix_&/" >wrap.h
3032
-
3033
- This would create a file F<wrap.h> which essentially looks like this:
3034
-
3035
- #define ev_backend myprefix_ev_backend
3036
- #define ev_check_start myprefix_ev_check_start
3037
- #define ev_check_stop myprefix_ev_check_stop
3038
- ...
3039
-
3040
- =head2 EXAMPLES
3041
-
3042
- For a real-world example of a program the includes libev
3043
- verbatim, you can have a look at the EV perl module
3044
- (L<http://software.schmorp.de/pkg/EV.html>). It has the libev files in
3045
- the F<libev/> subdirectory and includes them in the F<EV/EVAPI.h> (public
3046
- interface) and F<EV.xs> (implementation) files. Only the F<EV.xs> file
3047
- will be compiled. It is pretty complex because it provides its own header
3048
- file.
3049
-
3050
- The usage in rxvt-unicode is simpler. It has a F<ev_cpp.h> header file
3051
- that everybody includes and which overrides some configure choices:
3052
-
3053
- #define EV_MINIMAL 1
3054
- #define EV_USE_POLL 0
3055
- #define EV_MULTIPLICITY 0
3056
- #define EV_PERIODIC_ENABLE 0
3057
- #define EV_STAT_ENABLE 0
3058
- #define EV_FORK_ENABLE 0
3059
- #define EV_CONFIG_H <config.h>
3060
- #define EV_MINPRI 0
3061
- #define EV_MAXPRI 0
3062
-
3063
- #include "ev++.h"
3064
-
3065
- And a F<ev_cpp.C> implementation file that contains libev proper and is compiled:
3066
-
3067
- #include "ev_cpp.h"
3068
- #include "ev.c"
3069
-
3070
-
3071
- =head1 THREADS AND COROUTINES
3072
-
3073
- =head2 THREADS
3074
-
3075
- Libev itself is completely threadsafe, but it uses no locking. This
3076
- means that you can use as many loops as you want in parallel, as long as
3077
- only one thread ever calls into one libev function with the same loop
3078
- parameter.
3079
-
3080
- Or put differently: calls with different loop parameters can be done in
3081
- parallel from multiple threads, calls with the same loop parameter must be
3082
- done serially (but can be done from different threads, as long as only one
3083
- thread ever is inside a call at any point in time, e.g. by using a mutex
3084
- per loop).
3085
-
3086
- If you want to know which design is best for your problem, then I cannot
3087
- help you but by giving some generic advice:
3088
-
3089
- =over 4
3090
-
3091
- =item * most applications have a main thread: use the default libev loop
3092
- in that thread, or create a seperate thread running only the default loop.
3093
-
3094
- This helps integrating other libraries or software modules that use libev
3095
- themselves and don't care/know about threading.
3096
-
3097
- =item * one loop per thread is usually a good model.
3098
-
3099
- Doing this is almost never wrong, sometimes a better-performance model
3100
- exists, but it is always a good start.
3101
-
3102
- =item * other models exist, such as the leader/follower pattern, where one
3103
- loop is handed through multiple threads in a kind of round-robbin fashion.
3104
-
3105
- Chosing a model is hard - look around, learn, know that usually you cna do
3106
- better than you currently do :-)
3107
-
3108
- =item * often you need to talk to some other thread which blocks in the
3109
- event loop - C<ev_async> watchers can be used to wake them up from other
3110
- threads safely (or from signal contexts...).
3111
-
3112
- =back
3113
-
3114
- =head2 COROUTINES
3115
-
3116
- Libev is much more accomodating to coroutines ("cooperative threads"):
3117
- libev fully supports nesting calls to it's functions from different
3118
- coroutines (e.g. you can call C<ev_loop> on the same loop from two
3119
- different coroutines and switch freely between both coroutines running the
3120
- loop, as long as you don't confuse yourself). The only exception is that
3121
- you must not do this from C<ev_periodic> reschedule callbacks.
3122
-
3123
- Care has been invested into making sure that libev does not keep local
3124
- state inside C<ev_loop>, and other calls do not usually allow coroutine
3125
- switches.
3126
-
3127
-
3128
- =head1 COMPLEXITIES
3129
-
3130
- In this section the complexities of (many of) the algorithms used inside
3131
- libev will be explained. For complexity discussions about backends see the
3132
- documentation for C<ev_default_init>.
3133
-
3134
- All of the following are about amortised time: If an array needs to be
3135
- extended, libev needs to realloc and move the whole array, but this
3136
- happens asymptotically never with higher number of elements, so O(1) might
3137
- mean it might do a lengthy realloc operation in rare cases, but on average
3138
- it is much faster and asymptotically approaches constant time.
3139
-
3140
- =over 4
3141
-
3142
- =item Starting and stopping timer/periodic watchers: O(log skipped_other_timers)
3143
-
3144
- This means that, when you have a watcher that triggers in one hour and
3145
- there are 100 watchers that would trigger before that then inserting will
3146
- have to skip roughly seven (C<ld 100>) of these watchers.
3147
-
3148
- =item Changing timer/periodic watchers (by autorepeat or calling again): O(log skipped_other_timers)
3149
-
3150
- That means that changing a timer costs less than removing/adding them
3151
- as only the relative motion in the event queue has to be paid for.
3152
-
3153
- =item Starting io/check/prepare/idle/signal/child/fork/async watchers: O(1)
3154
-
3155
- These just add the watcher into an array or at the head of a list.
3156
-
3157
- =item Stopping check/prepare/idle/fork/async watchers: O(1)
3158
-
3159
- =item Stopping an io/signal/child watcher: O(number_of_watchers_for_this_(fd/signal/pid % EV_PID_HASHSIZE))
3160
-
3161
- These watchers are stored in lists then need to be walked to find the
3162
- correct watcher to remove. The lists are usually short (you don't usually
3163
- have many watchers waiting for the same fd or signal).
3164
-
3165
- =item Finding the next timer in each loop iteration: O(1)
3166
-
3167
- By virtue of using a binary heap, the next timer is always found at the
3168
- beginning of the storage array.
3169
-
3170
- =item Each change on a file descriptor per loop iteration: O(number_of_watchers_for_this_fd)
3171
-
3172
- A change means an I/O watcher gets started or stopped, which requires
3173
- libev to recalculate its status (and possibly tell the kernel, depending
3174
- on backend and wether C<ev_io_set> was used).
3175
-
3176
- =item Activating one watcher (putting it into the pending state): O(1)
3177
-
3178
- =item Priority handling: O(number_of_priorities)
3179
-
3180
- Priorities are implemented by allocating some space for each
3181
- priority. When doing priority-based operations, libev usually has to
3182
- linearly search all the priorities, but starting/stopping and activating
3183
- watchers becomes O(1) w.r.t. priority handling.
3184
-
3185
- =item Sending an ev_async: O(1)
3186
-
3187
- =item Processing ev_async_send: O(number_of_async_watchers)
3188
-
3189
- =item Processing signals: O(max_signal_number)
3190
-
3191
- Sending involves a syscall I<iff> there were no other C<ev_async_send>
3192
- calls in the current loop iteration. Checking for async and signal events
3193
- involves iterating over all running async watchers or all signal numbers.
3194
-
3195
- =back
3196
-
3197
-
3198
- =head1 Win32 platform limitations and workarounds
3199
-
3200
- Win32 doesn't support any of the standards (e.g. POSIX) that libev
3201
- requires, and its I/O model is fundamentally incompatible with the POSIX
3202
- model. Libev still offers limited functionality on this platform in
3203
- the form of the C<EVBACKEND_SELECT> backend, and only supports socket
3204
- descriptors. This only applies when using Win32 natively, not when using
3205
- e.g. cygwin.
3206
-
3207
- There is no supported compilation method available on windows except
3208
- embedding it into other applications.
3209
-
3210
- Due to the many, low, and arbitrary limits on the win32 platform and the
3211
- abysmal performance of winsockets, using a large number of sockets is not
3212
- recommended (and not reasonable). If your program needs to use more than
3213
- a hundred or so sockets, then likely it needs to use a totally different
3214
- implementation for windows, as libev offers the POSIX model, which cannot
3215
- be implemented efficiently on windows (microsoft monopoly games).
3216
-
3217
- =over 4
3218
-
3219
- =item The winsocket select function
3220
-
3221
- The winsocket C<select> function doesn't follow POSIX in that it requires
3222
- socket I<handles> and not socket I<file descriptors>. This makes select
3223
- very inefficient, and also requires a mapping from file descriptors
3224
- to socket handles. See the discussion of the C<EV_SELECT_USE_FD_SET>,
3225
- C<EV_SELECT_IS_WINSOCKET> and C<EV_FD_TO_WIN32_HANDLE> preprocessor
3226
- symbols for more info.
3227
-
3228
- The configuration for a "naked" win32 using the microsoft runtime
3229
- libraries and raw winsocket select is:
3230
-
3231
- #define EV_USE_SELECT 1
3232
- #define EV_SELECT_IS_WINSOCKET 1 /* forces EV_SELECT_USE_FD_SET, too */
3233
-
3234
- Note that winsockets handling of fd sets is O(n), so you can easily get a
3235
- complexity in the O(n²) range when using win32.
3236
-
3237
- =item Limited number of file descriptors
3238
-
3239
- Windows has numerous arbitrary (and low) limits on things. Early versions
3240
- of winsocket's select only supported waiting for a max. of C<64> handles
3241
- (probably owning to the fact that all windows kernels can only wait for
3242
- C<64> things at the same time internally; microsoft recommends spawning a
3243
- chain of threads and wait for 63 handles and the previous thread in each).
3244
-
3245
- Newer versions support more handles, but you need to define C<FD_SETSIZE>
3246
- to some high number (e.g. C<2048>) before compiling the winsocket select
3247
- call (which might be in libev or elsewhere, for example, perl does its own
3248
- select emulation on windows).
3249
-
3250
- Another limit is the number of file descriptors in the microsoft runtime
3251
- libraries, which by default is C<64> (there must be a hidden I<64> fetish
3252
- or something like this inside microsoft). You can increase this by calling
3253
- C<_setmaxstdio>, which can increase this limit to C<2048> (another
3254
- arbitrary limit), but is broken in many versions of the microsoft runtime
3255
- libraries.
3256
-
3257
- This might get you to about C<512> or C<2048> sockets (depending on
3258
- windows version and/or the phase of the moon). To get more, you need to
3259
- wrap all I/O functions and provide your own fd management, but the cost of
3260
- calling select (O(n²)) will likely make this unworkable.
3261
-
3262
- =back
3263
-
3264
-
3265
- =head1 AUTHOR
3266
-
3267
- Marc Lehmann <libev@schmorp.de>.
3268
-