diff options
| -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; | 
