diff --git a/src/kernel/main.cpp b/src/kernel/main.cpp index 6c6737a..5424a20 100644 --- a/src/kernel/main.cpp +++ b/src/kernel/main.cpp @@ -67,46 +67,6 @@ run_constructors() } } -channel *std_out = nullptr; - -void -stdout_task() -{ - uint8_t buffer[257]; - auto *ent = reinterpret_cast(buffer); - auto *cons = console::get(); - - log::info(logs::task, "Starting kernel stdout task"); - - scheduler &s = scheduler::get(); - thread *th = thread::from_tcb(s.current()); - - while (true) { - j6_signal_t current = std_out->signals(); - if (!(current & j6_signal_channel_can_recv)) { - th->wait_on_signals(std_out, j6_signal_channel_can_recv); - s.schedule(); - } - - size_t n = 256; - j6_status_t status = std_out->dequeue(&n, buffer); - if (status != j6_status_ok) { - log::warn(logs::task, "Kernel stdout error: %x", status); - return; - } - - buffer[n] = 0; - const char *s = reinterpret_cast(buffer); - - while (n) { - size_t r = cons->puts(s); - n -= r + 1; - s += r + 1; - } - } -} - - void kernel_main(args::header *header) { @@ -115,6 +75,7 @@ kernel_main(args::header *header) init_console(); logger_init(); + cpu_validate(); setup_pat(); bool has_video = false; @@ -135,8 +96,6 @@ kernel_main(args::header *header) run_constructors(); memory_initialize_post_ctors(header); - cpu_validate(); - for (size_t i = 0; i < header->num_modules; ++i) { args::module &mod = header->modules[i]; switch (mod.type) { @@ -157,9 +116,9 @@ kernel_main(args::header *header) device_manager &devices = device_manager::get(); devices.parse_acpi(header->acpi_table); - interrupts_enable(); devices.init_drivers(); devices.get_lapic()->calibrate_timer(); + interrupts_enable(); /* block_device *disk = devices->get_block_device(0); @@ -188,8 +147,6 @@ kernel_main(args::header *header) syscall_enable(); scheduler *sched = new scheduler(devices.get_lapic()); - std_out = new channel; - // Skip program 0, which is the kernel itself for (size_t i = 1; i < header->num_programs; ++i) { args::program *prog = memory::to_virtual(&header->programs[i]); @@ -201,11 +158,6 @@ kernel_main(args::header *header) if (!has_video) sched->create_kernel_task(logger_task, scheduler::max_priority/2, true); - sched->create_kernel_task(stdout_task, scheduler::max_priority-1, true); - - const char stdout_message[] = "Hello on the fake stdout channel\n"; - size_t message_size = sizeof(stdout_message); - std_out->enqueue(&message_size, reinterpret_cast(stdout_message)); sched->start(); }