X-Git-Url: https://git.llucax.com/software/libev.git/blobdiff_plain/e0d2a4b0f08314f5c9f39199ee91f045c2f98d4b..d62943221d916737d52e83db662e6a1e2f92db0a:/ev.html diff --git a/ev.html b/ev.html index 011cda6..a107da8 100644 --- a/ev.html +++ b/ev.html @@ -6,7 +6,7 @@ - +
@@ -62,19 +62,19 @@libev - a high performance full-featured event loop written in C
#include <ev.h>
#include <ev.h> @@ -119,7 +119,7 @@
Libev is an event loop: you register interest in certain events (such as a file descriptor being readable or a timeout occuring), and it will manage @@ -133,7 +133,7 @@ details of the event, and then hand it over to libev by starting the watcher.
Libev supports select
, poll
, the linux-specific epoll
, the
bsd-specific kqueue
and the solaris-specific event port mechanisms
@@ -149,7 +149,7 @@ file watchers (ev_stat
) and even limited support for fork events
for example).
Libev is very configurable. In this manual the default configuration will
be described, which supports multiple event loops. For more info about
@@ -159,7 +159,7 @@ loops, then all functions taking an initial argument of name loop
(which is always of type struct ev_loop *
) will not have this argument.
Libev represents time as a single floating point number, representing the
(fractional) number of seconds since the (POSIX) epoch (somewhere near
@@ -169,7 +169,7 @@ to the double
type in C, and when you need to do any calculations o
it, you should treat it as such.
These functions can be called anytime, even before initialising the library in any way.
@@ -287,7 +287,7 @@ requested operation, or, if the condition doesn't go away, do bad stuffAn event loop is described by a struct ev_loop *
. The library knows two
types of such loops, the default loop, which supports signals and child
@@ -570,7 +570,7 @@ running when nothing else is active.
A watcher is a structure that you create and register to record your
interest in some event. For instance, if you want to wait for STDIN to
@@ -743,7 +743,7 @@ is pending (but not active) you must not call an init function on it (but
ev_TYPE_set
is safe) and you must make sure the watcher is available to
libev (e.g. you cnanot free ()
it).
Returns the callback currently set on the watcher.
More interesting and less C-conformant ways of catsing your callback type -have been omitted....
+More interesting and less C-conformant ways of casting your callback type +instead have been omitted.
+Another common scenario is having some data structure with multiple +watchers:
+struct my_biggy + { + int some_data; + ev_timer t1; + ev_timer t2; + } ++
In this case getting the pointer to my_biggy
is a bit more complicated,
+you need to use offsetof
:
#include <stddef.h> + static void + t1_cb (EV_P_ struct ev_timer *w, int revents) + { + struct my_biggy big = (struct my_biggy * + (((char *)w) - offsetof (struct my_biggy, t1)); + } + + static void + t2_cb (EV_P_ struct ev_timer *w, int revents) + { + struct my_biggy big = (struct my_biggy * + (((char *)w) - offsetof (struct my_biggy, t2)); + } + ++
This section describes each watcher in detail, but will not repeat information given in the last section. Any initialisation/set macros, @@ -1562,7 +1590,7 @@ believe me.
There are some other functions of possible interest. Described. Here. Now.
Libev offers a compatibility emulation layer for libevent. It cannot emulate the internals of libevent, so here are some usage hints:
@@ -1639,7 +1667,7 @@ to use the libev header file and library.Libev comes with some simplistic wrapper classes for C++ that mainly allow you to use some convinience methods to start/stop watchers and also change @@ -1744,7 +1772,7 @@ the constructor.
Libev can be compiled with a variety of options, the most fundemantal is
EV_MULTIPLICITY
. This option determines wether (most) functions and
@@ -1805,7 +1833,7 @@ wether multiple loops are supported or not.
Libev can (and often is) directly embedded into host applications. Examples of applications that embed it include the Deliantra @@ -2109,7 +2137,7 @@ that everybody includes and which overrides some autoconf choices:
In this section the complexities of (many of) the algorithms used inside
libev will be explained. For complexity discussions about backends see the
@@ -2132,7 +2160,7 @@ documentation for ev_default_init
.
Marc Lehmann <libev@schmorp.de>.