NAME
Linux::FD::Event - Event filehandles for Linux
VERSION
version 0.005
SYNOPSIS
use Linux::FD::Event;
my $foo = Linux::FD::Event->new(42);
if (fork) {
say $foo->get while sleep 1
}
else {
$foo->add($_) while <>;
}
METHODS
new($initial_value)
This creates an eventfd object that can be used as an event wait/notify mechanism by userspace applications, and by the kernel to notify userspace applications of events. The object contains an unsigned 64-bit integer counter that is maintained by the kernel. This counter is initialized with the value specified in the argument $initial_value.
get()
If the eventfd counter has a non-zero value, then a get
returns 8 bytes containing that value, and the counter's value is reset to zero. If the counter is zero at the time of the get
, then the call either blocks until the counter becomes non-zero, or fails with the error EAGAIN if the file handle has been made non-blocking.
add($value)
A add
call adds the 8-byte integer value $value to the counter. The maximum value that may be stored in the counter is the largest unsigned 64-bit value minus 1 (i.e., 0xfffffffffffffffe). If the addition would cause the counter's value to exceed the maximum, then the add
either blocks until a get
is performed on the file descriptor, or fails with the error EAGAIN if the file descriptor has been made non- blocking. A add
will fail with the error EINVAL if an attempt is made to write the value 0xffffffffffffffff.
AUTHOR
Leon Timmermans <leont@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2010 by Leon Timmermans.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.