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

Comparing libev/ev.pod (file contents):
Revision 1.305 by root, Thu Oct 14 05:07:04 2010 UTC vs.
Revision 1.309 by root, Thu Oct 21 09:23:21 2010 UTC

439of course I<doesn't>, and epoll just loves to report events for totally 439of course I<doesn't>, and epoll just loves to report events for totally
440I<different> file descriptors (even already closed ones, so one cannot 440I<different> file descriptors (even already closed ones, so one cannot
441even remove them from the set) than registered in the set (especially 441even remove them from the set) than registered in the set (especially
442on SMP systems). Libev tries to counter these spurious notifications by 442on SMP systems). Libev tries to counter these spurious notifications by
443employing an additional generation counter and comparing that against the 443employing an additional generation counter and comparing that against the
444events to filter out spurious ones, recreating the set when required. 444events to filter out spurious ones, recreating the set when required. Last
445not least, it also refuses to work with some file descriptors which work
446perfectly fine with C<select> (files, many character devices...).
445 447
446While stopping, setting and starting an I/O watcher in the same iteration 448While stopping, setting and starting an I/O watcher in the same iteration
447will result in some caching, there is still a system call per such 449will result in some caching, there is still a system call per such
448incident (because the same I<file descriptor> could point to a different 450incident (because the same I<file descriptor> could point to a different
449I<file description> now), so its best to avoid that. Also, C<dup ()>'ed 451I<file description> now), so its best to avoid that. Also, C<dup ()>'ed
952These two functions can be used to associate arbitrary data with a loop, 954These two functions can be used to associate arbitrary data with a loop,
953and are intended solely for the C<invoke_pending_cb>, C<release> and 955and are intended solely for the C<invoke_pending_cb>, C<release> and
954C<acquire> callbacks described above, but of course can be (ab-)used for 956C<acquire> callbacks described above, but of course can be (ab-)used for
955any other purpose as well. 957any other purpose as well.
956 958
957=item ev_loop_verify (loop) 959=item ev_verify (loop)
958 960
959This function only does something when C<EV_VERIFY> support has been 961This function only does something when C<EV_VERIFY> support has been
960compiled in, which is the default for non-minimal builds. It tries to go 962compiled in, which is the default for non-minimal builds. It tries to go
961through all internal structures and checks them for validity. If anything 963through all internal structures and checks them for validity. If anything
962is found to be inconsistent, it will print an error message to standard 964is found to be inconsistent, it will print an error message to standard
3389Associates a different C<struct ev_loop> with this watcher. You can only 3391Associates a different C<struct ev_loop> with this watcher. You can only
3390do this when the watcher is inactive (and not pending either). 3392do this when the watcher is inactive (and not pending either).
3391 3393
3392=item w->set ([arguments]) 3394=item w->set ([arguments])
3393 3395
3394Basically the same as C<ev_TYPE_set>, with the same arguments. Must be 3396Basically the same as C<ev_TYPE_set>, with the same arguments. Either this
3395called at least once. Unlike the C counterpart, an active watcher gets 3397method or a suitable start method must be called at least once. Unlike the
3396automatically stopped and restarted when reconfiguring it with this 3398C counterpart, an active watcher gets automatically stopped and restarted
3397method. 3399when reconfiguring it with this method.
3398 3400
3399=item w->start () 3401=item w->start ()
3400 3402
3401Starts the watcher. Note that there is no C<loop> argument, as the 3403Starts the watcher. Note that there is no C<loop> argument, as the
3402constructor already stores the event loop. 3404constructor already stores the event loop.
3403 3405
3406=item w->start ([arguments])
3407
3408Instead of calling C<set> and C<start> methods separately, it is often
3409convenient to wrap them in one call. Uses the same type of arguments as
3410the configure C<set> method of the watcher.
3411
3404=item w->stop () 3412=item w->stop ()
3405 3413
3406Stops the watcher if it is active. Again, no C<loop> argument. 3414Stops the watcher if it is active. Again, no C<loop> argument.
3407 3415
3408=item w->again () (C<ev::timer>, C<ev::periodic> only) 3416=item w->again () (C<ev::timer>, C<ev::periodic> only)
3420 3428
3421=back 3429=back
3422 3430
3423=back 3431=back
3424 3432
3425Example: Define a class with an IO and idle watcher, start one of them in 3433Example: Define a class with two I/O and idle watchers, start the I/O
3426the constructor. 3434watchers in the constructor.
3427 3435
3428 class myclass 3436 class myclass
3429 { 3437 {
3430 ev::io io ; void io_cb (ev::io &w, int revents); 3438 ev::io io ; void io_cb (ev::io &w, int revents);
3439 ev::io2 io2 ; void io2_cb (ev::io &w, int revents);
3431 ev::idle idle; void idle_cb (ev::idle &w, int revents); 3440 ev::idle idle; void idle_cb (ev::idle &w, int revents);
3432 3441
3433 myclass (int fd) 3442 myclass (int fd)
3434 { 3443 {
3435 io .set <myclass, &myclass::io_cb > (this); 3444 io .set <myclass, &myclass::io_cb > (this);
3445 io2 .set <myclass, &myclass::io2_cb > (this);
3436 idle.set <myclass, &myclass::idle_cb> (this); 3446 idle.set <myclass, &myclass::idle_cb> (this);
3437 3447
3438 io.start (fd, ev::READ); 3448 io.set (fd, ev::WRITE); // configure the watcher
3449 io.start (); // start it whenever convenient
3450
3451 io2.start (fd, ev::READ); // set + start in one call
3439 } 3452 }
3440 }; 3453 };
3441 3454
3442 3455
3443=head1 OTHER LANGUAGE BINDINGS 3456=head1 OTHER LANGUAGE BINDINGS
4027The default is C<1>, unless C<EV_FEATURES> overrides it, in which case it 4040The default is C<1>, unless C<EV_FEATURES> overrides it, in which case it
4028will be C<0>. 4041will be C<0>.
4029 4042
4030=item EV_VERIFY 4043=item EV_VERIFY
4031 4044
4032Controls how much internal verification (see C<ev_loop_verify ()>) will 4045Controls how much internal verification (see C<ev_verify ()>) will
4033be done: If set to C<0>, no internal verification code will be compiled 4046be done: If set to C<0>, no internal verification code will be compiled
4034in. If set to C<1>, then verification code will be compiled in, but not 4047in. If set to C<1>, then verification code will be compiled in, but not
4035called. If set to C<2>, then the internal verification code will be 4048called. If set to C<2>, then the internal verification code will be
4036called once per loop, which can slow down libev. If set to C<3>, then the 4049called once per loop, which can slow down libev. If set to C<3>, then the
4037verification code will be called very frequently, which will slow down 4050verification code will be called very frequently, which will slow down
4624watchers. 4637watchers.
4625 4638
4626=item C<double> must hold a time value in seconds with enough accuracy 4639=item C<double> must hold a time value in seconds with enough accuracy
4627 4640
4628The type C<double> is used to represent timestamps. It is required to 4641The type C<double> is used to represent timestamps. It is required to
4629have at least 51 bits of mantissa (and 9 bits of exponent), which is good 4642have at least 51 bits of mantissa (and 9 bits of exponent), which is
4630enough for at least into the year 4000. This requirement is fulfilled by 4643good enough for at least into the year 4000 with millisecond accuracy
4644(the design goal for libev). This requirement is overfulfilled by
4631implementations implementing IEEE 754, which is basically all existing 4645implementations using IEEE 754, which is basically all existing ones. With
4632ones. With IEEE 754 doubles, you get microsecond accuracy until at least 4646IEEE 754 doubles, you get microsecond accuracy until at least 2200.
46332200.
4634 4647
4635=back 4648=back
4636 4649
4637If you know of other additional requirements drop me a note. 4650If you know of other additional requirements drop me a note.
4638 4651

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines