diff options
Diffstat (limited to 'common/uapi/mem.c')
| -rw-r--r-- | common/uapi/mem.c | 19 |
1 files changed, 19 insertions, 0 deletions
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 @@ -33,6 +33,25 @@ SYSCALL_DEFINE2(req_mem)(struct tcb *t, sys_arg_t size, sys_arg_t flags) } /** + * 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. * * @param t Current tcb. |
