* The kernel now remembers the signal that killed a thread (if it was killed).

* As suggested by Korli, the signal is now encoded in the "reason" field of
  wait_for_child().
* waitpid() now sets the status passed in so that the signal can be read out
  (but it still doesn't do it's full job).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17338 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2006-05-05 15:33:34 +00:00
parent ac3b691a1d
commit 2bbc6df8dc
5 changed files with 27 additions and 17 deletions
+4 -6
View File
@@ -30,10 +30,6 @@ extern spinlock team_spinlock;
#define RELEASE_TEAM_LOCK() release_spinlock(&team_spinlock)
enum additional_thread_state {
// THREAD_STATE_READY = 0, // ready to run
// THREAD_STATE_RUNNING, // running right now somewhere
// THREAD_STATE_WAITING, // blocked on something
// THREAD_STATE_SUSPENDED, // suspended, not in queue
THREAD_STATE_FREE_ON_RESCHED = 7, // free the thread structure upon reschedule
// THREAD_STATE_BIRTH // thread is being created
};
@@ -55,7 +51,8 @@ struct death_entry {
team_id team;
thread_id thread;
status_t status;
uint32 reason;
uint16 reason;
uint16 signal;
};
struct process_session {
@@ -174,7 +171,8 @@ struct thread {
struct {
sem_id sem;
status_t status;
uint32 reason;
uint16 reason;
uint16 signal;
struct list waiters;
} exit;