On Tue, 27 Feb 2007, Evgeniy Polyakov wrote: > I probably selected wrong words to desribe, here is in details how > kevent differs from epoll. > > Polling case need to perform additional check before event can be copied > to userspace, that check must be done for each even being copied. > Kevent does not need that (it needs it for poll emulation) - if event is > ready, then it is ready.
That could be changed too. The "void *key" doesn't need to be NULL. Wake ups to f_op->poll() waiters can use that to send ready events directly, avoiding an extra f_op->poll() to fetch them. Infrastructure is already there, just need a big patch to do it everywhere ;) > Kevent works slightly different - it does not perform additional check > for readiness (although it can, and it does in poll notifications), if > event is marked as ready, parked in waiting syscal thread is awakened > and event is copied to userspace. > Also waiting syscall is awakened through one queue - event is added > and wake_up() is called, while in epoll() there are two queues. The really ancient version of epoll (called /dev/epoll at that time) was doing a very similar thing. Was adding custom plugs is all over the places where we wanted to get events from, and was collecting them w/out resorting to extra f_op->poll(). Event masks going straight through an event buffer. The reason why the current design of epoll was chosen, was because: o Was not requiring custom plus all over the places o Was working with the current kernel abstractions as-is (though f_op->poll) - Davide - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/