diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2022-11-21 14:02:17 +0200 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2022-11-21 14:02:17 +0200 |
| commit | 62d395d206171fdaf3fa62c495633990198db6c4 (patch) | |
| tree | bed68b4a0fd5ff5897f78418fd3527eb05c72ec9 /common/uapi/mem.c | |
| parent | d312c853a8c9e6e2fd457fa5f840e65a9a738e7d (diff) | |
| download | kmi-62d395d206171fdaf3fa62c495633990198db6c4.tar.gz kmi-62d395d206171fdaf3fa62c495633990198db6c4.zip | |
possible optimisations
Diffstat (limited to 'common/uapi/mem.c')
| -rw-r--r-- | common/uapi/mem.c | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/common/uapi/mem.c b/common/uapi/mem.c index 599c971..fccb0f7 100644 --- a/common/uapi/mem.c +++ b/common/uapi/mem.c @@ -20,10 +20,9 @@ * @return \ref OK and start of allocation when succesful, * \ref ERR_OOMEM and \c NULL otherwise. */ -SYSCALL_DEFINE2(req_mem)(sys_arg_t size, sys_arg_t flags) +SYSCALL_DEFINE2(req_mem)(struct tcb *t, sys_arg_t size, sys_arg_t flags) { - /* get current effective process */ - struct tcb *r = cur_proc(); + struct tcb *r = get_cproc(t); vm_t start = 0; if ((start = alloc_uvmem(r, size, flags))) return SYS_RET1(ERR_OOMEM); @@ -40,9 +39,9 @@ SYSCALL_DEFINE2(req_mem)(sys_arg_t size, sys_arg_t flags) * @return \ref OK and start of allocation when succesful, * \ref ERR_OOMEM and \c NULL otherwise. */ -SYSCALL_DEFINE3(req_fixmem)(sys_arg_t fixed, sys_arg_t size, sys_arg_t flags) +SYSCALL_DEFINE3(req_fixmem)(struct tcb *t, sys_arg_t fixed, sys_arg_t size, sys_arg_t flags) { - struct tcb *r = cur_proc(); + struct tcb *r = get_cproc(t); vm_t start = 0; if ((start = alloc_fixed_uvmem(r, fixed, size, flags))) return SYS_RET1(ERR_OOMEM); @@ -56,9 +55,9 @@ SYSCALL_DEFINE3(req_fixmem)(sys_arg_t fixed, sys_arg_t size, sys_arg_t flags) * @param start Start of allocation to free. * @return \ref OK and \c 0 when succesful, \ref ERR_NF and \c 0 otherwise. */ -SYSCALL_DEFINE1(free_mem)(sys_arg_t start) +SYSCALL_DEFINE1(free_mem)(struct tcb *t, sys_arg_t start) { - struct tcb *r = cur_proc(); + struct tcb *r = get_cproc(t); vm_t vm_start = (vm_t)start; stat_t status = OK; @@ -82,14 +81,14 @@ SYSCALL_DEFINE1(free_mem)(sys_arg_t start) * @return \ref OK and start of allocation when succesful, * \ref ERR_OOMEM and \c NULL otherwise. */ -SYSCALL_DEFINE3(req_pmem)(sys_arg_t paddr, sys_arg_t size, sys_arg_t flags) +SYSCALL_DEFINE3(req_pmem)(struct tcb *t, 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 * outside the RAM area, and I'll probably have to implement some method * that keeps track of used regions outside of RAM. We'll see. */ - struct tcb *r = cur_proc(); + struct tcb *r = get_cproc(t); vm_t start = 0; if ((start = alloc_devmem(r, paddr, size, flags))) return SYS_RET1(ERR_OOMEM); @@ -105,12 +104,12 @@ SYSCALL_DEFINE3(req_pmem)(sys_arg_t paddr, sys_arg_t size, sys_arg_t flags) * @return \ref OK and start of allocation when succesful, * \ref ERR_OOMEM and \c NULL otherwise. */ -SYSCALL_DEFINE2(req_sharedmem)(sys_arg_t size, sys_arg_t flags) +SYSCALL_DEFINE2(req_sharedmem)(struct tcb *t, sys_arg_t size, sys_arg_t flags) { /** \todo check that requester is server */ - struct tcb *t = cur_proc(); + struct tcb *r = get_cproc(t); vm_t start = 0; - if ((start = alloc_shared_uvmem(t, size, flags))) + if ((start = alloc_shared_uvmem(r, size, flags))) return SYS_RET1(ERR_OOMEM); return SYS_RET2(OK, start); @@ -125,12 +124,11 @@ SYSCALL_DEFINE2(req_sharedmem)(sys_arg_t size, sys_arg_t flags) * @return \ref OK and start of reference when succesful, * \ref ERR_OOMEM and \c NULL otherwise. */ -SYSCALL_DEFINE3(ref_sharedmem)(sys_arg_t tid, sys_arg_t va, sys_arg_t flags) +SYSCALL_DEFINE3(ref_sharedmem)(struct tcb *t, sys_arg_t tid, sys_arg_t va, sys_arg_t flags) { - struct tcb *t1 = cur_tcb(); struct tcb *t2 = get_tcb(tid); vm_t start = 0; - if ((start = ref_shared_uvmem(t1, t2, va, flags))) + if ((start = ref_shared_uvmem(t, t2, va, flags))) return SYS_RET1(ERR_OOMEM); return SYS_RET2(OK, start); |
