feat: initial scalable x86_64 microkernel skeleton with Limine, Rust, C HAL, and C++20 IPC

This commit is contained in:
RarDog
2026-09-02 16:47:37 +03:00
commit 9cffb01889
47 changed files with 2432 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
#include "ipc.hpp"
#include "stdio.h"
#include "string.h"
extern "C" void _start() {
puts("[INIT-SERVER] Userspace Root Init Server Started (Ring 3)!");
// 1. Instantiate RAII IPC Endpoint for Kernel Control
ipc::Endpoint kernel_ctrl(CAP_SELF_TASK);
puts("[INIT-SERVER] Sending Fast-Path IPC Ping to Microkernel...");
auto ping_res = kernel_ctrl.call(IPC_OP_PING, 100);
if (ping_res.is_ok()) {
puts("[INIT-SERVER] Received IPC Ping Response from Microkernel!");
} else {
puts("[INIT-SERVER] IPC Call Failed!");
}
// 2. Register Server Endpoint
puts("[INIT-SERVER] Registering Root Server Capability...");
auto reg_res = kernel_ctrl.call(IPC_OP_REGISTER_SERVER, 0x1337BEEF);
if (reg_res.is_ok()) {
puts("[INIT-SERVER] Server Registered Successfully!");
}
puts("[INIT-SERVER] Root Init Server ready. Entering event loop.");
while (true) {
sys_yield();
}
}
+10
View File
@@ -0,0 +1,10 @@
#include "ipc.hpp"
#include "stdio.h"
extern "C" void _start() {
puts("[PROCMGR] Process & Server Manager Daemon Initialized.");
while (true) {
sys_yield();
}
}
+17
View File
@@ -0,0 +1,17 @@
#include "uart.h"
#include "stdio.h"
#include "abi/syscalls.h"
extern void _start(void) {
uart_init(UART_COM1_PORT, 115200);
uart_puts(UART_COM1_PORT, "[RING3-UART-DRIVER] 16550 UART COM1 initialized from userspace!\n");
while (1) {
if (uart_has_data(UART_COM1_PORT)) {
char c = uart_getc(UART_COM1_PORT);
// Echo back
uart_putc(UART_COM1_PORT, c);
}
sys_yield();
}
}