From owner-svn-src-head@freebsd.org Fri Jan 26 17:13:01 2018 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E5959EB7939; Fri, 26 Jan 2018 17:13:00 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 984D77B9F2; Fri, 26 Jan 2018 17:13:00 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 932E31E6FD; Fri, 26 Jan 2018 17:13:00 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w0QHD08c082897; Fri, 26 Jan 2018 17:13:00 GMT (envelope-from imp@FreeBSD.org) Received: (from imp@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w0QHD0Up082894; Fri, 26 Jan 2018 17:13:00 GMT (envelope-from imp@FreeBSD.org) Message-Id: <201801261713.w0QHD0Up082894@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: imp set sender to imp@FreeBSD.org using -f From: Warner Losh Date: Fri, 26 Jan 2018 17:13:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r328437 - in head/stand: i386/gptboot libsa X-SVN-Group: head X-SVN-Commit-Author: imp X-SVN-Commit-Paths: in head/stand: i386/gptboot libsa X-SVN-Commit-Revision: 328437 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 26 Jan 2018 17:13:01 -0000 Author: imp Date: Fri Jan 26 17:13:00 2018 New Revision: 328437 URL: https://svnweb.freebsd.org/changeset/base/328437 Log: Split panic routine Split panic routine so that the 'Hit Any Key to continue' behavior can be overriden. Sponsored by: Netflix Modified: head/stand/i386/gptboot/gptboot.c head/stand/libsa/panic.c head/stand/libsa/stand.h Modified: head/stand/i386/gptboot/gptboot.c ============================================================================== --- head/stand/i386/gptboot/gptboot.c Fri Jan 26 10:49:02 2018 (r328436) +++ head/stand/i386/gptboot/gptboot.c Fri Jan 26 17:13:00 2018 (r328437) @@ -102,7 +102,6 @@ static struct bios_smap smap; static char *heap_next; static char *heap_end; -void exit(int); static void load(void); static int parse_cmds(char *, int *); static int dskread(void *, daddr_t, unsigned); @@ -365,6 +364,7 @@ main(void) void exit(int x) { + while (1); } static void Modified: head/stand/libsa/panic.c ============================================================================== --- head/stand/libsa/panic.c Fri Jan 26 10:49:02 2018 (r328436) +++ head/stand/libsa/panic.c Fri Jan 26 17:13:00 2018 (r328437) @@ -39,7 +39,18 @@ __FBSDID("$FreeBSD$"); #include #include -extern void exit(int) __dead2; +/* + * Boot loaders and other standalone programs that wish to have a + * different panic policy can provide their own panic_action rotuine. + */ +__weak_symbol void +panic_action(void) +{ + printf("--> Press a key on the console to reboot <--\n"); + getchar(); + printf("Rebooting...\n"); + exit(1); +} void panic(const char *fmt,...) @@ -51,9 +62,5 @@ panic(const char *fmt,...) vprintf(fmt, ap); va_end(ap); printf("\n"); - - printf("--> Press a key on the console to reboot <--\n"); - getchar(); - printf("Rebooting...\n"); - exit(1); + panic_action(); } Modified: head/stand/libsa/stand.h ============================================================================== --- head/stand/libsa/stand.h Fri Jan 26 10:49:02 2018 (r328436) +++ head/stand/libsa/stand.h Fri Jan 26 17:13:00 2018 (r328437) @@ -368,7 +368,6 @@ static __inline quad_t qmin(quad_t a, quad_t b) { retu static __inline u_long ulmax(u_long a, u_long b) { return (a > b ? a : b); } static __inline u_long ulmin(u_long a, u_long b) { return (a < b ? a : b); } - /* null functions for device/filesystem switches (undocumented) */ extern int nodev(void); extern int noioctl(struct open_file *, u_long, void *); @@ -387,13 +386,14 @@ extern int null_readdir(struct open_file *f, struct di * Machine dependent functions and data, must be provided or stubbed by * the consumer */ -extern void exit(int); +extern void exit(int) __dead2; extern int getchar(void); extern int ischar(void); extern void putchar(int); extern int devopen(struct open_file *, const char *, const char **); extern int devclose(struct open_file *f); extern void panic(const char *, ...) __dead2 __printflike(1, 2); +extern void panic_action(void) __weak_symbol __dead2; extern time_t getsecs(void); extern struct fs_ops *file_system[]; extern struct fs_ops *exclusive_file_system;