[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.64.0702271107420.3692@alien.or.mcafeemobile.com>
Date: Tue, 27 Feb 2007 11:20:48 -0800 (PST)
From: Davide Libenzi <davidel@...ilserver.org>
To: Evgeniy Polyakov <johnpol@....mipt.ru>
cc: Ingo Molnar <mingo@...e.hu>, Ulrich Drepper <drepper@...hat.com>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Linus Torvalds <torvalds@...ux-foundation.org>,
Arjan van de Ven <arjan@...radead.org>,
Christoph Hellwig <hch@...radead.org>,
Andrew Morton <akpm@....com.au>,
Alan Cox <alan@...rguk.ukuu.org.uk>,
Zach Brown <zach.brown@...cle.com>,
"David S. Miller" <davem@...emloft.net>,
Suparna Bhattacharya <suparna@...ibm.com>,
Jens Axboe <jens.axboe@...cle.com>,
Thomas Gleixner <tglx@...utronix.de>
Subject: Re: [patch 00/13] Syslets, "Threadlets", generic AIO support, v3
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 majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists