[haiku-commits] r41675 - haiku/branches/developer/bonefish/signals/src/system/kernel

  • From: ingo_weinhold@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 23 May 2011 13:37:48 +0200 (CEST)

Author: bonefish
Date: 2011-05-23 13:37:48 +0200 (Mon, 23 May 2011)
New Revision: 41675
Changeset: https://dev.haiku-os.org/changeset/41675

Modified:
   haiku/branches/developer/bonefish/signals/src/system/kernel/signal.cpp
   haiku/branches/developer/bonefish/signals/src/system/kernel/thread.cpp
Log:
thread_exit(), handle_signals(): Add the required information to the SIGCHLD
signal we send to the parent.


Modified: haiku/branches/developer/bonefish/signals/src/system/kernel/signal.cpp
===================================================================
--- haiku/branches/developer/bonefish/signals/src/system/kernel/signal.cpp      
2011-05-23 11:34:52 UTC (rev 41674)
+++ haiku/branches/developer/bonefish/signals/src/system/kernel/signal.cpp      
2011-05-23 11:37:48 UTC (rev 41675)
@@ -1004,6 +1004,8 @@
                                                if ((parentHandler.sa_flags & 
SA_NOCLDSTOP) == 0) {
                                                        Signal 
childSignal(SIGCHLD, CLD_STOPPED, B_OK,
                                                                team->id);
+                                                       
childSignal.SetStatus(signal->Number());
+                                                       
childSignal.SetSendingUser(signal->SendingUser());
                                                        
send_signal_to_team_locked(parentTeam, childSignal,
                                                                0);
                                                }

Modified: haiku/branches/developer/bonefish/signals/src/system/kernel/thread.cpp
===================================================================
--- haiku/branches/developer/bonefish/signals/src/system/kernel/thread.cpp      
2011-05-23 11:34:52 UTC (rev 41674)
+++ haiku/branches/developer/bonefish/signals/src/system/kernel/thread.cpp      
2011-05-23 11:37:48 UTC (rev 41675)
@@ -1624,8 +1624,13 @@
 
                        // Send SIGCHLD to the parent as long as we still have 
its lock.
                        // This makes job control state change + signalling 
atomic.
-                       Signal childSignal(SIGCHLD, CLD_EXITED, B_OK, team->id);
-                               // TODO: Correct signal code!
+                       Signal childSignal(SIGCHLD, team->exit.reason, B_OK, 
team->id);
+                       if (team->exit.reason == CLD_EXITED) {
+                               childSignal.SetStatus(team->exit.status);
+                       } else {
+                               childSignal.SetStatus(team->exit.signal);
+                               
childSignal.SetSendingUser(team->exit.signaling_user);
+                       }
                        send_signal_to_team_locked(parent, childSignal,
                                B_DO_NOT_RESCHEDULE);
 


Other related posts:

  • » [haiku-commits] r41675 - haiku/branches/developer/bonefish/signals/src/system/kernel - ingo_weinhold