Eliminated the "physstrat" wart and merged it into kern_physio.c. This
[unix-history] / sys / kern / init_main.c
index b062ed7..7e7428b 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *     from: @(#)init_main.c   7.41 (Berkeley) 5/15/91
  * SUCH DAMAGE.
  *
  *     from: @(#)init_main.c   7.41 (Berkeley) 5/15/91
- *     $Id: init_main.c,v 1.9 1993/11/25 01:32:46 wollman Exp $
+ *     $Id: init_main.c,v 1.14 1994/01/14 16:24:45 davidg Exp $
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -57,7 +57,7 @@
 
 #include "vm/vm.h"
 
 
 #include "vm/vm.h"
 
-char   copyright[] =
+const char     copyright[] =
 "Copyright (c) 1989,1990,1991,1992 William F. Jolitz. All rights reserved.\n\
 Copyright (c) 1982,1986,1989,1991 The Regents of the University\n\
 of California.  All rights reserved.\n\n";
 "Copyright (c) 1989,1990,1991,1992 William F. Jolitz. All rights reserved.\n\
 Copyright (c) 1982,1986,1989,1991 The Regents of the University\n\
 of California.  All rights reserved.\n\n";
@@ -92,6 +92,15 @@ struct       proc *updateproc;
 void __main() {}
 #endif
 
 void __main() {}
 #endif
 
+/*
+ * This table is filled in by the linker with functions that need to be
+ * called to initialize various pseudo-devices and whatnot.
+ */
+typedef void (*pseudo_func_t)(void);
+extern const struct linker_set pseudo_set;
+static const pseudo_func_t *pseudos = 
+  (const pseudo_func_t *)&pseudo_set.ls_items[0];
+
 /*
  * System startup; initialize the world, create process 0,
  * mount root filesystem, and fork to create init and pagedaemon.
 /*
  * System startup; initialize the world, create process 0,
  * mount root filesystem, and fork to create init and pagedaemon.
@@ -106,7 +115,7 @@ main()
        register struct proc *p;
        register struct filedesc0 *fdp;
        int s, rval[2];
        register struct proc *p;
        register struct filedesc0 *fdp;
        int s, rval[2];
-       char *cp;
+       const char *cp;
 
        /*
         * Initialize curproc before any possible traps/probes
 
        /*
         * Initialize curproc before any possible traps/probes
@@ -223,21 +232,11 @@ main()
         * Initialize tables, protocols, and set up well-known inodes.
         */
        mbinit();
         * Initialize tables, protocols, and set up well-known inodes.
         */
        mbinit();
-#ifdef SYSVSHM
-       shminit();
-#endif
-#include "sl.h"
-#if NSL > 0
-       slattach();                     /* XXX */
-#endif
-#include "ppp.h"
-#if NPPP > 0
-       pppattach();                    /* XXX */
-#endif
-#include "loop.h"
-#if NLOOP > 0
-       loattach();                     /* XXX */
-#endif
+
+       while(*pseudos) {
+               (**pseudos++)();
+       }
+
        /*
         * Block reception of incoming packets
         * until protocols have been initialized.
        /*
         * Block reception of incoming packets
         * until protocols have been initialized.
@@ -252,8 +251,8 @@ main()
 #endif
 
        /* kick off timeout driven events by calling first time */
 #endif
 
        /* kick off timeout driven events by calling first time */
-       roundrobin();
-       schedcpu();
+       roundrobin(0, 0);
+       schedcpu(0, 0);
        enablertclock();                /* enable realtime clock interrupts */
 
        /*
        enablertclock();                /* enable realtime clock interrupts */
 
        /*
@@ -284,22 +283,20 @@ main()
         * XXX probably should go elsewhere.
         */
        bzero(utsname.sysname, sizeof(utsname.sysname));
         * XXX probably should go elsewhere.
         */
        bzero(utsname.sysname, sizeof(utsname.sysname));
-       for (cp = version, i= 0;
-            *cp && *cp != ' ' && i <= sizeof(utsname.sysname);
-            )
-         utsname.sysname[i++] = *cp++;
+       for (cp = version, i= 0; *cp && *cp != ' ' && i <= sizeof(utsname.sysname);)
+               utsname.sysname[i++] = *cp++;
        bzero(utsname.release, sizeof(utsname.release));
        for (cp++, i= 0; *cp && *cp != ' ' && i <= sizeof(utsname.release);)
        bzero(utsname.release, sizeof(utsname.release));
        for (cp++, i= 0; *cp && *cp != ' ' && i <= sizeof(utsname.release);)
-         utsname.release[i++] = *cp++;
+               utsname.release[i++] = *cp++;
        bzero(utsname.version, sizeof(utsname.version));
        for (; *cp != '('; cp++);
        for (cp++, i= 0; *cp && *cp != ')' && i <= sizeof(utsname.version);)
        bzero(utsname.version, sizeof(utsname.version));
        for (; *cp != '('; cp++);
        for (cp++, i= 0; *cp && *cp != ')' && i <= sizeof(utsname.version);)
-         utsname.version[i++] = *cp++;
+               utsname.version[i++] = *cp++;
        for (; *cp != '#'; cp++);
        if(i <= sizeof(utsname.version))
        for (; *cp != '#'; cp++);
        if(i <= sizeof(utsname.version))
-         utsname.version[i++] = '#';
+               utsname.version[i++] = '#';
        for (cp++; *cp && *cp != ':' && i <= sizeof(utsname.version);)
        for (cp++; *cp && *cp != ':' && i <= sizeof(utsname.version);)
-         utsname.version[i++] = *cp++;
+               utsname.version[i++] = *cp++;
        strncpy(utsname.machine, MACHINE, sizeof(utsname.machine));
        utsname.machine[sizeof(utsname.machine)-1] = '\0';
 
        strncpy(utsname.machine, MACHINE, sizeof(utsname.machine));
        utsname.machine[sizeof(utsname.machine)-1] = '\0';
 
@@ -370,6 +367,7 @@ main()
        /*
         * Start update daemon (process 3).
         */
        /*
         * Start update daemon (process 3).
         */
+#ifndef LAPTOP
        if (fork(p, (void *) NULL, rval))
                panic("fork update");
        if (rval[1]) {
        if (fork(p, (void *) NULL, rval))
                panic("fork update");
        if (rval[1]) {
@@ -380,6 +378,7 @@ main()
                vfs_update();
                /*NOTREACHED*/
        }
                vfs_update();
                /*NOTREACHED*/
        }
+#endif
 
        /*
         * enter scheduling loop
 
        /*
         * enter scheduling loop