MCPcopy Create free account
hub / github.com/Bananymous/banan-os / kernel_main

Function kernel_main

kernel/kernel/kernel.cpp:107–203  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

105static void init2(void*);
106
107extern "C" void kernel_main(uint32_t boot_magic, uint32_t boot_info)
108{
109 using namespace Kernel;
110
111 if (!validate_boot_magic(boot_magic))
112 {
113 Serial::initialize();
114 dprintln("Unrecognized boot magic {8H}", boot_magic);
115 return;
116 }
117
118 if (!should_disable_serial(get_early_boot_command_line(boot_magic, boot_info)))
119 {
120 Serial::initialize();
121 dprintln("Serial output initialized");
122 }
123
124 kmalloc_initialize();
125 dprintln("kmalloc initialized");
126
127 parse_boot_info(boot_magic, boot_info);
128 dprintln("boot info parsed");
129
130 auto& processor = Processor::create(PROCESSOR_NONE);
131 Processor::initialize();
132 dprintln("BSP initialized");
133
134 PageTable::initialize_fast_page();
135 dprintln("fast page initialized");
136
137 Heap::initialize();
138 dprintln("Heap initialized");
139
140 PageTable::initialize_and_load();
141 dprintln("PageTable initialized");
142
143 processor.allocate_stack();
144
145 parse_command_line();
146 dprintln("command line parsed, root='{}', console='{}'", cmdline.root, cmdline.console);
147
148 MUST(ACPI::ACPI::initialize());
149 dprintln("ACPI initialized");
150
151 InterruptController::initialize(cmdline.force_pic);
152 dprintln("Interrupt controller initialized");
153
154 SystemTimer::initialize();
155 dprintln("Timers initialized");
156
157 DevFileSystem::initialize();
158 dprintln("devfs initialized");
159
160 if (auto ret = TerminalDriver::initialize_from_boot_info(); ret.is_error())
161 dprintln("failed to initialize terminal driver: {}", ret.error());
162 else
163 dprintln("terminal driver initialized");
164

Callers

nothing calls this directly

Calls 15

validate_boot_magicFunction · 0.85
should_disable_serialFunction · 0.85
kmalloc_initializeFunction · 0.85
parse_boot_infoFunction · 0.85
parse_command_lineFunction · 0.85
allocate_stackMethod · 0.80
errorMethod · 0.80
is_using_apicMethod · 0.80
dont_invoke_schedulerMethod · 0.80
initialize_timerMethod · 0.80
add_threadMethod · 0.80

Tested by

no test coverage detected