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

Comparing libev/ev.pod (file contents):
Revision 1.164 by root, Sat May 31 23:22:23 2008 UTC vs.
Revision 1.166 by root, Tue Jun 3 03:48:10 2008 UTC

2626libev. EV is developed together with libev. Apart from the EV core module, 2626libev. EV is developed together with libev. Apart from the EV core module,
2627there are additional modules that implement libev-compatible interfaces 2627there are additional modules that implement libev-compatible interfaces
2628to C<libadns> (C<EV::ADNS>), C<Net::SNMP> (C<Net::SNMP::EV>) and the 2628to C<libadns> (C<EV::ADNS>), C<Net::SNMP> (C<Net::SNMP::EV>) and the
2629C<libglib> event core (C<Glib::EV> and C<EV::Glib>). 2629C<libglib> event core (C<Glib::EV> and C<EV::Glib>).
2630 2630
2631It can be found and installed via CPAN, its homepage is found at 2631It can be found and installed via CPAN, its homepage is at
2632L<http://software.schmorp.de/pkg/EV>. 2632L<http://software.schmorp.de/pkg/EV>.
2633
2634=item Python
2635
2636Python bindings can be found at L<http://code.google.com/p/pyev/>. It
2637seems to be quite complete and well-documented. Note, however, that the
2638patch they require for libev is outright dangerous as it breaks the ABI
2639for everybody else, and therefore, should never be applied in an installed
2640libev (if python requires an incompatible ABI then it needs to embed
2641libev).
2633 2642
2634=item Ruby 2643=item Ruby
2635 2644
2636Tony Arcieri has written a ruby extension that offers access to a subset 2645Tony Arcieri has written a ruby extension that offers access to a subset
2637of the libev API and adds file handle abstractions, asynchronous DNS and 2646of the libev API and adds file handle abstractions, asynchronous DNS and
3374In addition to a working ISO-C implementation, libev relies on a few 3383In addition to a working ISO-C implementation, libev relies on a few
3375additional extensions: 3384additional extensions:
3376 3385
3377=over 4 3386=over 4
3378 3387
3388=item C<void (*)(ev_watcher_type *, int revents)> must have compatible
3389calling conventions regardless of C<ev_watcher_type *>.
3390
3391Libev assumes not only that all watcher pointers have the same internal
3392structure (guaranteed by POSIX but not by ISO C for example), but it also
3393assumes that the same (machine) code can be used to call any watcher
3394callback: The watcher callbacks have different type signatures, but libev
3395calls them using an C<ev_watcher *> internally.
3396
3379=item C<sig_atomic_t volatile> must be thread-atomic as well 3397=item C<sig_atomic_t volatile> must be thread-atomic as well
3380 3398
3381The type C<sig_atomic_t volatile> (or whatever is defined as 3399The type C<sig_atomic_t volatile> (or whatever is defined as
3382C<EV_ATOMIC_T>) must be atomic w.r.t. accesses from different 3400C<EV_ATOMIC_T>) must be atomic w.r.t. accesses from different
3383threads. This is not part of the specification for C<sig_atomic_t>, but is 3401threads. This is not part of the specification for C<sig_atomic_t>, but is

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines