From 8a5e4cf53d981e793fca90d9b51bd395265cf4db Mon Sep 17 00:00:00 2001 From: Kimplul Date: Thu, 26 Jan 2023 15:53:16 +0200 Subject: add req_page syscall --- common/uapi/mem.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'common/uapi/mem.c') diff --git a/common/uapi/mem.c b/common/uapi/mem.c index 099028e..41ebcca 100644 --- a/common/uapi/mem.c +++ b/common/uapi/mem.c @@ -32,6 +32,25 @@ SYSCALL_DEFINE2(req_mem)(struct tcb *t, sys_arg_t size, sys_arg_t flags) return_args(t, SYS_RET2(OK, start)); } +/** + * Allocate single page to program. + * + * @param t Current tcb. + * @param size Size of the allocation. + * @param flags Flags of allocation. + * @return \ref ERR_OOMEM if unsucessful, otherwise \ref OK, virtual address, + * actual size, physical address, in that order. + */ +SYSCALL_DEFINE2(req_page)(struct tcb *t, sys_arg_t size, sys_arg_t flags) +{ + struct tcb *r = get_cproc(t); + vm_t start = 0; pm_t paddr = 0; size_t asize = size; + if (!(start = alloc_uvpage(r, asize, flags, &asize, &paddr))) + return_args(t, SYS_RET1(ERR_OOMEM)); + + return_args(t, SYS_RET4(OK, start, asize, paddr)); +} + /** * Fixed memory request syscall handler. * -- cgit v1.3