[kernel] Remove old fake stdout channel/task
This was useful for testing channels, but it just gets in the way now.
This commit is contained in:
@@ -67,46 +67,6 @@ run_constructors()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
channel *std_out = nullptr;
|
|
||||||
|
|
||||||
void
|
|
||||||
stdout_task()
|
|
||||||
{
|
|
||||||
uint8_t buffer[257];
|
|
||||||
auto *ent = reinterpret_cast<log::logger::entry *>(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<const char *>(buffer);
|
|
||||||
|
|
||||||
while (n) {
|
|
||||||
size_t r = cons->puts(s);
|
|
||||||
n -= r + 1;
|
|
||||||
s += r + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
kernel_main(args::header *header)
|
kernel_main(args::header *header)
|
||||||
{
|
{
|
||||||
@@ -115,6 +75,7 @@ kernel_main(args::header *header)
|
|||||||
init_console();
|
init_console();
|
||||||
logger_init();
|
logger_init();
|
||||||
|
|
||||||
|
cpu_validate();
|
||||||
setup_pat();
|
setup_pat();
|
||||||
|
|
||||||
bool has_video = false;
|
bool has_video = false;
|
||||||
@@ -135,8 +96,6 @@ kernel_main(args::header *header)
|
|||||||
run_constructors();
|
run_constructors();
|
||||||
memory_initialize_post_ctors(header);
|
memory_initialize_post_ctors(header);
|
||||||
|
|
||||||
cpu_validate();
|
|
||||||
|
|
||||||
for (size_t i = 0; i < header->num_modules; ++i) {
|
for (size_t i = 0; i < header->num_modules; ++i) {
|
||||||
args::module &mod = header->modules[i];
|
args::module &mod = header->modules[i];
|
||||||
switch (mod.type) {
|
switch (mod.type) {
|
||||||
@@ -157,9 +116,9 @@ kernel_main(args::header *header)
|
|||||||
device_manager &devices = device_manager::get();
|
device_manager &devices = device_manager::get();
|
||||||
devices.parse_acpi(header->acpi_table);
|
devices.parse_acpi(header->acpi_table);
|
||||||
|
|
||||||
interrupts_enable();
|
|
||||||
devices.init_drivers();
|
devices.init_drivers();
|
||||||
devices.get_lapic()->calibrate_timer();
|
devices.get_lapic()->calibrate_timer();
|
||||||
|
interrupts_enable();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
block_device *disk = devices->get_block_device(0);
|
block_device *disk = devices->get_block_device(0);
|
||||||
@@ -188,8 +147,6 @@ kernel_main(args::header *header)
|
|||||||
syscall_enable();
|
syscall_enable();
|
||||||
scheduler *sched = new scheduler(devices.get_lapic());
|
scheduler *sched = new scheduler(devices.get_lapic());
|
||||||
|
|
||||||
std_out = new channel;
|
|
||||||
|
|
||||||
// Skip program 0, which is the kernel itself
|
// Skip program 0, which is the kernel itself
|
||||||
for (size_t i = 1; i < header->num_programs; ++i) {
|
for (size_t i = 1; i < header->num_programs; ++i) {
|
||||||
args::program *prog = memory::to_virtual(&header->programs[i]);
|
args::program *prog = memory::to_virtual(&header->programs[i]);
|
||||||
@@ -201,11 +158,6 @@ kernel_main(args::header *header)
|
|||||||
|
|
||||||
if (!has_video)
|
if (!has_video)
|
||||||
sched->create_kernel_task(logger_task, scheduler::max_priority/2, true);
|
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<const void*>(stdout_message));
|
|
||||||
|
|
||||||
sched->start();
|
sched->start();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user