#ifndef __MEMORY_H #define __MEMORY_H #include "multiboot.h" #include "schedule.h" struct mem_info { unsigned int used; unsigned int total; }; extern char *mem_alloc_pages(int count); extern void init_mem(multiboot_info_t *mbd); extern void init_paging(); extern unsigned int mem_usr_sbrk(int amount); extern int mem_map_krnl_page(unsigned int virt); extern int mem_map_user_page(unsigned int virt); extern unsigned int *mem_new_pagedirectory(struct task_t *task); extern void *malloc(unsigned int size); extern void free(void *ptr); extern void *realloc(void *ptr, unsigned int size); extern unsigned char *mem_map_framebuffer(unsigned int phys, unsigned int fb_length); extern char *mem_alloc(void); extern void mem_free(char *blk, char *caller); extern unsigned char *mem_map_page(unsigned int phys, unsigned int virt, int flags); extern unsigned char *mem_map_page_in(unsigned int phys, unsigned int virt, unsigned int cr3, int flags); extern void mem_clear_user_pages(); extern int mem_cpy_pages(struct task_t *old_task, struct task_t *new_task); extern void mem_free_page_dir(unsigned int *user_page_directory); extern unsigned int mem_pci_sbrk(unsigned int amount); extern unsigned int mem_get_info(struct mem_info *info); #endif