From 49675b05f98a491953e5424fd8215773865ccb89 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 5 Jun 2015 09:22:04 +0000 Subject: epoll: allow :CLOEXEC instead of the long constant The long constant name conveys no additional info. Since epoll_create1 is rarely called, and a cache lookup for cold code is wasfeful --- ext/sleepy_penguin/epoll.c | 2 +- test/test_epoll.rb | 7 +++++++ test/test_epoll_io.rb | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ext/sleepy_penguin/epoll.c b/ext/sleepy_penguin/epoll.c index 423ed69..120af0c 100644 --- a/ext/sleepy_penguin/epoll.c +++ b/ext/sleepy_penguin/epoll.c @@ -82,7 +82,7 @@ static struct ep_per_thread *ept_get(VALUE self, int maxevents) static VALUE s_new(VALUE klass, VALUE _flags) { int default_flags = RB_SP_CLOEXEC(EPOLL_CLOEXEC); - int flags = rb_sp_get_flags(klass, _flags, default_flags); + int flags = rb_sp_get_flags(cEpoll, _flags, default_flags); int fd = epoll_create1(flags); VALUE rv; diff --git a/test/test_epoll.rb b/test/test_epoll.rb index 61b6e8c..48dd0ad 100644 --- a/test/test_epoll.rb +++ b/test/test_epoll.rb @@ -343,6 +343,13 @@ class TestEpoll < Testcase @ep.close io = Epoll.new(Epoll::CLOEXEC).to_io assert((io.fcntl(Fcntl::F_GETFD) & Fcntl::FD_CLOEXEC) == Fcntl::FD_CLOEXEC) + io.close + + # prettier, slower, but more memory efficient due to lack of caching + # due to the constant cache: + io = Epoll.new(:CLOEXEC).to_io + + assert((io.fcntl(Fcntl::F_GETFD) & Fcntl::FD_CLOEXEC) == Fcntl::FD_CLOEXEC) end def test_new diff --git a/test/test_epoll_io.rb b/test/test_epoll_io.rb index 56a3808..5452de1 100644 --- a/test/test_epoll_io.rb +++ b/test/test_epoll_io.rb @@ -23,7 +23,7 @@ class TestEpollIO < Testcase class EpSub < Epoll::IO def self.new - super(SleepyPenguin::Epoll::CLOEXEC) + super(:CLOEXEC) end end -- cgit v1.2.3-24-ge0c7