1 #include <sys/cdefs.h> 2 #include "namespace.h" 3 #include <lib.h> 4 5 #include <string.h> 6 #include <unistd.h> 7 8 #ifdef __weak_alias 9 __weak_alias(_Exit, _exit) 10 #endif 11 12 __dead void _exit(status) 13 int status; 14 { 15 void (*suicide)(void); 16 message m; 17 18 memset(&m, 0, sizeof(m)); 19 m.m_lc_pm_exit.status = status; 20 _syscall(PM_PROC_NR, PM_EXIT, &m); 21 22 /* If exiting nicely through PM fails for some reason, try to 23 * commit suicide. E.g., message to PM might fail due to deadlock. 24 */ 25 suicide = (void (*)(void)) -1; 26 suicide(); 27 28 /* If committing suicide fails for some reason, hang. */ 29 for(;;) { } 30 } 31 32