LibC: Implement getrlimit

This commit is contained in:
2024-12-02 03:54:11 +02:00
parent d2b503910f
commit 6346e288ad
3 changed files with 49 additions and 5 deletions

View File

@@ -1,7 +1,50 @@
#include <BAN/Assert.h>
#include <BAN/Limits.h>
#include <kernel/Thread.h>
#include <errno.h>
#include <limits.h>
#include <sys/resource.h>
int getrlimit(int resource, struct rlimit* rlp)
{
switch (resource)
{
case RLIMIT_CORE:
rlp->rlim_cur = 0;
rlp->rlim_max = 0;
return 0;
case RLIMIT_CPU:
rlp->rlim_cur = BAN::numeric_limits<rlim_t>::max();
rlp->rlim_max = BAN::numeric_limits<rlim_t>::max();
return 0;
case RLIMIT_DATA:
rlp->rlim_cur = BAN::numeric_limits<rlim_t>::max();
rlp->rlim_max = BAN::numeric_limits<rlim_t>::max();
return 0;
case RLIMIT_FSIZE:
rlp->rlim_cur = BAN::numeric_limits<rlim_t>::max();
rlp->rlim_max = BAN::numeric_limits<rlim_t>::max();
return 0;
case RLIMIT_NOFILE:
rlp->rlim_cur = OPEN_MAX;
rlp->rlim_max = OPEN_MAX;
return 0;
case RLIMIT_STACK:
rlp->rlim_cur = Kernel::Thread::userspace_stack_size;
rlp->rlim_max = Kernel::Thread::userspace_stack_size;
return 0;
case RLIMIT_AS:
rlp->rlim_cur = BAN::numeric_limits<rlim_t>::max();
rlp->rlim_max = BAN::numeric_limits<rlim_t>::max();
return 0;
}
errno = EINVAL;
return -1;
}
int getrusage(int who, struct rusage* r_usage)
{
if (who != RUSAGE_CHILDREN && who != RUSAGE_SELF)