#include <string.h>
#include <sys/prctl.h>
#include <sys/resource.h>
+#include <uk/essentials.h>
#include <uk/process.h>
#include <uk/print.h>
#include <uk/syscall.h>
return 0; /* syscall has no effect */
}
-UK_LLSYSCALL_R_DEFINE(int, prlimit64, int, pid, unsigned int, resource,
- struct rlimit *, new_limit, struct rlimit *, old_limit)
+int uk_sys_prlimit64(int pid, unsigned int resource,
+ struct rlimit *new_limit, struct rlimit *old_limit)
{
if (unlikely(pid != 0))
uk_pr_debug("Do not support prlimit64 on PID %u, use current process\n",
return 0;
}
+UK_LLSYSCALL_R_DEFINE(int, prlimit64, int, pid, unsigned int, resource,
+ struct rlimit *, new_limit, struct rlimit *, old_limit)
+{
+ return uk_sys_prlimit64(pid, resource, new_limit, old_limit);
+}
+
UK_SYSCALL_R_DEFINE(int, getrlimit, int, resource, struct rlimit *, rlim)
{
- return uk_syscall_r_prlimit64(0, (long) resource,
- (long) NULL, (long) rlim);
+ return uk_sys_getrlimit(resource, rlim);
}
UK_SYSCALL_R_DEFINE(int, setrlimit, int, resource, const struct rlimit *, rlim)
{
- return uk_syscall_r_prlimit64(0, (long) resource,
- (long) rlim, (long) NULL);
+ return uk_sys_setrlimit(resource, rlim);
}
UK_SYSCALL_R_DEFINE(int, getrusage, int, who,
#include <arch/clone.h>
#include <uk/config.h>
#include <stdbool.h>
+#include <sys/resource.h>
#if CONFIG_LIBUKSCHED
#include <uk/thread.h>
#endif
#endif
#endif /* CONFIG_LIBPOSIX_PROCESS_CLONE */
+int uk_sys_prlimit64(int pid, unsigned int resource,
+ struct rlimit *new_limit, struct rlimit *old_limit);
+
+static inline int uk_sys_getrlimit(int resource, struct rlimit *rlim)
+{
+ return uk_sys_prlimit64(0, resource, NULL, rlim);
+}
+
+static inline int uk_sys_setrlimit(int resource, const struct rlimit *rlim)
+{
+ return uk_sys_prlimit64(0, resource,
+ DECONST(struct rlimit *, rlim), NULL);
+}
+
#if CONFIG_LIBUKSCHED
int uk_posix_process_create(struct uk_alloc *a,
struct uk_thread *thread,