mirror of https://github.com/tailix/kernel.git
Fix console
This commit is contained in:
parent
f0d6aeafe1
commit
a48fa61e64
|
@ -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.");
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
16
kernel/pic.c
16
kernel/pic.c
|
@ -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;
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue