Files
osc2025/kernel/main.c
2025-03-23 11:21:31 +08:00

91 lines
1.6 KiB
C

#include <logger.h>
#include <kmalloc.h>
#include <uart.h>
#include <dtb.h>
#include <initrd.h>
#include <mman.h>
#include <shell.h>
#include <vector.h>
#include <utils.h>
void init(void *dtb, file_node_t **initrd_root)
{
// UART
uart_init();
// Device tree
INFOR(dtb);
dtb_start = dtb;
vector_t *dtb_struct_cbs = make_vector(0);
VEC_PUSH(dtb_struct_cbs, &initrd_dtb_cb);
VEC_PUSH(dtb_struct_cbs, &mman_dtb_memory_cb);
fdt_traverse(dtb_struct_cbs);
DEBUG("device tree parse done");
// Initramfs
INFOR(initrd_start);
*initrd_root = initrd_init();
// Memory (Buddy system)
mman_init();
}
void main(void *dtb)
{
file_node_t *initrd_root = 0x0;
init(dtb, &initrd_root);
uint64_t el;
R_SYSREG(el, CurrentEL);
INFOR(el);
void *page1 = allocate_page(1);
INFOR(page1);
void *page2 = allocate_page(2);
INFOR(page2);
void *page4 = allocate_page(4);
INFOR(page4);
void *page16 = allocate_page(16);
INFOR(page16);
free_page(page1);
free_page(page2);
free_page(page4);
free_page(page16);
void *page32 = allocate_page(32);
INFOR(page32);
page1 = allocate_page(1);
INFOR(page1);
free_page(page1);
void *kmalloc8 = kmalloc(8);
INFOR(kmalloc8);
kfree(kmalloc8);
kmalloc8 = kmalloc(8);
INFOR(kmalloc8);
kfree(kmalloc8);
void *kmalloc7k = kmalloc(7 * (1 << 10));
INFOR(kmalloc7k);
void *kmalloc8k = kmalloc(1 << 13);
INFOR(kmalloc8k);
kfree(kmalloc7k);
kfree(kmalloc8k);
page1 = allocate_page(1);
INFOR(page1);
int shell_cont = 1;
while (shell_cont) {
shell_cont = shell(initrd_root);
}
}