]> Zhao Yanbai Git Server - minix.git/commitdiff
Added shutdown_started global variable. If it's set, we're in the
authorBen Gras <ben@minix3.org>
Thu, 8 Sep 2005 14:31:23 +0000 (14:31 +0000)
committerBen Gras <ben@minix3.org>
Thu, 8 Sep 2005 14:31:23 +0000 (14:31 +0000)
process of doing a shutdown.

Initial purpose is - suppress dead process diagnostic message.

kernel/glo.h
kernel/main.c
kernel/proc.c

index 7e5d7681367ed85b26f21314d40909ce39c0e838..bbc3e8383c1ae4ab48195988143fc252f484a736 100755 (executable)
@@ -16,6 +16,7 @@
 
 /* Variables relating to shutting down MINIX. */
 EXTERN char kernel_exception;          /* TRUE after system exceptions */
+EXTERN char shutdown_started;          /* TRUE after shutdowns / reboots */
 
 /* Kernel information structures. This groups vital kernel information. */
 EXTERN phys_bytes aout;                        /* address of a.out headers */
index 641e633511d330db26e1d19ab2d2e1c959350f98..5dbc2546738873c5834cc50fd9f2c0eae4f4dbaa 100755 (executable)
@@ -155,6 +155,9 @@ PUBLIC void main()
   }
 #endif
 
+  /* We're definitely not shutting down. */
+  shutdown_started = 0;
+
   /* MINIX is now ready. All boot image processes are on the ready queue.
    * Return to the assembly code to start running the current process. 
    */
@@ -213,6 +216,9 @@ int how;
           send_sig(proc_nr(rp), SIGKSTOP);
   }
 
+  /* We're shutting down. Diagnostics may behave differently now. */
+  shutdown_started = 1;
+
   /* Notify system processes of the upcoming shutdown and allow them to be 
    * scheduled by setting a watchog timer that calls shutdown(). The timer 
    * argument passes the shutdown status. 
index 3b49c67f19b3da0a2afab0ddf2c02af8f2c64794..8165dc33de9b75d5e9c5d117cef5a3b08226bb32 100755 (executable)
@@ -149,8 +149,8 @@ message *m_ptr;                     /* pointer to message in the caller's space */
           return(ECALLDENIED);         /* call denied by ipc mask */
       }
 
-      if (isemptyn(src_dst)) {
-          kprintf("[sys_call: dead dest; %d, %d, %d] ", 
+      if (isemptyn(src_dst) && !shutdown_started) {
+          kprintf("sys_call: dead dest; %d, %d, %d\n", 
               function, proc_nr(caller_ptr), src_dst);
           return(EDEADDST);            /* cannot send to the dead */
       }