X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/9fe5e02cf615ad121c4460fbaaac2787d1e09c0e..313093773e81eb89ad3c44b048a79bbcd6e94099:/lunaix-os/kernel/mm/dmm.c diff --git a/lunaix-os/kernel/mm/dmm.c b/lunaix-os/kernel/mm/dmm.c index 04a0249..cc75bd9 100644 --- a/lunaix-os/kernel/mm/dmm.c +++ b/lunaix-os/kernel/mm/dmm.c @@ -1,19 +1,30 @@ -#include -#include +#include +#include +#include -// This is a temporary design. -// We can do better when we are ready for multitasking -void -lxsbrk(void* current, void* next) { - // TODO: sbrk -} +#include +#include +#include + +__DEFINE_LXSYSCALL1(void*, sbrk, ssize_t, incr) +{ + struct proc_mm* pvms = &__current->mm; + struct mm_region* heap = pvms->heap; -void -lxmalloc(size_t size) { - // TODO: Malloc + assert(heap); + int err = mem_adjust_inplace(&pvms->regions, heap, heap->end + incr); + if (err) { + return (void*)DO_STATUS(err); + } + return (void*)heap->end; } -void -lxfree(size_t size) { - // TODO: Free +__DEFINE_LXSYSCALL1(int, brk, void*, addr) +{ + struct proc_mm* pvms = &__current->mm; + struct mm_region* heap = pvms->heap; + + assert(heap); + int err = mem_adjust_inplace(&pvms->regions, heap, (ptr_t)addr); + return DO_STATUS(err); } \ No newline at end of file