Fix console

This commit is contained in:
Alex Kotov 2022-06-23 13:51:42 +03:00
parent f0d6aeafe1
commit a48fa61e64
Signed by: kotovalexarian
GPG Key ID: 553C0EBBEB5D5F08
9 changed files with 48 additions and 47 deletions

View File

@ -2,7 +2,7 @@
#include "config.h"
#include "panic.h"
#include <kernaux/console.h>
#include <kernaux/drivers/console.h>
static const char *const messages[] = {
"0 #DE - Divide Error Exception",
@ -45,7 +45,7 @@ void exception_handler(struct IsrRegisters regs)
return;
}
kernaux_console_printf("[FAIL] exception: Unhandled protected-mode exception: %s\n", messages[regs.int_no]);
kernaux_drivers_console_printf("[FAIL] exception: Unhandled protected-mode exception: %s\n", messages[regs.int_no]);
panic("Can not continue.");
}

View File

@ -4,7 +4,7 @@
#include "config.h"
#include "pic.h"
#include <kernaux/console.h>
#include <kernaux/drivers/console.h>
static hwint_handler_t handlers[INT_HWINT_COUNT] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
@ -19,7 +19,7 @@ void hwint_handler(struct IsrRegisters regs)
const hwint_handler_t handler = handlers[hwint_no];
if (!handler) {
kernaux_console_printf("[WARN] hwint: Unhandled hardware interrupt: %u\n", hwint_no);
kernaux_drivers_console_printf("[WARN] hwint: Unhandled hardware interrupt: %u\n", hwint_no);
return;
}

View File

@ -2,7 +2,7 @@
#include "panic.h"
#include <kernaux/assert.h>
#include <kernaux/console.h>
#include <kernaux/drivers/console.h>
#include <kernaux/libc.h>
static bool cmdline_terminated(const char *s);
@ -155,21 +155,21 @@ void kernel_info_print(const struct Kernel_Info *const kinfo)
{
KERNAUX_ASSERT(kinfo);
kernaux_console_printf("Kernel info\n");
kernaux_console_printf(" cmdline: %s\n", kinfo->cmdline);
kernaux_console_printf(" modules: %lu\n", kinfo->modules_count);
kernaux_console_printf(" areas: %lu\n", kinfo->areas_count);
kernaux_console_printf("\n");
kernaux_console_printf(" offset: %lu\n", kinfo->kernel_offset);
kernaux_console_printf(" size: %lu\n", kinfo->kernel_size);
kernaux_console_printf(" phys base: %lu\n", kinfo->kernel_phys_base);
kernaux_console_printf(" virt base: %lu\n", kinfo->kernel_virt_base);
kernaux_console_printf("\n");
kernaux_console_printf(" modules size: %lu\n", kinfo->modules_total_size);
kernaux_console_printf(" kernel & modules size: %lu\n", kinfo->kernel_and_modules_total_size);
kernaux_console_printf("\n");
kernaux_console_printf(" stack start: %lu\n", kinfo->kernel_stack_start);
kernaux_console_printf(" stack size: %lu\n", kinfo->kernel_stack_size);
kernaux_drivers_console_printf("Kernel info\n");
kernaux_drivers_console_printf(" cmdline: %s\n", kinfo->cmdline);
kernaux_drivers_console_printf(" modules: %lu\n", kinfo->modules_count);
kernaux_drivers_console_printf(" areas: %lu\n", kinfo->areas_count);
kernaux_drivers_console_printf("\n");
kernaux_drivers_console_printf(" offset: %lu\n", kinfo->kernel_offset);
kernaux_drivers_console_printf(" size: %lu\n", kinfo->kernel_size);
kernaux_drivers_console_printf(" phys base: %lu\n", kinfo->kernel_phys_base);
kernaux_drivers_console_printf(" virt base: %lu\n", kinfo->kernel_virt_base);
kernaux_drivers_console_printf("\n");
kernaux_drivers_console_printf(" modules size: %lu\n", kinfo->modules_total_size);
kernaux_drivers_console_printf(" kernel & modules size: %lu\n", kinfo->kernel_and_modules_total_size);
kernaux_drivers_console_printf("\n");
kernaux_drivers_console_printf(" stack start: %lu\n", kinfo->kernel_stack_start);
kernaux_drivers_console_printf(" stack size: %lu\n", kinfo->kernel_stack_size);
}
bool kernel_info_is_valid(const struct Kernel_Info *const kinfo)

