33 lines
837 B
C

#include <memory.h>
#include <debug.h>
static long _brk = KERNEL_BRK0;
static long _mmap = KERNEL_MMAP;
long k_brk(long brk, long, long, long, long, long) {
if(brk) {
while(_brk < brk) {
vmm_set_page(kernel_P4, _brk, pmm_alloc(), PAGE_GLOBAL | PAGE_WRITE | PAGE_PRESENT);
_brk += PAGE_SIZE;
}
return _brk;
} else {
return _brk;
}
}
long k_mmap(long addr, long length, long prot, long flags, long fd, long offset) {
(void)addr;
(void)prot;
(void)flags;
(void)offset;
if(fd != -1)
PANIC("Unknown mmap request\n");
long retval = _mmap;
while(length > 0) {
vmm_set_page(kernel_P4, _mmap, pmm_alloc(), PAGE_GLOBAL | PAGE_WRITE | PAGE_PRESENT);
_mmap += PAGE_SIZE;
length -= PAGE_SIZE;
}
return retval;
}