Files
my-os-project2/kernel/kmain.c
2025-11-17 04:43:41 +01:00

64 lines
1.4 KiB
C

#include <limine.h>
#include "kprintf.h"
#include "banner.h"
#include "bootinfo/bootinfo.h"
#include "pmm/pmm.h"
#include "term/term.h"
#include "dlmalloc/malloc.h"
#include "vfs/vfs.h"
#include "baseimg/baseimg.h"
#include "storedev/storedev.h"
#include "util/util.h"
#include "proc/proc.h"
#include "dev/dev.h"
#include "randcrypto/randcrypto.h"
#include "time/time.h"
#include "diskpart/diskpart.h"
#include "vmm/vmm.h"
#include "cpu/hang.h"
#include "cpu/gdt.h"
#include "ipc/mbus/mbus.h"
#include "pci/pci.h"
void log_bootinfo(void) {
char buf[100];
LOG("kmain", "Memory total = %s\n", human_size(BOOT_INFO.memmap_total, buf, sizeof(buf)));
}
void log_time(void) {
Time time;
time_get(&time);
timeunix_t unix = time_tounix(&time);
LOG("kmain", "TIME: %02u/%02u/%02u %02u:%02u:%02u (%lu)\n", time.day, time.month, time.year,
time.hour, time.minute, time.second,
unix);
}
static volatile LIMINE_BASE_REVISION(2);
void kmain(void) {
if (LIMINE_BASE_REVISION_SUPPORTED == false) {
cpu_hang();
}
bootinfo_init();
term_init(BOOT_INFO.fb->address);
log_bootinfo();
log_time();
gdt_init();
pmm_init();
vmm_init();
intr_init();
pci_init();
randcrypto_init();
ipc_mbusinit();
dev_init();
storedev_init();
diskpart_init();
baseimg_init();
vfs_init();
proc_init();
for(;;);
}