diff --git a/repos/ports/src/lib/libc_noux/plugin.cc b/repos/ports/src/lib/libc_noux/plugin.cc index 0c9994b80..ffe975ce1 100644 --- a/repos/ports/src/lib/libc_noux/plugin.cc +++ b/repos/ports/src/lib/libc_noux/plugin.cc @@ -282,16 +282,14 @@ extern "C" int getrlimit(int resource, struct rlimit *rlim) using namespace Genode; Thread_base * me = Thread_base::myself(); - if (me) { - addr_t top = reinterpret_cast(me->stack_top()); - addr_t cur = reinterpret_cast(me->stack_base()); - rlim->rlim_cur = rlim->rlim_max = top - cur; - return 0; - } + if (!me) + break; - /* XXX - fix Thread_base::myself to be working also for main thread */ - rlim->rlim_cur = rlim->rlim_max = 64 * 1024; + addr_t top = reinterpret_cast(me->stack_top()); + addr_t cur = reinterpret_cast(me->stack_base()); + + rlim->rlim_cur = rlim->rlim_max = top - cur; return 0; } case RLIMIT_AS: @@ -304,6 +302,10 @@ extern "C" int getrlimit(int resource, struct rlimit *rlim) case RLIMIT_RSS: rlim->rlim_cur = rlim->rlim_max = Genode::env()->ram_session()->quota(); return 0; + case RLIMIT_NPROC: + case RLIMIT_NOFILE: + rlim->rlim_cur = rlim->rlim_max = RLIM_INFINITY; + return 0; } errno = ENOSYS; PDBG("not implemented %d", resource);