From 3181f3b04c7fe871548d127e6598d589a4800b17 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Thu, 30 Nov 2017 19:39:16 -0600 Subject: favor 'select' over 'poll' on Genode (#6821) The 'poll' of the Genode C runtime is a wrapper over 'select'. --- lib/pure/ioselects/ioselectors_select.nim | 28 +++++++++++++++------------- lib/pure/selectors.nim | 2 ++ 2 files changed, 17 insertions(+), 13 deletions(-) (limited to 'lib') diff --git a/lib/pure/ioselects/ioselectors_select.nim b/lib/pure/ioselects/ioselectors_select.nim index 017d08117..c787f0070 100644 --- a/lib/pure/ioselects/ioselectors_select.nim +++ b/lib/pure/ioselects/ioselectors_select.nim @@ -279,8 +279,9 @@ proc updateHandle*[T](s: Selector[T], fd: SocketHandle, inc(s.count) pkey.events = events -proc unregister*[T](s: Selector[T], fd: SocketHandle) = +proc unregister*[T](s: Selector[T], fd: SocketHandle|int) = s.withSelectLock(): + let fd = fd.SocketHandle var pkey = s.getKey(fd) if Event.Read in pkey.events: IOFD_CLR(fd, addr s.rSet) @@ -438,16 +439,17 @@ template withData*[T](s: Selector[T], fd: SocketHandle|int, value, body1, body2: untyped) = mixin withSelectLock s.withSelectLock(): - var value: ptr T - let fdi = int(fd) - var i = 0 - while i < FD_SETSIZE: - if s.fds[i].ident == fdi: - value = addr(s.fds[i].data) - break - inc(i) - if i != FD_SETSIZE: - body1 - else: - body2 + block: + var value: ptr T + let fdi = int(fd) + var i = 0 + while i < FD_SETSIZE: + if s.fds[i].ident == fdi: + value = addr(s.fds[i].data) + break + inc(i) + if i != FD_SETSIZE: + body1 + else: + body2 diff --git a/lib/pure/selectors.nim b/lib/pure/selectors.nim index 3a7d1523f..518cc4bd5 100644 --- a/lib/pure/selectors.nim +++ b/lib/pure/selectors.nim @@ -303,6 +303,8 @@ else: include ioselects/ioselectors_select elif defined(solaris): include ioselects/ioselectors_poll # need to replace it with event ports + elif defined(genode): + include ioselects/ioselectors_select # TODO: use the native VFS layer else: include ioselects/ioselectors_poll -- cgit 1.4.1-2-gfad0 r>
path: root/build_all.sh
blob: 333814d62dc410c693d8fa6cb2764f2c35936d05 (plain) (tree)
1
2
3
4
5
6
7
8
9