|
About ::
TODO ::
Blog ::
RSS ::
Old blog ::
Projects ::
GIT ::
Gallery ::
Notes
Fri, 16 Mar 2007
Climbing evening.
Asyncfd by Davide Libenzi got ring buffer.
For example I do not see how to solve second problem from above list, since kevent has (had) own queue of events, which were copied from the queue when userspace updated indexes, so if userspace ring is full, they would not be lost, but existing mechanism does not have such a queue at all, events are just blindly copied and thus can be lost when ring is full. First problem must be solved too to support tricky usage (as Davide mentioned in patch description, USB calls might enp up calling it from interrupt context). One of the problems Davide solves either by using locked userspace memory (which is a big no-no), or by using kernel buffers and read(), which is unconvenient and just
breaks the whole idea of ring buffer - having multiple events in userspace without
additional (only waiting) syscalls and having syscalls as thread cancellation points
without additional structures shared between threads.Timerfd implementation will likely rise the same questions from Ulrich Drepper as my kevent timers - they are not needed, instead POSIX timers support should be extended (although I always provided two patches - for POSIX timers and own API, maybe Davide will use both too). But POSIX timer events become ready in softirq context, so it is impossible to use above ring buffer implementation for them. Timerfd code also uses long type in structures shared between userspace and kernelspace,
which does not work on x86_64 when userspace is 32bit.Yes, I know, I'm a bastard moron, since I write only bad things in my blog, but hey, I was not in Cc: list :) Actually I'm glad people started to work in that area after kevent, that means that my ideas were correct and eventually Linux will adopt a good solution for that problems. I think Davide will resolve all issues quickly. /devel/kevent :: Link / Comments ()
Super optimized multidimensional trie implementation. /devel/other :: Link / Comments () |