Merged signals-merge branch into trunk with the following changes:

* Reorganized the kernel locking related to threads and teams.
* We now discriminate correctly between process and thread signals. Signal
  handlers have been moved to teams. Fixes #5679.
* Implemented real-time signal support, including signal queuing, SA_SIGINFO
  support, sigqueue(), sigwaitinfo(), sigtimedwait(), waitid(), and the addition
  of the real-time signal range. Closes #1935 and #2695.
* Gave SIGBUS a separate signal number. Fixes #6704.
* Implemented <time.h> clock and timer support, and fixed/completed alarm() and
  [set]itimer(). Closes #5682.
* Implemented support for thread cancellation. Closes #5686.
* Moved send_signal() from <signal.h> to <OS.h>. Fixes #7554.
* Lots over smaller more or less related changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42116 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2011-06-12 00:00:23 +00:00
parent ccd31b93f1
commit 24df65921b
235 changed files with 14975 additions and 6594 deletions
+10 -10
View File
@@ -56,18 +56,18 @@ public:
void Publish(const void* object,
const char* objectType);
void Unpublish(bool threadsLocked = false);
void Unpublish(bool schedulerLocked = false);
inline void NotifyOne(bool threadsLocked = false,
inline void NotifyOne(bool schedulerLocked = false,
status_t result = B_OK);
inline void NotifyAll(bool threadsLocked = false,
inline void NotifyAll(bool schedulerLocked = false,
status_t result = B_OK);
static void NotifyOne(const void* object,
bool threadsLocked = false,
bool schedulerLocked = false,
status_t result = B_OK);
static void NotifyAll(const void* object,
bool threadsLocked = false,
bool schedulerLocked = false,
status_t result = B_OK);
// (both methods) caller must ensure that
// the variable is not unpublished
@@ -86,7 +86,7 @@ public:
void Dump() const;
private:
void _Notify(bool all, bool threadsLocked,
void _Notify(bool all, bool schedulerLocked,
status_t result);
void _NotifyLocked(bool all, status_t result);
@@ -124,16 +124,16 @@ ConditionVariableEntry::~ConditionVariableEntry()
inline void
ConditionVariable::NotifyOne(bool threadsLocked, status_t result)
ConditionVariable::NotifyOne(bool schedulerLocked, status_t result)
{
_Notify(false, threadsLocked, result);
_Notify(false, schedulerLocked, result);
}
inline void
ConditionVariable::NotifyAll(bool threadsLocked, status_t result)
ConditionVariable::NotifyAll(bool schedulerLocked, status_t result)
{
_Notify(true, threadsLocked, result);
_Notify(true, schedulerLocked, result);
}