[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    [W:0.019 / U:9.836 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site