Add mmap kernel syscall. Needed for large malloc
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#include <debug.h>
|
||||
|
||||
static long _brk = KERNEL_BRK0;
|
||||
static long _mmap = KERNEL_MMAP;
|
||||
|
||||
long k_brk(long brk, long, long, long, long, long)
|
||||
{
|
||||
@@ -15,4 +16,22 @@ long k_brk(long brk, long, long, long, long, long)
|
||||
} 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_WRITE | PAGE_PRESENT);
|
||||
_mmap += PAGE_SIZE;
|
||||
length -= PAGE_SIZE;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
Reference in New Issue
Block a user