kernel: rework init

This commit is contained in:
Matheus
2025-08-14 20:25:43 -03:00
parent fb6cbe49d7
commit 607566531d
41 changed files with 268 additions and 164 deletions
+5
View File
@@ -7,12 +7,15 @@
#include <uacpi/event.h>
#include <kernel/acpi.h>
#include <kernel/interrupt.h>
#include <kernel/init.h>
#include <logging.h>
void acpi_early_init(void) {
__assert(uacpi_initialize(0) == UACPI_STATUS_OK);
}
INIT_ROUTINE_DEFINE(acpi_early, INIT_ROUTINE_FLAGS_NONE, acpi_early_init, alloc);
void acpi_dopoweroff(uacpi_handle ctx) {
(void)ctx;
acpi_signaldevice('p');
@@ -37,6 +40,8 @@ void acpi_init(void) {
uacpi_install_fixed_event_handler(UACPI_FIXED_EVENT_POWER_BUTTON, handle_pwrbtn, UACPI_NULL);
}
INIT_ROUTINE_DEFINE(acpi, INIT_ROUTINE_FLAGS_NONE, acpi_init, pci, devfs, scheduler);
int acpi_poweroff(void) {
uacpi_status ret = uacpi_prepare_for_sleep_state(UACPI_SLEEP_STATE_S5);
if (uacpi_unlikely_error(ret)) {
+3
View File
@@ -10,6 +10,7 @@
#include <arch/cpu.h>
#include <errno.h>
#include <kernel/block.h>
#include <kernel/init.h>
#define CC_ENABLE(cc) cc = (cc) | 1
#define CC_DISABLE(cc) cc = (cc) & ~1
@@ -788,3 +789,5 @@ void nvme_init() {
initcontroller(e);
}
}
INIT_ROUTINE_DEFINE(nvme, INIT_ROUTINE_FLAGS_NONE, nvme_init, acpi);
+3
View File
@@ -9,6 +9,7 @@
#include <termios.h>
#include <kernel/poll.h>
#include <kernel/tty.h>
#include <kernel/init.h>
static mutex_t writemutex;
static thread_t *thread;
@@ -124,3 +125,5 @@ void console_init() {
tty->winsize.ws_xpixel = fbx;
tty->winsize.ws_ypixel = fby;
}
INIT_ROUTINE_DEFINE(console, INIT_ROUTINE_FLAGS_NONE, console_init, scheduler, keyboard);
+3
View File
@@ -7,6 +7,7 @@
#include <arch/cpu.h>
#include <kernel/pmm.h>
#include <kernel/usercopy.h>
#include <kernel/init.h>
typedef struct bitfield_t {
uint32_t offset;
@@ -256,3 +257,5 @@ void fb_init() {
printf("%s: %dx%d %d bpp\n", name, fb->width, fb->height, fb->bpp);
}
}
INIT_ROUTINE_DEFINE(fb, INIT_ROUTINE_FLAGS_NONE, fb_init, devfs);
+3
View File
@@ -6,6 +6,7 @@
#include <hashtable.h>
#include <kernel/poll.h>
#include <kernel/usercopy.h>
#include <kernel/init.h>
#define BUFFER_PACKET_CAPACITY 100
#define BUFFER_SIZE (BUFFER_PACKET_CAPACITY * sizeof(kbpacket_t))
@@ -252,3 +253,5 @@ void keyboard_init() {
__assert(keyboard_console);
__assert(hashtable_init(&kbtable, 20) == 0);
}
INIT_ROUTINE_DEFINE(keyboard, INIT_ROUTINE_FLAGS_NONE, keyboard_init, bsp_early);
+3
View File
@@ -7,6 +7,7 @@
#include <kernel/eth.h>
#include <ringbuffer.h>
#include <kernel/event.h>
#include <kernel/init.h>
#define CACHE_TIMEOUT_SEC 300
#define CACHE_TIMEOUT_MS (CACHE_TIMEOUT_SEC * 1000)
@@ -315,3 +316,5 @@ void arp_init() {
sched_queue(handlerthread);
sched_queue(cleanupthread);
}
INIT_ROUTINE_DEFINE(arp, INIT_ROUTINE_FLAGS_NONE, arp_init, scheduler);
+3
View File
@@ -5,6 +5,7 @@
#include <mutex.h>
#include <kernel/alloc.h>
#include <kernel/abi.h>
#include <kernel/init.h>
typedef struct {
netdev_t *netdev;
@@ -229,3 +230,5 @@ void ipv4_init() {
__assert(routingtable);
__assert(ipv4_addroute(loopback_device(), 0x7f000001, 0, 0xff000000, 10000) == 0);
}
INIT_ROUTINE_DEFINE(ipv4, INIT_ROUTINE_FLAGS_NONE, ipv4_init, devfs)
+3
View File
@@ -5,6 +5,7 @@
#include <kernel/net.h>
#include <hashtable.h>
#include <arch/cpu.h>
#include <kernel/init.h>
static netdev_t loopbacknetdev;
@@ -64,3 +65,5 @@ void loopback_init() {
__assert(netdev_register(&loopbacknetdev, "lo") == 0);
}
INIT_ROUTINE_DEFINE(loopback, INIT_ROUTINE_FLAGS_NONE, loopback_init, devfs);
+3
View File
@@ -5,6 +5,7 @@
#include <kernel/timekeeper.h>
#include <kernel/interrupt.h>
#include <kernel/auth.h>
#include <kernel/init.h>
#define WORKER_COUNT 12
#define WORKER_BUFFER_SIZE (64 * 1024)
@@ -1879,3 +1880,5 @@ void tcp_init() {
sched_queue(thread);
}
}
INIT_ROUTINE_DEFINE(tcp, INIT_ROUTINE_FLAGS_NONE, tcp_init, ipv4, scheduler);
+3
View File
@@ -3,6 +3,7 @@
#include <kernel/pci.h>
#include <kernel/alloc.h>
#include <kernel/vmm.h>
#include <kernel/init.h>
uint8_t pci_read8(int bus, int device, int function, uint32_t offset) {
return (pci_archread32(bus, device, function, offset) >> ((offset & 0b11) * 8)) & 0xff;
@@ -279,3 +280,5 @@ void pci_init() {
}
}
}
INIT_ROUTINE_DEFINE(pci, INIT_ROUTINE_FLAGS_NONE, pci_init, scheduler);
+3
View File
@@ -3,6 +3,7 @@
#include <string.h>
#include <logging.h>
#include <kernel/timekeeper.h>
#include <kernel/init.h>
static int null_write(int minor, iovec_iterator_t *iovec_iterator, size_t count, uintmax_t offset, int flags, size_t *wcount) {
*wcount = count;
@@ -77,3 +78,5 @@ void pseudodevices_init() {
__assert(devfs_register(&zeroops, "zero", V_TYPE_CHDEV, DEV_MAJOR_ZERO, 0, 0666, NULL) == 0);
__assert(devfs_register(&urandomops, "urandom", V_TYPE_CHDEV, DEV_MAJOR_URANDOM, 0, 0666, NULL) == 0);
}
INIT_ROUTINE_DEFINE(pseudo_devices, INIT_ROUTINE_FLAGS_NONE, pseudodevices_init, devfs);
+3
View File
@@ -4,6 +4,7 @@
#include <logging.h>
#include <kernel/alloc.h>
#include <kernel/usercopy.h>
#include <kernel/init.h>
#define PTY_BUFFER 4096
#define PTY_MAX 1024
@@ -285,3 +286,5 @@ void pty_init() {
__assert(devfs_createdir("pts") == 0);
SPINLOCK_INIT(listlock);
}
INIT_ROUTINE_DEFINE(pty, INIT_ROUTINE_FLAGS_NONE, pty_init, tty);
+3
View File
@@ -8,6 +8,7 @@
#include <string.h>
#include <kernel/pmm.h>
#include <arch/mmu.h>
#include <kernel/init.h>
extern volatile struct limine_framebuffer_request fb_liminereq;
static size_t xs, ys, fbxs, fbys;
@@ -66,3 +67,5 @@ void term_init() {
MUTEX_INIT(&term_mutex);
}
INIT_ROUTINE_DEFINE(term, INIT_ROUTINE_FLAGS_NONE, term_init, pmm);
+3
View File
@@ -4,6 +4,7 @@
#include <kernel/alloc.h>
#include <kernel/jobctl.h>
#include <kernel/usercopy.h>
#include <kernel/init.h>
#define TTY_MAX_COUNT 4096
#define CONTROLLING_TTY_MINOR TTY_MAX_COUNT
@@ -552,3 +553,5 @@ void tty_init() {
__assert(devfs_register(&devops, "tty", V_TYPE_CHDEV, DEV_MAJOR_TTY, CONTROLLING_TTY_MINOR, 0666, NULL) == 0);
MUTEX_INIT(&listmutex);
}
INIT_ROUTINE_DEFINE(tty, INIT_ROUTINE_FLAGS_NONE, tty_init, devfs);
+3
View File
@@ -3,6 +3,7 @@
#include <logging.h>
#include <kernel/alloc.h>
#include <kernel/pmm.h>
#include <kernel/init.h>
#define VIRTIO_VENDOR 0x1af4
#define VIRTIO_DEVICE_MIN 0x1000
@@ -176,3 +177,5 @@ void virtio_init() {
}
}
}
INIT_ROUTINE_DEFINE(virtio, INIT_ROUTINE_FLAGS_NONE, virtio_init, acpi);