fix epoll single pass code and add wait-exclusive flag
authorDavide Libenzi <davidel@xmailserver.org>
Tue, 15 May 2007 08:40:41 +0000 (01:40 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Tue, 15 May 2007 15:53:59 +0000 (08:53 -0700)
commitd47de16c7221968d3eab899d7540efa5ba77af5a
tree289c3dc8e4b3121a9a4b1846ae9acbd355b4b541
parentfaa8b6c3c2e1454175609167a25ae525d075f045
fix epoll single pass code and add wait-exclusive flag

Fixes the epoll single pass code.  During the unlocked event delivery (to
userspace) code, the poll callback can re-issue new events, and we must
receive them correctly.  Since we loop in a lockless fashion, we want to be
O(nready), and we don't want to flash on/off the spinlock for every event, we
have the poll callback to use a secondary list to queue events while we're
inside the event delivery loop.  The rw_semaphore has been turned into a
mutex.  This patch also adds the wait-exclusive flag, as suggested by Davi
Arnaut.

Signed-off-by: Davide Libenzi <davidel@xmailserver.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/eventpoll.c