Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/sommerfeld_i386mp_1]: src/sys/arch/i386/stand use exit(int), not exit(vo...



details:   https://anonhg.NetBSD.org/src/rev/003bc1841d65
branches:  sommerfeld_i386mp_1
changeset: 482538:003bc1841d65
user:      itojun <itojun%NetBSD.org@localhost>
date:      Sat Jun 01 11:40:33 2002 +0000

description:
use exit(int), not exit(void), consistently - even if the arg has no meaning.

diffstat:

 sys/arch/i386/stand/biosboot/main.c |  402 ++++++++++++++++++++++++++++++++++++
 sys/arch/i386/stand/lib/panic.c     |   54 ++++
 2 files changed, 456 insertions(+), 0 deletions(-)

diffs (truncated from 464 to 300 lines):

diff -r 57504a3f6194 -r 003bc1841d65 sys/arch/i386/stand/biosboot/main.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/i386/stand/biosboot/main.c       Sat Jun 01 11:40:33 2002 +0000
@@ -0,0 +1,402 @@
+/*     $NetBSD: main.c,v 1.29.2.2 2002/06/01 11:40:33 itojun Exp $     */
+
+/*
+ * Copyright (c) 1996, 1997, 1999
+ *     Matthias Drochner.  All rights reserved.
+ * Copyright (c) 1996, 1997
+ *     Perry E. Metzger.  All rights reserved.
+ * Copyright (c) 1997
+ *     Jason R. Thorpe.  All rights reserved
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgements:
+ *     This product includes software developed for the NetBSD Project
+ *     by Matthias Drochner.
+ *     This product includes software developed for the NetBSD Project
+ *     by Perry E. Metzger.
+ * 4. The names of the authors may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+#include <sys/reboot.h>
+
+#include <lib/libsa/stand.h>
+#include <lib/libsa/ufs.h>
+#include <lib/libkern/libkern.h>
+
+#include <libi386.h>
+#include "devopen.h"
+
+#ifdef SUPPORT_PS2
+#include <biosmca.h>
+#endif
+
+int errno;
+extern int boot_biosdev;
+
+extern const char bootprog_name[], bootprog_rev[], bootprog_date[],
+       bootprog_maker[];
+
+static const char * const names[] = {
+    "netbsd", "netbsd.gz",
+    "netbsd.old", "netbsd.old.gz",
+    "onetbsd", "onetbsd.gz",
+#ifdef notyet    
+    "netbsd.el", "netbsd.el.gz",
+#endif /*notyet*/
+};
+
+#define NUMNAMES (sizeof(names)/sizeof(char *))
+#define DEFFILENAME names[0]
+
+#define MAXDEVNAME 16
+
+#define TIMEOUT 5
+int boottimeout = TIMEOUT; /* patchable */
+
+static char *default_devname;
+static int default_unit, default_partition;
+static const char *default_filename;
+
+char *sprint_bootsel __P((const char *));
+void bootit __P((const char *, int, int));
+void print_banner __P((void));
+void main __P((void));
+
+void   command_help __P((char *));
+void   command_ls __P((char *));
+void   command_quit __P((char *));
+void   command_boot __P((char *));
+void   command_dev __P((char *));
+void   command_consdev __P((char *));
+
+const struct bootblk_command commands[] = {
+       { "help",       command_help },
+       { "?",          command_help },
+       { "ls",         command_ls },
+       { "quit",       command_quit },
+       { "boot",       command_boot },
+       { "dev",        command_dev },
+#ifdef SUPPORT_SERIAL
+       { "consdev",    command_consdev },
+#endif
+       { NULL,         NULL },
+};
+
+int
+parsebootfile(fname, fsname, devname, unit, partition, file)
+       const char *fname;
+       char **fsname; /* out */
+       char **devname; /* out */
+       unsigned int *unit, *partition; /* out */
+       const char **file; /* out */
+{
+       const char *col, *help;
+
+       *fsname = "ufs";
+       *devname = default_devname;
+       *unit = default_unit;
+       *partition = default_partition;
+       *file = default_filename;
+
+       if (fname == NULL)
+               return(0);
+
+       if((col = strchr(fname, ':'))) {        /* device given */
+               static char savedevname[MAXDEVNAME+1];
+               int devlen;
+               unsigned int u = 0, p = 0;
+               int i = 0;
+
+               devlen = col - fname;
+               if (devlen > MAXDEVNAME)
+                       return(EINVAL);
+
+#define isvalidname(c) ((c) >= 'a' && (c) <= 'z')
+               if (!isvalidname(fname[i]))
+                       return(EINVAL);
+               do {
+                       savedevname[i] = fname[i];
+                       i++;
+               } while (isvalidname(fname[i]));
+               savedevname[i] = '\0';
+
+#define isnum(c) ((c) >= '0' && (c) <= '9')
+               if (i < devlen) {
+                       if (!isnum(fname[i]))
+                               return(EUNIT);
+                       do {
+                               u *= 10;
+                               u += fname[i++] - '0';
+                       } while (isnum(fname[i]));
+               }
+
+#define isvalidpart(c) ((c) >= 'a' && (c) <= 'z')
+               if (i < devlen) {
+                       if (!isvalidpart(fname[i]))
+                               return(EPART);
+                       p = fname[i++] - 'a';
+               }
+
+               if (i != devlen)
+                       return(ENXIO);
+
+               *devname = savedevname;
+               *unit = u;
+               *partition = p;
+               help = col + 1;
+       } else
+               help = fname;
+
+       if (*help)
+               *file = help;
+
+       return(0);
+}
+
+char *
+sprint_bootsel(filename)
+       const char *filename;
+{
+       char *fsname, *devname;
+       int unit, partition;
+       const char *file;
+       static char buf[80];
+       
+       if (parsebootfile(filename, &fsname, &devname, &unit,
+                         &partition, &file) == 0) {
+               sprintf(buf, "%s%d%c:%s", devname, unit, 'a' + partition, file);
+               return(buf);
+       }
+       return("(invalid)");
+}
+
+void
+bootit(filename, howto, tell)
+       const char *filename;
+       int howto, tell;
+{
+
+       if (tell) {
+               printf("booting %s", sprint_bootsel(filename));
+               if (howto)
+                       printf(" (howto 0x%x)", howto);
+               printf("\n");
+       }
+
+       if (exec_netbsd(filename, 0, howto) < 0)
+               printf("boot: %s: %s\n", sprint_bootsel(filename),
+                      strerror(errno));
+       else
+               printf("boot returned\n");
+}
+
+void
+print_banner()
+{
+
+       printf("\n");
+       printf(">> %s, Revision %s\n", bootprog_name, bootprog_rev);
+       printf(">> (%s, %s)\n", bootprog_maker, bootprog_date);
+       printf(">> Memory: %d/%d k\n", getbasemem(), getextmem());
+}
+
+
+/* 
+ * note: normally, void main() wouldn't be legal, but this isn't a
+ * hosted environment...
+ */
+void
+main()
+{
+       int currname;
+       char c;
+
+#ifdef SUPPORT_SERIAL
+       initio(SUPPORT_SERIAL);
+#else
+       initio(CONSDEV_PC);
+#endif
+
+#ifdef SUPPORT_PS2
+       biosmca();
+#endif
+       gateA20();
+
+#ifdef RESET_VIDEO
+       biosvideomode();
+#endif
+
+       print_banner();
+
+       /* try to set default device to what BIOS tells us */
+       bios2dev(boot_biosdev, &default_devname, &default_unit);
+       default_partition = 0;
+
+       /* if the user types "boot" without filename */
+       default_filename = DEFFILENAME;
+
+       printf("Press return to boot now, any other key for boot menu\n");
+       currname = 0;
+       for (;;) {
+               printf("booting %s - starting in ",
+                      sprint_bootsel(names[currname]));
+
+               c = awaitkey(boottimeout, 1);
+               if ((c != '\r') && (c != '\n') && (c != '\0')
+#ifdef BOOTPASSWD
+                   && checkpasswd()
+#endif
+                   ) {
+                       printf("type \"?\" or \"help\" for help.\n");
+                       bootmenu(); /* does not return */
+               }
+
+               /*
+                * try pairs of names[] entries, foo and foo.gz
+                */
+               /* don't print "booting..." again */
+               bootit(names[currname], 0, 0);
+               /* since it failed, try switching bootfile. */
+               currname = ++currname % NUMNAMES;
+
+               /* now try the second of a pair, presumably the .gz
+                  version. */
+               /* XXX duped code sucks. */
+               bootit(names[currname], 0, 1);
+               /* since it failed, try switching bootfile. */
+               currname = ++currname % NUMNAMES;
+       }
+}
+
+/* ARGSUSED */
+void
+command_help(arg)
+       char *arg;
+{



Home | Main Index | Thread Index | Old Index