[lkml]   [2002]   [Oct]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: Unifying epoll,aio,futexes etc. (What I really want from epoll)
On 31 Oct 2002 16:45:58 +0000
Alan Cox <> wrote:
> What is hard is multiple futex waits and livelock for that. I think it
> can be done properly but I've not sat down and designed it all out - I
> wonder what Rusty thinks.

Hmm... Never thought about it. You mean an API like:

struct futex_set *futex_set_init();
struct futex_set *futex_set_add(struct futex_set *, struct futex *);
/* Returns futex obtained. */
struct futex *futex_set_wait(struct futex_set *);
I think a naive implementation of futex_set_wait would look like:

set = futex_set
for each futex in set {
if (grab in userspace) {
close fds;
return with futex;
close old fd for futex if any
call FUTEX_FD to get fd notification of futex;
select on fds
set = fds which are ready
goto try

You could, of course, loop through the fast path once before making any
syscalls. Another optimization is to have FUTEX_FD reuse an existing fd
rather than requiring the close.

Not sure I get the point about livelock though: deadlock is possible if
apps seek multiple locks at once without care, of course.

there are those who do and those who hang on and you don't see too
many doers quoting their contemporaries. -- Larry McVoy
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:30    [from the cache]
©2003-2014 Jasper Spaans. hosted at Digital Ocean