]> Zhao Yanbai Git Server - minix.git/commitdiff
Part of wait()/waitpid() fix in revision 2629:2634 in PM - kernel
authorBen Gras <ben@minix3.org>
Wed, 25 Oct 2006 13:38:31 +0000 (13:38 +0000)
committerBen Gras <ben@minix3.org>
Wed, 25 Oct 2006 13:38:31 +0000 (13:38 +0000)
unblocks a process that has no priority (stopped with sys_nice()
and PRIO_STOP) and reschedules it if that gives it RTS flags of 0.

kernel/system/do_sigsend.c

index 9e082b6f75e3ab5db4eb8b7ea8358d8d17c5890b..5e84bc3745a3498f273a9e6b24713ab544f78fdb 100644 (file)
@@ -77,6 +77,12 @@ message *m_ptr;                      /* pointer to request message */
   rp->p_reg.sp = (reg_t) frp;
   rp->p_reg.pc = (reg_t) smsg.sm_sighandler;
 
+  /* Reschedule if necessary. */
+  if(rp->p_rts_flags & NO_PRIORITY) {
+       rp->p_rts_flags &= ~NO_PRIORITY;
+       if (rp->p_rts_flags == 0) lock_enqueue(rp);
+  } else kprintf("system: warning: sigsend a running process\n");
+
   return(OK);
 }