aboutsummaryrefslogtreecommitdiff
path: root/common/uapi/mem.c
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2022-11-21 14:02:17 +0200
committerKimplul <kimi.h.kuparinen@gmail.com>2022-11-21 14:02:17 +0200
commit62d395d206171fdaf3fa62c495633990198db6c4 (patch)
treebed68b4a0fd5ff5897f78418fd3527eb05c72ec9 /common/uapi/mem.c
parentd312c853a8c9e6e2fd457fa5f840e65a9a738e7d (diff)
downloadkmi-62d395d206171fdaf3fa62c495633990198db6c4.tar.gz
kmi-62d395d206171fdaf3fa62c495633990198db6c4.zip
possible optimisations
Diffstat (limited to 'common/uapi/mem.c')
-rw-r--r--common/uapi/mem.c28
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);