lib/PublicInbox/DS.pm | 2 +- lib/PublicInbox/DSKQXS.pm | 2 +- lib/PublicInbox/DSPoll.pm | 2 +- t/ds-poll.t | 20 ++++++++++---------- diff --git a/lib/PublicInbox/DS.pm b/lib/PublicInbox/DS.pm index 08f4e9e8a3389937d9dde1fad0d1e50d687e4202..a8700bc53e8c417e7be1bf725ed51e7337e852ba 100644 --- a/lib/PublicInbox/DS.pm +++ b/lib/PublicInbox/DS.pm @@ -151,7 +151,7 @@ for (qw(DSKQXS DSPoll)) { $cls = "PublicInbox::$_"; last if eval "require $cls"; } - $cls->import; + $cls->import(qw(epoll_ctl epoll_wait)); $Epoll = $cls->new; } *EventLoop = *EpollEventLoop; diff --git a/lib/PublicInbox/DSKQXS.pm b/lib/PublicInbox/DSKQXS.pm index 38e13446888ea893ec88f8091e6d1a156c460604..364df3d68cd77838dfe56cb8598ea854e4e12488 100644 --- a/lib/PublicInbox/DSKQXS.pm +++ b/lib/PublicInbox/DSKQXS.pm @@ -17,7 +17,7 @@ use parent qw(IO::KQueue); use parent qw(Exporter); use IO::KQueue; use PublicInbox::Syscall qw(EPOLLONESHOT EPOLLIN EPOLLOUT EPOLL_CTL_DEL); -our @EXPORT = qw(epoll_ctl epoll_wait); +our @EXPORT_OK = qw(epoll_ctl epoll_wait); my $owner_pid = -1; # kqueue is close-on-fork (yes, fork, not exec) # map EPOLL* bits to kqueue EV_* flags for EV_SET diff --git a/lib/PublicInbox/DSPoll.pm b/lib/PublicInbox/DSPoll.pm index e65640a8c755afb025d1a5a27c773a30ecc18f1d..ce7c2faccb442db413f2234c401a82d6f9aaf998 100644 --- a/lib/PublicInbox/DSPoll.pm +++ b/lib/PublicInbox/DSPoll.pm @@ -14,7 +14,7 @@ use warnings; use parent qw(Exporter); use IO::Poll; use PublicInbox::Syscall qw(EPOLLONESHOT EPOLLIN EPOLLOUT EPOLL_CTL_DEL); -our @EXPORT = qw(epoll_ctl epoll_wait); +our @EXPORT_OK = qw(epoll_ctl epoll_wait); sub new { bless {}, $_[0] } # fd => events diff --git a/t/ds-poll.t b/t/ds-poll.t index a397ee0612e90d8f007847c7b2e0604824f386ef..c9dcdd22cf86607f5905cc2981785b15d14deef7 100644 --- a/t/ds-poll.t +++ b/t/ds-poll.t @@ -14,31 +14,31 @@ my ($r, $w, $x, $y); pipe($r, $w) or die; pipe($x, $y) or die; -is(epoll_ctl($p, EPOLL_CTL_ADD, fileno($r), EPOLLIN), 0, 'add EPOLLIN'); +is($p->epoll_ctl(EPOLL_CTL_ADD, fileno($r), EPOLLIN), 0, 'add EPOLLIN'); my $events = []; -my $n = epoll_wait($p, 9, 0, $events); +my $n = $p->epoll_wait(9, 0, $events); is_deeply($events, [], 'no events set'); is($n, 0, 'nothing ready, yet'); -is(epoll_ctl($p, EPOLL_CTL_ADD, fileno($w), EPOLLOUT|EPOLLONESHOT), 0, +is($p->epoll_ctl(EPOLL_CTL_ADD, fileno($w), EPOLLOUT|EPOLLONESHOT), 0, 'add EPOLLOUT|EPOLLONESHOT'); -$n = epoll_wait($p, 9, -1, $events); +$n = $p->epoll_wait(9, -1, $events); is($n, 1, 'got POLLOUT event'); is($events->[0]->[0], fileno($w), '$w ready'); -$n = epoll_wait($p, 9, 0, $events); +$n = $p->epoll_wait(9, 0, $events); is($n, 0, 'nothing ready after oneshot'); is_deeply($events, [], 'no events set after oneshot'); syswrite($w, '1') == 1 or die; for my $t (0..1) { - $n = epoll_wait($p, 9, $t, $events); + $n = $p->epoll_wait(9, $t, $events); is($events->[0]->[0], fileno($r), "level-trigger POLLIN ready #$t"); is($n, 1, "only event ready #$t"); } syswrite($y, '1') == 1 or die; -is(epoll_ctl($p, EPOLL_CTL_ADD, fileno($x), EPOLLIN|EPOLLONESHOT), 0, +is($p->epoll_ctl(EPOLL_CTL_ADD, fileno($x), EPOLLIN|EPOLLONESHOT), 0, 'EPOLLIN|EPOLLONESHOT add'); -is(epoll_wait($p, 9, -1, $events), 2, 'epoll_wait has 2 ready'); +is($p->epoll_wait(9, -1, $events), 2, 'epoll_wait has 2 ready'); my @fds = sort(map { $_->[0] } @$events); my @exp = sort((fileno($r), fileno($x))); is_deeply(\@fds, \@exp, 'got both ready FDs'); @@ -50,8 +50,8 @@ SKIP: { if ($cls ne 'PublicInbox::DSPoll') { skip "$cls doesn't handle EPOLL_CTL_DEL", 2; } - is(epoll_ctl($p, EPOLL_CTL_DEL, fileno($r), 0), 0, 'EPOLL_CTL_DEL OK'); - $n = epoll_wait($p, 9, 0, $events); + is($p->epoll_ctl(EPOLL_CTL_DEL, fileno($r), 0), 0, 'EPOLL_CTL_DEL OK'); + $n = $p->epoll_wait(9, 0, $events); is($n, 0, 'nothing ready after EPOLL_CTL_DEL'); };