ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.pod
(Generate patch)

Comparing libev/ev.pod (file contents):
Revision 1.23 by root, Mon Nov 12 18:40:21 2007 UTC vs.
Revision 1.27 by root, Wed Nov 14 05:02:07 2007 UTC

56 56
57=over 4 57=over 4
58 58
59=item ev_tstamp ev_time () 59=item ev_tstamp ev_time ()
60 60
61Returns the current time as libev would use it. 61Returns the current time as libev would use it. Please note that the
62C<ev_now> function is usually faster and also often returns the timestamp
63you actually want to know.
62 64
63=item int ev_version_major () 65=item int ev_version_major ()
64 66
65=item int ev_version_minor () 67=item int ev_version_minor ()
66 68
237 239
238This flags value could be used to implement alternative looping 240This flags value could be used to implement alternative looping
239constructs, but the C<prepare> and C<check> watchers provide a better and 241constructs, but the C<prepare> and C<check> watchers provide a better and
240more generic mechanism. 242more generic mechanism.
241 243
244Here are the gory details of what ev_loop does:
245
246 1. If there are no active watchers (reference count is zero), return.
247 2. Queue and immediately call all prepare watchers.
248 3. If we have been forked, recreate the kernel state.
249 4. Update the kernel state with all outstanding changes.
250 5. Update the "event loop time".
251 6. Calculate for how long to block.
252 7. Block the process, waiting for events.
253 8. Update the "event loop time" and do time jump handling.
254 9. Queue all outstanding timers.
255 10. Queue all outstanding periodics.
256 11. If no events are pending now, queue all idle watchers.
257 12. Queue all check watchers.
258 13. Call all queued watchers in reverse order (i.e. check watchers first).
259 14. If ev_unloop has been called or EVLOOP_ONESHOT or EVLOOP_NONBLOCK
260 was used, return, otherwise continue with step #1.
261
242=item ev_unloop (loop, how) 262=item ev_unloop (loop, how)
243 263
244Can be used to make a call to C<ev_loop> return early (but only after it 264Can be used to make a call to C<ev_loop> return early (but only after it
245has processed all outstanding events). The C<how> argument must be either 265has processed all outstanding events). The C<how> argument must be either
246C<EVUNLOOP_ONCE>, which will make the innermost C<ev_loop> call return, or 266C<EVUNLOOP_ONE>, which will make the innermost C<ev_loop> call return, or
247C<EVUNLOOP_ALL>, which will make all nested C<ev_loop> calls return. 267C<EVUNLOOP_ALL>, which will make all nested C<ev_loop> calls return.
248 268
249=item ev_ref (loop) 269=item ev_ref (loop)
250 270
251=item ev_unref (loop) 271=item ev_unref (loop)
425required if you know what you are doing). 445required if you know what you are doing).
426 446
427You have to be careful with dup'ed file descriptors, though. Some backends 447You have to be careful with dup'ed file descriptors, though. Some backends
428(the linux epoll backend is a notable example) cannot handle dup'ed file 448(the linux epoll backend is a notable example) cannot handle dup'ed file
429descriptors correctly if you register interest in two or more fds pointing 449descriptors correctly if you register interest in two or more fds pointing
430to the same file/socket etc. description (that is, they share the same 450to the same underlying file/socket etc. description (that is, they share
431underlying "file open"). 451the same underlying "file open").
432 452
433If you must do this, then force the use of a known-to-be-good backend 453If you must do this, then force the use of a known-to-be-good backend
434(at the time of this writing, this includes only EVMETHOD_SELECT and 454(at the time of this writing, this includes only EVMETHOD_SELECT and
435EVMETHOD_POLL). 455EVMETHOD_POLL).
436 456
772 792
773=back 793=back
774 794
775=head1 LIBEVENT EMULATION 795=head1 LIBEVENT EMULATION
776 796
797Libev offers a compatibility emulation layer for libevent. It cannot
798emulate the internals of libevent, so here are some usage hints:
799
800=over 4
801
802=item * Use it by including <event.h>, as usual.
803
804=item * The following members are fully supported: ev_base, ev_callback,
805ev_arg, ev_fd, ev_res, ev_events.
806
807=item * Avoid using ev_flags and the EVLIST_*-macros, while it is
808maintained by libev, it does not work exactly the same way as in libevent (consider
809it a private API).
810
811=item * Priorities are not currently supported. Initialising priorities
812will fail and all watchers will have the same priority, even though there
813is an ev_pri field.
814
815=item * Other members are not supported.
816
817=item * The libev emulation is I<not> ABI compatible to libevent, you need
818to use the libev header file and library.
819
820=back
821
822=head1 C++ SUPPORT
823
777TBD. 824TBD.
778 825
779=head1 C++ SUPPORT
780
781TBD.
782
783=head1 AUTHOR 826=head1 AUTHOR
784 827
785Marc Lehmann <libev@schmorp.de>. 828Marc Lehmann <libev@schmorp.de>.
786 829

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines