commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] Hurd branch, rbraun/select_timeout, updated. hurd-release-0-2-3444


From: Richard Braun
Subject: [SCM] Hurd branch, rbraun/select_timeout, updated. hurd-release-0-2-3444-g40fe717
Date: Mon, 30 Jul 2012 22:03:23 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Hurd".

The branch, rbraun/select_timeout has been updated
       via  40fe717ba9093c0c893d9ea44673e46a6f9e0c7d (commit)
      from  8e6e81285f9c8f83bb0394d75b48804d4bf9a28d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 40fe717ba9093c0c893d9ea44673e46a6f9e0c7d
Author: Richard Braun <address@hidden>
Date:   Mon Jul 30 23:56:26 2012 +0200

    Another attempt to fix timeout handling
    
    Draining the message queue is dumb. Messages could arrive afterwards,
    and still cause a deadlock if the message queue is full. Instead, make
    the wakeup call (cproc_ready) really non-blocking. As only one message
    is actually required to wake up a thread, limit the message queue to
    one. If a message arrives after a timeout, it will immediately wake the
    next blocking of the target thread. Spurious wakeups are expected, and
    limiting the message queue size reduces the maximum overhead they can
    cause.
    
    Unfortunately, this isn't enough. There are two other fundamental issues
    to solve. First, both the blocking thread (on timeout) and the sender
    (on wakeup) can remove the target thread from condition queues, which
    means a double removal could occur. Second, there is no simple way to
    remove an arbitrary thread from a queue, because they are singly linked.
    
    The next changes should replace the existing queue code with a doubly
    linked list, and serialize removal from condition queues in the target
    threads only, whether after timeout or wakeup.

-----------------------------------------------------------------------

Summary of changes:
 libthreads/cancel-cond.c       |   17 ++----------
 libthreads/cprocs.c            |   53 ++++++++++++++++------------------------
 libthreads/cthread_internals.h |   13 ----------
 libthreads/cthreads.h          |    2 +-
 4 files changed, 25 insertions(+), 60 deletions(-)


hooks/post-receive
-- 
Hurd



reply via email to

[Prev in Thread] Current Thread [Next in Thread]