View File

@ -8,7 +8,7 @@
#include "tasks.h"
#include "elf.h"
#include <kernaux/console.h>
#include <kernaux/drivers/console.h>
#include <kernaux/libc.h>
#include <kernaux/multiboot2.h>
#include <kernaux/pfa.h>
@ -37,7 +37,8 @@ void main(
panic("Multiboot 2 info magic number is invalid.");
}
KernAux_Multiboot2_Info_print(multiboot2_info, kernaux_console_printf);
KernAux_Multiboot2_Info_print(multiboot2_info,
kernaux_drivers_console_printf);
if (!KernAux_Multiboot2_Info_is_valid(multiboot2_info)) {
panic("Multiboot 2 info is invalid.");
@ -82,7 +83,7 @@ void main(
tasks_switch_to_user(real_entrypoint);
}
else {
kernaux_console_print("[WARN] init: Invalid ELF header.\n");
kernaux_drivers_console_print("[WARN] init: Invalid ELF header.\n");
}
}
}

View File

@ -1,7 +1,7 @@
#include "panic.h"
#include <kernaux/asm/i386.h>
#include <kernaux/console.h>
#include <kernaux/drivers/console.h>
static void poweroff()
{
@ -10,7 +10,7 @@ static void poweroff()
void panic(const char *const s)
{
kernaux_console_printf("[FAIL] panic: %s\n", s);
kernaux_drivers_console_printf("[FAIL] panic: %s\n", s);
poweroff();
}
@ -24,7 +24,7 @@ void kernaux_assert_fn(
const int line,
const char *const str
) {
kernaux_console_printf("[FAIL] assertion failed: %s:%u: \"%s\"\n",
file, line, str);
kernaux_drivers_console_printf("[FAIL] assertion failed: %s:%u: \"%s\"\n",
file, line, str);
poweroff();
}

View File

@ -1,7 +1,7 @@
#include "pic.h"
#include <kernaux/asm/i386.h>
#include <kernaux/console.h>
#include <kernaux/drivers/console.h>
#define MASTER_COMMAND 0x20
#define MASTER_DATA 0x21
@ -17,7 +17,7 @@ static unsigned char slave_irq_start = 8;
void pic_enable_all()
{
kernaux_console_print("[INFO] pic: Enable all IRQs.\n");
kernaux_drivers_console_print("[INFO] pic: Enable all IRQs.\n");
kernaux_asm_i386_outportb(MASTER_DATA, 0);
kernaux_asm_i386_outportb(SLAVE_DATA, 0);
@ -25,7 +25,7 @@ void pic_enable_all()
void pic_disable_all()
{
kernaux_console_print("[INFO] pic: Disable all IRQs.\n");
kernaux_drivers_console_print("[INFO] pic: Disable all IRQs.\n");
kernaux_asm_i386_outportb(MASTER_DATA, 0xFF);
kernaux_asm_i386_outportb(SLAVE_DATA, 0xFF);
@ -34,11 +34,11 @@ void pic_disable_all()
void pic_enable(const unsigned char line)
{
if (line >= IRQS_TOTAL) {
kernaux_console_printf("[WARN] pic: Invalid line %u.\n", line);
kernaux_drivers_console_printf("[WARN] pic: Invalid line %u.\n", line);
return;
}
kernaux_console_printf("[INFO] pic: Enable line %u.\n", line);
kernaux_drivers_console_printf("[INFO] pic: Enable line %u.\n", line);
if (line < IRQS_COUNT) {
const unsigned char mask = kernaux_asm_i386_inportb(MASTER_DATA);
@ -53,11 +53,11 @@ void pic_enable(const unsigned char line)
void pic_disable(const unsigned char line)
{
if (line >= IRQS_TOTAL) {
kernaux_console_printf("[WARN] pic: Invalid line %u.\n", line);
kernaux_drivers_console_printf("[WARN] pic: Invalid line %u.\n", line);
return;
}
kernaux_console_printf("[INFO] pic: Disable line %u.\n", line);
kernaux_drivers_console_printf("[INFO] pic: Disable line %u.\n", line);
if (line < IRQS_COUNT) {
const unsigned char mask = kernaux_asm_i386_inportb(MASTER_DATA);
@ -72,7 +72,7 @@ void pic_disable(const unsigned char line)
void pic_remap(const unsigned char new_master_irq_start, const unsigned char new_slave_irq_start)
{
kernaux_console_print("[INFO] pic: Remap the IRQ table.\n");
kernaux_drivers_console_print("[INFO] pic: Remap the IRQ table.\n");
// Remember IRQ numbers
master_irq_start = new_master_irq_start;

View File

@ -6,7 +6,7 @@
#include "tss.h"
#include "pic.h"
#include <kernaux/console.h>
#include <kernaux/drivers/console.h>
#include <kernaux/libc.h>
struct GdtPointer {
@ -56,7 +56,7 @@ void protected_initialize(const struct Kernel_Info *const kinfo)
pic_remap(32, 40);
pic_disable_all();
kernaux_console_print("[INFO] protected: Setup GDT.\n");
kernaux_drivers_console_print("[INFO] protected: Setup GDT.\n");
gdt_set_gate(GDT_NULL_INDEX, 0, 0x00000000, 0, 0);
gdt_set_gate(GDT_KERNEL_CS_INDEX, 0, 0xFFFFFFFF, 0x9A, 0xCF);
@ -66,7 +66,7 @@ void protected_initialize(const struct Kernel_Info *const kinfo)
tss_write_to_gdt(kinfo, &gdt_entries[GDT_TSS_INDEX]);
kernaux_console_print("[INFO] protected: Setup IDT.\n");
kernaux_drivers_console_print("[INFO] protected: Setup IDT.\n");
memset(idt_entries, 0, sizeof(idt_entries));
@ -125,25 +125,25 @@ void protected_initialize(const struct Kernel_Info *const kinfo)
idt_set_gate(INT_SYSCALL, (unsigned int)interrupt_0x80, 0x08, 0x8E | 0x60);
kernaux_console_print("[INFO] protected: Load GDT.\n");
kernaux_drivers_console_print("[INFO] protected: Load GDT.\n");
gdt_pointer.limit = sizeof(struct GdtEntry) * GDT_SIZE - 1;
gdt_pointer.base = (unsigned int)&gdt_entries;
gdt_flush(&gdt_pointer);
kernaux_console_print("[INFO] protected: Load IDT.\n");
kernaux_drivers_console_print("[INFO] protected: Load IDT.\n");
idt_pointer.limit = sizeof(struct IdtEntry) * IDT_SIZE - 1;
idt_pointer.base = (unsigned int)&idt_entries;
idt_flush(&idt_pointer);
kernaux_console_print("[INFO] protected: Load TSS.\n");
kernaux_drivers_console_print("[INFO] protected: Load TSS.\n");
tss_flush();
kernaux_console_print("[INFO] protected: Enable interrupts.\n");
kernaux_drivers_console_print("[INFO] protected: Enable interrupts.\n");
asm volatile ("sti");
}

View File

@ -2,7 +2,7 @@
#include "syscall.h"
#include <kernaux/console.h>
#include <kernaux/drivers/console.h>
static void syscall_do_exit(struct IsrRegisters regs);
@ -10,7 +10,7 @@ void syscall_handler(const struct IsrRegisters regs)
{
const unsigned int id = regs.eax << 16 >> 16;
kernaux_console_printf("[INFO] syscall: number %u\n", id);
kernaux_drivers_console_printf("[INFO] syscall: number %u\n", id);
switch (id) {
case KERNEL_SYSCALL_EXIT: syscall_do_exit(regs); break;
@ -21,5 +21,5 @@ void syscall_do_exit(const struct IsrRegisters regs)
{
const unsigned int exit_code = regs.ebx << 16 >> 16;
kernaux_console_printf("[WARN] syscall: process try to exit with error code %u, haha\n", exit_code);
kernaux_drivers_console_printf("[WARN] syscall: process try to exit with error code %u, haha\n", exit_code);
}

View File

@ -1,11 +1,11 @@
#include "timer.h"
#include <kernaux/asm/i386.h>
#include <kernaux/console.h>
#include <kernaux/drivers/console.h>
void timer_initialize(unsigned int frequency)
{
kernaux_console_print("[INFO] timer: Initialize timer.\n");
kernaux_drivers_console_print("[INFO] timer: Initialize timer.\n");
const unsigned int divisor = 1193180 / frequency;