diff options
author | Mitchell Horne <mhorne@FreeBSD.org> | 2022-02-22 00:16:07 +0000 |
---|---|---|
committer | Mitchell Horne <mhorne@FreeBSD.org> | 2022-02-22 00:16:07 +0000 |
commit | 7b0a665d72c0fdc1bc15b87bb47dff4d895e32a9 (patch) | |
tree | 3a716b8e14a7b330089a681e18972e91db6b5c93 /sbin/shutdown | |
parent | 5a8fceb3bd9f478d66dcaa4582a4faa989d66a97 (diff) | |
download | src-7b0a665d72c0fdc1bc15b87bb47dff4d895e32a9.tar.gz src-7b0a665d72c0fdc1bc15b87bb47dff4d895e32a9.zip |
boottrace: annotate init and shutdown utilities
Add boottrace annotations to record events in init(8), shutdown(8), and
reboot(8).
Sponsored by: NetApp, Inc.
Sponsored by: Klara, Inc.
X-NetApp-PR: #23
Differential Revision: https://reviews.freebsd.org/D31928
Diffstat (limited to 'sbin/shutdown')
-rw-r--r-- | sbin/shutdown/shutdown.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/sbin/shutdown/shutdown.c b/sbin/shutdown/shutdown.c index 67a433b8edde..76e02d1fd6b1 100644 --- a/sbin/shutdown/shutdown.c +++ b/sbin/shutdown/shutdown.c @@ -44,9 +44,10 @@ static char sccsid[] = "@(#)shutdown.c 8.4 (Berkeley) 4/28/95"; __FBSDID("$FreeBSD$"); #include <sys/param.h> -#include <sys/time.h> +#include <sys/boottrace.h> #include <sys/resource.h> #include <sys/syslog.h> +#include <sys/time.h> #include <ctype.h> #include <err.h> @@ -221,10 +222,13 @@ poweroff: } mbuflen = strlen(mbuf); - if (offset) + if (offset) { + BOOTTRACE("Shutdown at %s", ctime(&shuttime)); (void)printf("Shutdown at %.24s.\n", ctime(&shuttime)); - else + } else { + BOOTTRACE("Shutdown NOW!"); (void)printf("Shutdown NOW!\n"); + } if (!(whom = getlogin())) whom = (pw = getpwuid(getuid())) ? pw->pw_name : "???"; @@ -360,12 +364,16 @@ die_you_gravy_sucking_pig_dog(void) { char *empty_environ[] = { NULL }; + BOOTTRACE("%s by %s", + doreboot ? "reboot" : dohalt ? "halt" : dopower ? "power-down" : + docycle ? "power-cycle" : "shutdown", whom); syslog(LOG_NOTICE, "%s by %s: %s", doreboot ? "reboot" : dohalt ? "halt" : dopower ? "power-down" : docycle ? "power-cycle" : "shutdown", whom, mbuf); (void)printf("\r\nSystem shutdown time has arrived\007\007\r\n"); if (killflg) { + BOOTTRACE("fake shutdown..."); (void)printf("\rbut you'll have to do it yourself\r\n"); exit(0); } @@ -383,6 +391,7 @@ die_you_gravy_sucking_pig_dog(void) (void)printf("\nkill -HUP 1\n"); #else if (!oflag) { + BOOTTRACE("signal to init(8)..."); (void)kill(1, doreboot ? SIGINT : /* reboot */ dohalt ? SIGUSR1 : /* halt */ dopower ? SIGUSR2 : /* power-down */ @@ -390,6 +399,7 @@ die_you_gravy_sucking_pig_dog(void) SIGTERM); /* single-user */ } else { if (doreboot) { + BOOTTRACE("exec reboot(8) -l..."); execle(_PATH_REBOOT, "reboot", "-l", nosync, (char *)NULL, empty_environ); syslog(LOG_ERR, "shutdown: can't exec %s: %m.", @@ -397,6 +407,7 @@ die_you_gravy_sucking_pig_dog(void) warn(_PATH_REBOOT); } else if (dohalt) { + BOOTTRACE("exec halt(8) -l..."); execle(_PATH_HALT, "halt", "-l", nosync, (char *)NULL, empty_environ); syslog(LOG_ERR, "shutdown: can't exec %s: %m.", @@ -404,6 +415,7 @@ die_you_gravy_sucking_pig_dog(void) warn(_PATH_HALT); } else if (dopower) { + BOOTTRACE("exec halt(8) -l -p..."); execle(_PATH_HALT, "halt", "-l", "-p", nosync, (char *)NULL, empty_environ); syslog(LOG_ERR, "shutdown: can't exec %s: %m.", @@ -417,6 +429,7 @@ die_you_gravy_sucking_pig_dog(void) _PATH_HALT); warn(_PATH_HALT); } + BOOTTRACE("SIGTERM to init(8)..."); (void)kill(1, SIGTERM); /* to single-user */ } #endif |