Feat: lab 4
This commit is contained in:
@@ -1,25 +1,82 @@
|
||||
#include <logger.h>
|
||||
#include <kmalloc.h>
|
||||
#include <uart.h>
|
||||
#include <dtb.h>
|
||||
#include <initrd.h>
|
||||
#include <mman.h>
|
||||
#include <shell.h>
|
||||
#include <vector.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)
|
||||
{
|
||||
uart_init();
|
||||
uart_getc();
|
||||
|
||||
DEBUG(dtb);
|
||||
file_node_t *initrd_root = 0x0;
|
||||
init(dtb, &initrd_root);
|
||||
|
||||
dtb_addr = dtb;
|
||||
vector_t *dtb_cbs = make_vector(0);
|
||||
VEC_PUSH(dtb_cbs, &initrd_dtb_cb);
|
||||
fdt_traverse(dtb_cbs);
|
||||
void *page1 = allocate_page(1);
|
||||
INFOR(page1);
|
||||
|
||||
DEBUG(initrd_start);
|
||||
DEBUG(initrd_end);
|
||||
void *page2 = allocate_page(2);
|
||||
INFOR(page2);
|
||||
|
||||
file_node_t *initrd_root = initrd_init();
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user