]> git.llucax.com Git - software/libev.git/blobdiff - ev.pod
*** empty log message ***
[software/libev.git] / ev.pod
diff --git a/ev.pod b/ev.pod
index b988e08efe4fb76a51afe3ffbbad0a9f204eb30c..3f4a06461c9a6eb09c06da51a47a5491594105bb 100644 (file)
--- a/ev.pod
+++ b/ev.pod
@@ -1162,6 +1162,7 @@ pseudo-code only of course:
   io_cb (ev_loop *loop, ev_io *w, int revents)
   {
     // set the relevant poll flags
   io_cb (ev_loop *loop, ev_io *w, int revents)
   {
     // set the relevant poll flags
+    // could also call adns_processreadable etc. here
     struct pollfd *fd = (struct pollfd *)w->data;
     if (revents & EV_READ ) fd->revents |= fd->events & POLLIN;
     if (revents & EV_WRITE) fd->revents |= fd->events & POLLOUT;
     struct pollfd *fd = (struct pollfd *)w->data;
     if (revents & EV_READ ) fd->revents |= fd->events & POLLIN;
     if (revents & EV_WRITE) fd->revents |= fd->events & POLLOUT;
@@ -1701,10 +1702,27 @@ additional independent event loops. Otherwise there will be no support
 for multiple event loops and there is no first event loop pointer
 argument. Instead, all functions act on the single default loop.
 
 for multiple event loops and there is no first event loop pointer
 argument. Instead, all functions act on the single default loop.
 
-=item EV_PERIODICS
+=item EV_PERIODIC_ENABLE
 
 
-If undefined or defined to be C<1>, then periodic timers are supported,
-otherwise not. This saves a few kb of code.
+If undefined or defined to be C<1>, then periodic timers are supported. If
+defined to be C<0>, then they are not. Disabling them saves a few kB of
+code.
+
+=item EV_EMBED_ENABLE
+
+If undefined or defined to be C<1>, then embed watchers are supported. If
+defined to be C<0>, then they are not.
+
+=item EV_STAT_ENABLE
+
+If undefined or defined to be C<1>, then stat watchers are supported. If
+defined to be C<0>, then they are not.
+
+=item EV_MINIMAL
+
+If you need to shave off some kilobytes of code at the expense of some
+speed, define this symbol to C<1>. Currently only used for gcc to override
+some inlining decisions, saves roughly 30% codesize of amd64.
 
 =item EV_COMMON
 
 
 =item EV_COMMON
 
@@ -1757,6 +1775,34 @@ And a F<ev_cpp.C> implementation file that contains libev proper and is compiled
   #include "ev_cpp.h"
   #include "ev.c"
 
   #include "ev_cpp.h"
   #include "ev.c"
 
+
+=head1 COMPLEXITIES
+
+In this section the complexities of (many of) the algorithms used inside
+libev will be explained. For complexity discussions about backends see the
+documentation for C<ev_default_init>.
+
+=over 4
+
+=item Starting and stopping timer/periodic watchers: O(log skipped_other_timers)
+
+=item Changing timer/periodic watchers (by autorepeat, again): O(log skipped_other_timers)
+
+=item Starting io/check/prepare/idle/signal/child watchers: O(1)
+
+=item Stopping check/prepare/idle watchers: O(1)
+
+=item Stopping an io/signal/child watcher: O(number_of_watchers_for_this_(fd/signal/pid % 16))
+
+=item Finding the next timer per loop iteration: O(1)
+
+=item Each change on a file descriptor per loop iteration: O(number_of_watchers_for_this_fd)
+
+=item Activating one watcher: O(1)
+
+=back
+
+
 =head1 AUTHOR
 
 Marc Lehmann <libev@schmorp.de>.
 =head1 AUTHOR
 
 Marc Lehmann <libev@schmorp.de>.