haiku/src/add-ons
Ingo Weinhold b95f6d4710 * Introduced a set of functions (thread_prepare_to_block(),
thread_block(), thread_unblock(),...) that allow a thread to wait for
  something without needing a semaphore or condition variable. It can
  simply block and another thread can unblock it. Supports timeouts and
  interrupting. Both semaphores and condition variables use this
  common mechanism, now.
* Semaphores:
  - Some simplifications due to the thread blocking mechanism.
  - Changed locking order to sem -> thread. It was the other way around
    before and when introducing the wait_for_objects() support I had
    also introduced a situation where the locking was reverse, which
    could potentially cause a dead lock on SMP systems.
  - Instead of queueing thread structures, a semaphore queues
    queued_thread entries now, which are created on the stack. The
    thread::sem structure could thus be removed.
  - Added sem_entry::net_count, which is sem_entry::count plus the
    acquisition count of all waiting threads. This number is needed in
    remove_thread_from_sem() and instead of computing it there we
    maintain it.
  - Fixed remove_thread_from_sem(). It would not unblock threads, if
    the sem count was <= 0.
  - Made sem::last_acquirer unconditional. It is actually needed for
    sem_info::latest_holder. Fixed fill_sem_info() accordingly.
  - Added some optional tracing output, though only via ktrace_printf().
* Condition variables:
  - Could be simplified significantly through the use of the thread
    blocking mechanism. Removed a good deal of unnecessary code.
  - Moved the ConditionVariableEntry "flags" parameter from Wait() to
    Add(), and adjusted all places where condition variables are used
    accordingly.
* snooze() uses thread_block_with_timeout() instead of a semaphore.
* Simplified thread interrupting in the signal and user debugger code.
  Instead of separate functions for threads waiting on a semaphore or
  condititon variable, we only have a single thread_interrupt(), now.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25099 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-22 16:22:42 +00:00
..
accelerants Committed patch by Gerald Zajac, thanks!: 2008-04-13 10:58:30 +00:00
decorators Removed the obsolete second argument ("relpath") of the Addon rule and 2007-04-07 01:27:19 +00:00
disk_scanner Removed the obsolete second argument ("relpath") of the Addon rule and 2007-04-07 01:27:19 +00:00
disk_systems * Initialize() should also cause initializing the partition which would 2008-03-17 12:53:17 +00:00
input_server * Reworked debugging feature, it's now much more simple to use, copied 2008-02-19 16:03:15 +00:00
kernel * Introduced a set of functions (thread_prepare_to_block(), 2008-04-22 16:22:42 +00:00
mail_daemon * Prefixed the variables NETWORK_LIBS, NETAPI_LIB, and 2007-08-12 22:15:10 +00:00
media * Cleanup and improvements in the debug output 2008-04-12 13:24:33 +00:00
opengl added CMAP8 support 2008-03-29 14:55:41 +00:00
print * less code in the window ctor 2008-03-30 01:22:06 +00:00
screen_savers * contributed my "Spider" screen saver to Haiku 2007-11-13 10:43:41 +00:00
tracker * I'm not sure if that puts more or less pressure on stippi, but the 2008-04-03 12:39:06 +00:00
translators * Added a more generic subtype for the source code files for automatic 2008-03-01 11:56:30 +00:00
Jamfile Beginnings of a userland intel disk system add-on. 2007-10-13 21:34:15 +00:00