From 7015bc95766101c918aba088b577077ba32f0fa3 Mon Sep 17 00:00:00 2001 From: kamkow1 Date: Tue, 11 Nov 2025 19:59:01 +0100 Subject: [PATCH] Decouple I/O from HAL --- kernel/Makefile | 1 + kernel/dev/ps2kbdev.c | 1 + kernel/dev/serialdev.c | 1 + kernel/hal/hal.h | 1 - kernel/hal/x86_64/intr.c | 2 +- kernel/hal/x86_64/pic.c | 2 +- kernel/hal/x86_64/pit.c | 2 +- kernel/{hal/x86_64 => io}/io.c | 1 + kernel/{hal/x86_64 => io}/io.h | 6 +++--- kernel/storedev/atasd.c | 1 + kernel/time/time.c | 1 + 11 files changed, 12 insertions(+), 7 deletions(-) rename kernel/{hal/x86_64 => io}/io.c (98%) rename kernel/{hal/x86_64 => io}/io.h (86%) diff --git a/kernel/Makefile b/kernel/Makefile index 9aae158..da94b42 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -59,6 +59,7 @@ SRCFILES += $(call GRABSRC, \ time \ diskpart \ FastLZ \ + io \ ) CFILES := $(call GET_CFILES, $(SRCFILES)) diff --git a/kernel/dev/ps2kbdev.c b/kernel/dev/ps2kbdev.c index ffe27c4..62f7bed 100644 --- a/kernel/dev/ps2kbdev.c +++ b/kernel/dev/ps2kbdev.c @@ -10,6 +10,7 @@ #include "hshtb.h" #include "sysdefs/dev.h" #include "proc/proc.h" +#include "io/io.h" #define KB_CTL_STATUS 0x64 #define KB_DATA_IN_BUF 0x01 diff --git a/kernel/dev/serialdev.c b/kernel/dev/serialdev.c index 3829fbc..7377cd3 100644 --- a/kernel/dev/serialdev.c +++ b/kernel/dev/serialdev.c @@ -8,6 +8,7 @@ #include "sysdefs/dev.h" #include "kprintf.h" #include "hal/hal.h" +#include "io/io.h" // https://wiki.osdev.org/Serial_Ports diff --git a/kernel/hal/hal.h b/kernel/hal/hal.h index e75ac36..b589717 100644 --- a/kernel/hal/hal.h +++ b/kernel/hal/hal.h @@ -17,7 +17,6 @@ int32_t hal_randnum(void); #include "x86_64/switch.h" #include "x86_64/paging.h" #include "x86_64/intr.h" -#include "x86_64/io.h" #include "x86_64/gdt.h" #endif // KERNEL_HAL_HAL_H_ diff --git a/kernel/hal/x86_64/intr.c b/kernel/hal/x86_64/intr.c index 736a9f8..80ad299 100644 --- a/kernel/hal/x86_64/intr.c +++ b/kernel/hal/x86_64/intr.c @@ -2,7 +2,7 @@ #include #include #include "intr.h" -#include "io.h" +#include "io/io.h" #include "gdt.h" #include "hal/hal.h" #include "kprintf.h" diff --git a/kernel/hal/x86_64/pic.c b/kernel/hal/x86_64/pic.c index d89e380..5275395 100644 --- a/kernel/hal/x86_64/pic.c +++ b/kernel/hal/x86_64/pic.c @@ -1,7 +1,7 @@ #include #include #include "pic.h" -#include "io.h" +#include "io/io.h" #include "intr.h" void pic_init(void) { diff --git a/kernel/hal/x86_64/pit.c b/kernel/hal/x86_64/pit.c index 1055b40..6a7903f 100644 --- a/kernel/hal/x86_64/pit.c +++ b/kernel/hal/x86_64/pit.c @@ -1,6 +1,6 @@ #include #include "pit.h" -#include "io.h" +#include "io/io.h" #define PIT_COUNTER0 0x40 #define PIT_CMD 0x43 diff --git a/kernel/hal/x86_64/io.c b/kernel/io/io.c similarity index 98% rename from kernel/hal/x86_64/io.c rename to kernel/io/io.c index 448f422..6e75653 100644 --- a/kernel/hal/x86_64/io.c +++ b/kernel/io/io.c @@ -1,4 +1,5 @@ #include +#include "io.h" uint8_t io_in8(uint16_t port) { uint8_t r; diff --git a/kernel/hal/x86_64/io.h b/kernel/io/io.h similarity index 86% rename from kernel/hal/x86_64/io.h rename to kernel/io/io.h index 0611bfd..e155240 100644 --- a/kernel/hal/x86_64/io.h +++ b/kernel/io/io.h @@ -1,5 +1,5 @@ -#ifndef HAL_IO_H_ -#define HAL_IO_H_ +#ifndef IO_IO_H_ +#define IO_IO_H_ #include @@ -15,4 +15,4 @@ void io_out32(uint16_t port, uint32_t value); void io_ins16(uint16_t port, void *addr, int cnt); void io_outs16(uint16_t port, const void *addr, int cnt); -#endif // HAL_IO_H_ +#endif // IO_IO_H_ diff --git a/kernel/storedev/atasd.c b/kernel/storedev/atasd.c index 7a4690f..df08d1d 100644 --- a/kernel/storedev/atasd.c +++ b/kernel/storedev/atasd.c @@ -9,6 +9,7 @@ #include "errors.h" #include "hshtb.h" #include "vfs/vfs.h" +#include "io/io.h" #define ATA_REG_DATA 0x00 #define ATA_REG_ERROR 0x01 diff --git a/kernel/time/time.c b/kernel/time/time.c index 6eff46d..0e2c790 100644 --- a/kernel/time/time.c +++ b/kernel/time/time.c @@ -3,6 +3,7 @@ #include "time.h" #include "hal/hal.h" #include "std/string.h" +#include "io/io.h" #define CMOS_PORT 0x70 #define CMOS_RETURN 0x71