From c2be814ab537a9c0ccbfdf7fdae32b56e68a34fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Mon, 22 May 2006 19:37:40 +0000 Subject: [PATCH] added an Haiku-specific RLIMIT (NumOpenVnodeMONitors) (UNIMPLEMENTED yet) (we might want to renumber it), and used that one and NOFILE to implement R5 private calls _kset_[fd|mon]_limit_() git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17545 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/posix/sys/resource.h | 4 ++++ src/system/libroot/os/arch/x86/compatibility.c | 18 ++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/headers/posix/sys/resource.h b/headers/posix/sys/resource.h index d9d9e75093..05dbba4770 100644 --- a/headers/posix/sys/resource.h +++ b/headers/posix/sys/resource.h @@ -25,6 +25,10 @@ struct rlimit { #define RLIMIT_NOFILE 4 /* number of open files */ #define RLIMIT_STACK 5 /* stack size */ #define RLIMIT_AS 6 /* address space size */ +/* Haiku-specifics */ +#define RLIMIT_NOVMON 7 /* number of open vnode monitors */ + +#define RLIM_NLIMITS 8 /* number of resource limits */ #define RLIM_INFINITY (0xffffffffUL) #define RLIM_SAVED_MAX RLIM_INFINITY diff --git a/src/system/libroot/os/arch/x86/compatibility.c b/src/system/libroot/os/arch/x86/compatibility.c index 766ce1dde8..99bf544a52 100644 --- a/src/system/libroot/os/arch/x86/compatibility.c +++ b/src/system/libroot/os/arch/x86/compatibility.c @@ -10,7 +10,9 @@ #include +#include #include +#include int _kset_mon_limit_(int num); @@ -23,14 +25,26 @@ int _kset_cpu_state_(int cpuNum, int state); int _kset_mon_limit_(int num) { - return B_ERROR; + struct rlimit rl; + if (num < 1) + return EINVAL; + rl.rlim_cur = num; + if (setrlimit(RLIMIT_NOVMON, &rl) < 0) + return errno; + return B_OK; } int _kset_fd_limit_(int num) { - return B_ERROR; + struct rlimit rl; + if (num < 1) + return EINVAL; + rl.rlim_cur = num; + if (setrlimit(RLIMIT_NOFILE, &rl) < 0) + return errno; + return B_OK; }