process of doing a shutdown.
Initial purpose is - suppress dead process diagnostic message.
/* 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 */
}
#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.
*/
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.
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 */
}