Release Name: 1.2.0
Notes:
sleepy_penguin provides access to newer, Linux-only system calls to wait
on events from traditionally non-I/O sources. Bindings to the eventfd,
timerfd, and epoll interfaces are provided.
* http://bogomips.org/sleepy_penguin/
* sleepy.penguin@librelist.com
* git://git.bogomips.org/sleepy_penguin.git
Changes:
One convenience fix:
epoll: prevent IO objects from getting GC-ed
Users of our code may forget to keep references for their IO
objects at all, and since it's not possible for GC to mark
kernel memory, we just hold on to the IO objects for them.
We can't unmark close()d file descriptors, ever, so we don't
bother with the EPOLL_CTL_DEL case, either. Just storing IO
objects in an array using the raw descriptor as a key will allow
bounded space usage just like the in-kernel FD tables as long
as the user remembers to close descriptors themselves.
Changes:
GIT-VERSION-GEN | 2 +-
ext/sleepy_penguin/epoll.c | 8 +++++++
lib/sleepy_penguin.rb | 4 +-
test/test_epoll_gc.rb | 47 ++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 58 insertions(+), 3 deletions(-)
commit 743560f8af768a65e6f286fecf80b6ebd91be812
Author: Eric Wong
Date: Sat Jan 15 11:54:15 2011 +0000
sleepy_penguin 1.2.0 - epoll GC help
One convenience fix:
epoll: prevent IO objects from getting GC-ed
Users of our code may forget to keep references for their IO
objects at all, and since it's not possible for GC to mark
kernel memory, we just hold on to the IO objects for them.
We can't unmark close()d file descriptors, ever, so we don't
bother with the EPOLL_CTL_DEL case, either. Just storing IO
objects in an array using the raw descriptor as a key will allow
bounded space usage just like the in-kernel FD tables as long
as the user remembers to close descriptors themselves.
commit 681c7b02f1e1d9ca70a5748ef986361840746c3d
Author: Eric Wong
Date: Sat Jan 15 11:46:13 2011 +0000
epoll: prevent IO objects from getting GC-ed
Users of our code may forget to keep references for their IO
objects at all, and since it's not possible for GC to mark
kernel memory, we just hold on to the IO objects for them.
We can't unmark close()d file descriptors, ever, so we don't
bother with the EPOLL_CTL_DEL case, either. Just storing IO
objects in an array using the raw descriptor as a key will allow
bounded space usage just like the in-kernel FD tables as long
as the user remembers to close descriptors themselves.
|