haiku/headers/private
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
..
app * Reorganized the passwd and group support: A dedicated thread in the 2008-04-17 16:19:18 +00:00
audio
bluetooth Add headers for the authentication and scan mode commands 2008-03-30 21:43:59 +00:00
debug
disk_scanner
drivers Fixed ksocket header as we don't use a socket module anymore. 2008-04-19 23:58:26 +00:00
firewire Applied patch by JiSheng Zhang: 2008-04-11 17:35:11 +00:00
fs_shell * Reorganized the FS interface a little: 2008-04-05 23:05:16 +00:00
graphics This should have been part of r24675. Not sure what happened as I specified 2008-03-30 11:42:32 +00:00
input Slightly increased the default key repeat rate to make it at least 2008-02-22 10:53:27 +00:00
interface added missing header 2008-04-11 08:29:54 +00:00
kernel * Introduced a set of functions (thread_prepare_to_block(), 2008-04-22 16:22:42 +00:00
libroot * Moved private passwd/group/shadow passwd limit constants from 2008-04-19 00:10:51 +00:00
mail
media put enum to appropiate place as pointed out by marcus 2008-03-31 18:14:43 +00:00
midi
net * Removed the old net_stack driver code, and the kernel socket interface. 2008-04-19 12:42:25 +00:00
opengl/GL/internal
print Get first and last page from job settings instead of print_file_header. In print_filer_header first_page is an offset into the spool file (the field is unused or reserved on BeOS R5 and is always -1) and page_count is the number of pages in the spool file. In the job settings first/last page is the page number of the first/last page as specified in the page setup dialog. 2008-03-23 18:01:13 +00:00
runtime_loader * Decide whether to use BeOS style symbol resolution at run time 2008-03-23 19:43:41 +00:00
screen_saver
shared Added MethodDeleter class, which calls a specified method on the object 2008-04-20 02:54:38 +00:00
storage * added a PrintToStream() method 2008-02-02 12:38:15 +00:00
syslog_daemon
textencoding
tracker
usb_vision
userlandfs