diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2022-05-09 00:12:05 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2022-05-09 00:12:05 +0300 |
| commit | 42a1e087ce99f07b48aaea5552f8e1ce5219d228 (patch) | |
| tree | 086ac77af67a46ff4ba420c4562cbf6a57d09ab0 /common/uapi/mem.c | |
| parent | 658f21dd60bb930c5226b611bbe8cb95713b3f76 (diff) | |
| download | kmi-42a1e087ce99f07b48aaea5552f8e1ce5219d228.tar.gz kmi-42a1e087ce99f07b48aaea5552f8e1ce5219d228.zip | |
improve uapi
Diffstat (limited to 'common/uapi/mem.c')
| -rw-r--r-- | common/uapi/mem.c | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/common/uapi/mem.c b/common/uapi/mem.c index d4893b3..bc3c7fa 100644 --- a/common/uapi/mem.c +++ b/common/uapi/mem.c @@ -3,31 +3,34 @@ #include <apos/vmem.h> #include <apos/dmem.h> -SYSCALL_DEFINE2(req_mem)(vm_t size, vm_t flags) +SYSCALL_DEFINE2(req_mem)(sys_arg_t size, sys_arg_t flags) { /* proc_tcb should give the tcb of the TID currently running */ struct tcb *r = cur_tcb(); - return alloc_uvmem(r, size, flags); + return (struct sys_ret){ OK, alloc_uvmem(r, size, flags) }; } -SYSCALL_DEFINE3(req_fixmem)(vm_t start, vm_t size, vm_t flags) +SYSCALL_DEFINE3(req_fixmem)(sys_arg_t start, sys_arg_t size, sys_arg_t flags) { struct tcb *r = cur_tcb(); - return alloc_fixed_uvmem(r, start, size, flags); + /* should probably check if the allocation succeeded...? TODO */ + return (struct sys_ret){ OK, alloc_fixed_uvmem(r, start, size, flags) }; } -SYSCALL_DEFINE1(free_mem)(vm_t start) +SYSCALL_DEFINE1(free_mem)(sys_arg_t start) { struct tcb *r = cur_tcb(); - if (start > __pre_top && start < __post_base) - free_uvmem(r, start); + vm_t vm_start = (vm_t)start; + + if (vm_start > __pre_top && vm_start < __post_base) + free_uvmem(r, vm_start); else - free_devmem(r, start); + free_devmem(r, vm_start); - return 0; + return (struct sys_ret){ OK, 0 }; } -SYSCALL_DEFINE3(req_pmem)(vm_t paddr, vm_t size, vm_t flags) +SYSCALL_DEFINE3(req_pmem)(sys_arg_t paddr, sys_arg_t size, sys_arg_t flags) { /* this will require some pondering, but essentially this syscall should * only be used for device access, so any addresses requested should be @@ -35,13 +38,13 @@ SYSCALL_DEFINE3(req_pmem)(vm_t paddr, vm_t size, vm_t flags) * that keeps track of used regions outside of RAM. We'll see. */ struct tcb *r = cur_tcb(); - return alloc_devmem(r, paddr, size, flags); + return (struct sys_ret){ OK, alloc_devmem(r, paddr, size, flags) }; } -SYSCALL_DEFINE4(req_sharedmem)(vm_t pid, vm_t start, vm_t size, vm_t flags) +SYSCALL_DEFINE4(req_sharedmem) +(sys_arg_t tid, sys_arg_t start, sys_arg_t size, sys_arg_t flags) { - /* take memory in PID's vaddr and map it somewhere in our own memory - * region. - */ - return 0; + /* called by server, take memory allocation at start and map it into + * tid's address space? */ + return (struct sys_ret){ OK, 0 }; } |
