Mon 14 Oct 23:06:38 CEST 2024
This commit is contained in:
parent
c307abcaee
commit
f10879f6fd
72
kernel/main.c
Normal file
72
kernel/main.c
Normal file
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
Copyright (C) 2015-2019 The University of Notre Dame
|
||||
This software is distributed under the GNU General Public License.
|
||||
See the file LICENSE for details.
|
||||
*/
|
||||
|
||||
#include "console.h"
|
||||
#include "page.h"
|
||||
#include "process.h"
|
||||
#include "keyboard.h"
|
||||
#include "mouse.h"
|
||||
#include "interrupt.h"
|
||||
#include "clock.h"
|
||||
#include "ata.h"
|
||||
#include "device.h"
|
||||
#include "cdromfs.h"
|
||||
#include "string.h"
|
||||
#include "graphics.h"
|
||||
#include "kernel/ascii.h"
|
||||
#include "kernel/syscall.h"
|
||||
#include "rtc.h"
|
||||
#include "kernelcore.h"
|
||||
#include "kmalloc.h"
|
||||
#include "memorylayout.h"
|
||||
#include "kshell.h"
|
||||
#include "cdromfs.h"
|
||||
#include "diskfs.h"
|
||||
#include "serial.h"
|
||||
|
||||
/*
|
||||
This is the C initialization point of the kernel.
|
||||
By the time we reach this point, we are in protected mode,
|
||||
with interrupts disabled, a valid C stack, but no malloc heap.
|
||||
Now we initialize each subsystem in the proper order:
|
||||
*/
|
||||
|
||||
int kernel_main()
|
||||
{
|
||||
struct console *console = console_create_root();
|
||||
console_addref(console);
|
||||
|
||||
printf("video: %d x %d (addr %x)\n", video_xres, video_yres, video_buffer);
|
||||
printf("kernel: %d bytes\n", kernel_size);
|
||||
|
||||
page_init();
|
||||
kmalloc_init((char *) KMALLOC_START, KMALLOC_LENGTH);
|
||||
interrupt_init();
|
||||
mouse_init();
|
||||
keyboard_init();
|
||||
rtc_init();
|
||||
clock_init();
|
||||
process_init();
|
||||
ata_init();
|
||||
cdrom_init();
|
||||
diskfs_init();
|
||||
|
||||
current->ktable[KNO_STDIN] = kobject_create_console(console);
|
||||
current->ktable[KNO_STDOUT] = kobject_copy(current->ktable[0]);
|
||||
current->ktable[KNO_STDERR] = kobject_copy(current->ktable[1]);
|
||||
current->ktable[KNO_STDWIN] = kobject_create_window(&window_root);
|
||||
current->ktable[KNO_STDDIR] = 0; // No current dir until something is mounted.
|
||||
|
||||
|
||||
printf("\n");
|
||||
kshell_launch();
|
||||
|
||||
while(1) {
|
||||
console_putchar(console,console_getchar(console));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user