/* * Initial boot sequence. */ static void boot(void) { /* * The order of these is important! * Don't go changing it without thinking about the consequences. * * Among other things, be aware that console output gets * buffered up at first and does not actually appear until * dev_bootstrap() attaches the console device. This can be * remarkably confusing if a bug occurs at this point. So * don't put new code before dev_bootstrap if you don't * absolutely have to. * * Also note that the buffer for this is only 1k. If you * overflow it, the system will crash without printing * anything at all. You can make it larger though (it's in * dev/generic/console.c). */ #if OPT_A0 hello(); #endif kprintf("\n"); kprintf("OS/161 base system version %s\n", BASE_VERSION); kprintf("%s", harvard_copyright); kprintf("\n"); kprintf("Put-your-group-name-here's system version %s (%s #%d)\n", GROUP_VERSION, buildconfig, buildversion); kprintf("\n"); ram_bootstrap(); scheduler_bootstrap(); thread_bootstrap(); vfs_bootstrap(); dev_bootstrap(); vm_bootstrap(); kprintf_bootstrap(); /* Default bootfs - but ignore failure, in case emu0 doesn't exist */ vfs_setbootfs("emu0"); swap_bootstrap(); /* * Make sure various things aren't screwed up. */ assert(sizeof(userptr_t)==sizeof(char *)); assert(sizeof(*(userptr_t)0)==sizeof(char)); }
/* * Initial boot sequence. */ static void boot(void) { /* * The order of these is important! * Don't go changing it without thinking about the consequences. * * Among other things, be aware that console output gets * buffered up at first and does not actually appear until * mainbus_bootstrap() attaches the console device. This can * be remarkably confusing if a bug occurs at this point. So * don't put new code before mainbus_bootstrap if you don't * absolutely have to. * * Also note that the buffer for this is only 1k. If you * overflow it, the system will crash without printing * anything at all. You can make it larger though (it's in * dev/generic/console.c). */ kprintf("\n"); kprintf("OS/161 base system version %s\n", BASE_VERSION); kprintf("%s", harvard_copyright); kprintf("\n"); kprintf("Put-your-group-name-here's system version %s (%s #%d)\n", GROUP_VERSION, buildconfig, buildversion); kprintf("\n"); /* Early initialization. */ ram_bootstrap(); vm_bootstrap(); thread_bootstrap(); hardclock_bootstrap(); vfs_bootstrap(); /* Probe and initialize devices. Interrupts should come on. */ kprintf("Device probe...\n"); KASSERT(curthread->t_curspl > 0); mainbus_bootstrap(); KASSERT(curthread->t_curspl == 0); /* Now do pseudo-devices. */ pseudoconfig(); kprintf("\n"); /* Late phase of initialization. */ /* BEGIN A3 SETUP */ #if !OPT_DUMBVM swap_bootstrap(); /* New for ASST3 - initialize swap system */ #endif /* END A3 SETUP */ kprintf_bootstrap(); /* New for ASST2 - Initialize process ID managment. This should * come before additional cpus are brought online. */ pid_bootstrap(); dumb_consoleIO_bootstrap(); /* And initialize for user console IO */ thread_start_cpus(); /* Default bootfs - but ignore failure, in case emu0 doesn't exist */ vfs_setbootfs("emu0"); /* * Make sure various things aren't screwed up. */ COMPILE_ASSERT(sizeof(userptr_t) == sizeof(char *)); COMPILE_ASSERT(sizeof(*(userptr_t)0) == sizeof(char)); }
/* * Initial boot sequence. */ static void boot(void) { size_t memsize; /* * The order of these is important! * Don't go changing it without thinking about the consequences. * * Among other things, be aware that console output gets * buffered up at first and does not actually appear until * mainbus_bootstrap() attaches the console device. This can * be remarkably confusing if a bug occurs at this point. So * don't put new code before mainbus_bootstrap if you don't * absolutely have to. * * Also note that the buffer for this is only 1k. If you * overflow it, the system will crash without printing * anything at all. You can make it larger though (it's in * dev/generic/console.c). */ kprintf("\n"); kprintf("OS/161 base version %s ASST1 solution version %s\n", BASE_VERSION, ASST1SOL_VERSION); kprintf("%s", harvard_copyright); kprintf("\n"); kprintf("Ravi Patel and Rohit Ainapure %s (%s #%d)\n", GROUP_VERSION, buildconfig, buildversion); kprintf("\n"); /* Early initialization. */ ram_bootstrap(); memsize = vm_bootstrap(); thread_bootstrap(); hardclock_bootstrap(); vfs_bootstrap(); /* Probe and initialize devices. Interrupts should come on. */ kprintf("Device probe...\n"); KASSERT(curthread->t_curspl > 0); mainbus_bootstrap(); KASSERT(curthread->t_curspl == 0); swap_bootstrap(memsize); /* Now do pseudo-devices. */ pseudoconfig(); kprintf("\n"); /* Late phase of initialization. */ kprintf_bootstrap(); thread_start_cpus(); execv_bootstrap(); /* Default bootfs - but ignore failure, in case emu0 doesn't exist */ vfs_setbootfs("emu0"); /* * Make sure various things aren't screwed up. */ COMPILE_ASSERT(sizeof(userptr_t) == sizeof(char *)); COMPILE_ASSERT(sizeof(*(userptr_t)0) == sizeof(char)); }
/* * Initial boot sequence. */ static void boot(void) { /* * The order of these is important! * Don't go changing it without thinking about the consequences. * * Among other things, be aware that console output gets * buffered up at first and does not actually appear until * dev_bootstrap() attaches the console device. This can be * remarkably confusing if a bug occurs at this point. So * don't put new code before dev_bootstrap if you don't * absolutely have to. * * Also note that the buffer for this is only 1k. If you * overflow it, the system will crash without printing * anything at all. You can make it larger though (it's in * dev/generic/console.c). */ /* remove compiler warning */ //size_t memsize; /* ASST2: get memsize from new vm_bootstrap */ kprintf("\n"); kprintf("OS/161 base system version %s\n", BASE_VERSION); kprintf("%s", harvard_copyright); kprintf("\n"); kprintf("Group 36 system version %s (%s #%d)\n", GROUP_VERSION, buildconfig, buildversion); kprintf("\n"); ram_bootstrap(); #if OPT_DUMBVM vm_bootstrap(); #else memsize = vm_bootstrap(); /* ASST2: get memsize from new vm_bootstrap */ #endif scheduler_bootstrap(); pid_bootstrap(); /* ASST1: initialize pid management before threads */ thread_bootstrap(); vfs_bootstrap(); dev_bootstrap(); #if !OPT_DUMBVM /* only initialize swap if not using dumbvm */ swap_bootstrap(memsize); /* ASST2: initialize swap file after devices */ #endif kprintf_bootstrap(); // DEMKE: ASST1 - initialize user program console I/O //dumb_consoleIO_bootstrap(); /* Default bootfs - but ignore failure, in case emu0 doesn't exist */ vfs_setbootfs("emu0"); /* * Make sure various things aren't screwed up. */ assert(sizeof(userptr_t)==sizeof(char *)); assert(sizeof(*(userptr_t)0)==sizeof(char)); }