#ifndef MEMORY_H #define MEMORY_H #include "types.h" #define VIRTUAL_HEAP_START ((void *)0x40000000) #define KERNEL_CODE_SEG 0x08 #define KERNEL_DATA_SEX 0x10 #define USER_CODE_SEG 0x18 #define USER_DATA_SEG 0x20 #define PAGE_SIZE 4096 #define PAGE_PRESENT_FLAG 0x001 #define PAGE_RW_FLAG 0x002 #define KERNEL_MEMORY_FLAGS (PAGE_PRESENT_FLAG | PAGE_RW_FLAG) typedef char **pd_t; typedef char *pt_t; extern void ld_kernel_end; char *kernel_end; void memory_init(size_t avail_memory); void *alloc_page(); void free_page(void *page); void map_page(void *phys_addr, void *virtual_addr); void *valloc_page(); void *kmalloc(); void kfree(void *p); void set_cr3(pd_t *pd); pd_t *create_pd(); void *sys_sbrk(unsigned int n); void to_kernel_context(); void to_process_context(); #endif /* MEMORY_H */