diff options
author | root <root> | 2008-03-16 16:38:23 +0000 |
---|---|---|
committer | root <root> | 2008-03-16 16:38:23 +0000 |
commit | e9e46a13c50948d7ae41b2dc3c888fe323e7067b (patch) | |
tree | 7aeb1031d8f594548b280ef803661d8e6962443a | |
parent | 088c2d69406428c26aa852fc9b02289cbb5e6213 (diff) |
*** empty log message ***
-rw-r--r-- | Changes | 4 | ||||
-rw-r--r-- | ev.3 | 32 | ||||
-rw-r--r-- | ev.pod | 11 | ||||
-rw-r--r-- | ev_select.c | 8 |
4 files changed, 48 insertions, 7 deletions
@@ -1,5 +1,9 @@ Revision history for libev, a high-performance and full-featured event loop. +3.2 + - fix a 64 bit overflow issue in the select backend, + by using fd_mask instead of int for the mask. + 3.1 Thu Mar 13 13:45:22 CET 2008 - implement ev_async watchers. - only initialise signal pipe on demand. @@ -132,7 +132,7 @@ .\" ======================================================================== .\" .IX Title "EV 1" -.TH EV 1 "2008-03-08" "perl v5.10.0" "User Contributed Perl Documentation" +.TH EV 1 "2008-03-13" "perl v5.10.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -2618,6 +2618,32 @@ the constructor. \& } \& }; .Ve +.SH "OTHER LANGUAGE BINDINGS" +.IX Header "OTHER LANGUAGE BINDINGS" +Libev does not offer other language bindings itself, but bindings for a +numbe rof languages exist in the form of third-party packages. If you know +any interesting language binding in addition to the ones listed here, drop +me a note. +.IP "Perl" 4 +.IX Item "Perl" +The \s-1EV\s0 module implements the full libev \s-1API\s0 and is actually used to test +libev. \s-1EV\s0 is developed together with libev. Apart from the \s-1EV\s0 core module, +there are additional modules that implement libev-compatible interfaces +to \f(CW\*(C`libadns\*(C'\fR (\f(CW\*(C`EV::ADNS\*(C'\fR), \f(CW\*(C`Net::SNMP\*(C'\fR (\f(CW\*(C`Net::SNMP::EV\*(C'\fR) and the +\&\f(CW\*(C`libglib\*(C'\fR event core (\f(CW\*(C`Glib::EV\*(C'\fR and \f(CW\*(C`EV::Glib\*(C'\fR). +.Sp +It can be found and installed via \s-1CPAN\s0, its homepage is found at +<http://software.schmorp.de/pkg/EV>. +.IP "Ruby" 4 +.IX Item "Ruby" +Tony Arcieri has written a ruby extension that offers access to a subset +of the libev \s-1API\s0 and adds filehandle abstractions, asynchronous \s-1DNS\s0 and +more on top of it. It can be found via gem servers. Its homepage is at +<http://rev.rubyforge.org/>. +.IP "D" 4 +.IX Item "D" +Leandro Lucarella has written a D language binding (\fIev.d\fR) for libev, to +be found at <http://git.llucax.com.ar/?p=software/ev.d.git;a=summary>. .SH "MACRO MAGIC" .IX Header "MACRO MAGIC" Libev can be compiled with a variety of options, the most fundamantal @@ -3199,6 +3225,6 @@ Marc Lehmann <libev@schmorp.de>. .SH "POD ERRORS" .IX Header "POD ERRORS" Hey! \fBThe above document had some coding errors, which are explained below:\fR -.IP "Around line 2916:" 4 -.IX Item "Around line 2916:" +.IP "Around line 2951:" 4 +.IX Item "Around line 2951:" You forgot a '=back' before '=head2' @@ -1602,6 +1602,17 @@ to fall back to regular polling again even with inotify, but changes are usually detected immediately, and if the file exists there will be no polling. +=head3 ABI Issues (Largefile Support) + +Libev by default (unless the user overrides this) uses the default +compilation environment, which means that on systems with optionally +disabled large file support, you get the 32 bit version of the stat +structure. When using the library from programs that change the ABI to +use 64 bit file offsets the programs will fail. In that case you have to +compile libev with the same flags to get binary compatibility. This is +obviously the case with any flags that change the ABI, but the problem is +most noticably with ev_stat and largefile support. + =head3 Inotify When C<inotify (7)> support has been compiled into libev (generally only diff --git a/ev_select.c b/ev_select.c index b52a88d..3b06654 100644 --- a/ev_select.c +++ b/ev_select.c @@ -95,8 +95,8 @@ select_modify (EV_P_ int fd, int oev, int nev) #else - int word = fd / NFDBITS; - int mask = 1UL << (fd % NFDBITS); + int word = fd / NFDBITS; + fd_mask mask = 1UL << (fd % NFDBITS); if (expect_false (vec_max < word + 1)) { @@ -108,8 +108,8 @@ select_modify (EV_P_ int fd, int oev, int nev) vec_wo = ev_realloc (vec_wo, new_max * NFDBYTES); /* could free/malloc */ for (; vec_max < new_max; ++vec_max) - ((fd_mask *)vec_ri)[vec_max] = - ((fd_mask *)vec_wi)[vec_max] = 0; + ((fd_mask *)vec_ri) [vec_max] = + ((fd_mask *)vec_wi) [vec_max] = 0; } ((fd_mask *)vec_ri) [word] |= mask; |