Files | Admin

Notes:

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.