|
@@ -566,18 +566,59 @@ _syscall2(int, sethostname, const char *, name, size_t, len);
|
|
|
#endif
|
|
|
|
|
|
|
|
|
+#ifndef __NR_ugetrlimit
|
|
|
+
|
|
|
+#ifdef L___setrlimit
|
|
|
+#define __NR___setrlimit __NR_setrlimit
|
|
|
+#include <unistd.h>
|
|
|
+#include <sys/resource.h>
|
|
|
+_syscall2(int, __setrlimit, int, resource, const struct rlimit *, rlim);
|
|
|
+int setrlimit (enum __rlimit_resource resource, const struct rlimit *rlimits)
|
|
|
+{
|
|
|
+ struct rlimit rlimits_small;
|
|
|
+
|
|
|
+ * were signed the new values might be too large. */
|
|
|
+ rlimits_small.rlim_cur = MIN ((unsigned long int) rlimits->rlim_cur,
|
|
|
+ RLIM_INFINITY >> 1);
|
|
|
+ rlimits_small.rlim_max = MIN ((unsigned long int) rlimits->rlim_max,
|
|
|
+ RLIM_INFINITY >> 1);
|
|
|
+ return(__setrlimit(resource, &rlimits_small));
|
|
|
+}
|
|
|
+#endif
|
|
|
+#else
|
|
|
#ifdef L_setrlimit
|
|
|
#include <unistd.h>
|
|
|
#include <sys/resource.h>
|
|
|
_syscall2(int, setrlimit, int, resource, const struct rlimit *, rlim);
|
|
|
#endif
|
|
|
+#endif
|
|
|
|
|
|
|
|
|
-#ifdef L_getrlimit
|
|
|
+#ifdef L___getrlimit
|
|
|
+
|
|
|
+#ifndef __NR_ugetrlimit
|
|
|
+#define __NR___getrlimit __NR_getrlimit
|
|
|
#include <unistd.h>
|
|
|
#include <sys/resource.h>
|
|
|
-_syscall2(int, getrlimit, int, resource, struct rlimit *, rlim);
|
|
|
+_syscall2(int, __getrlimit, int, resource, struct rlimit *, rlim);
|
|
|
+int getrlimit (enum __rlimit_resource resource, struct rlimit *rlim)
|
|
|
+{
|
|
|
+ int result;
|
|
|
+ result = __getrlimit(resource, rlim);
|
|
|
+
|
|
|
+ if (result == -1)
|
|
|
+ return result;
|
|
|
+
|
|
|
+
|
|
|
+ * were signed the infinity value is too small. */
|
|
|
+ if (rlimits->rlim_cur == RLIM_INFINITY >> 1)
|
|
|
+ rlimits->rlim_cur = RLIM_INFINITY;
|
|
|
+ if (rlimits->rlim_max == RLIM_INFINITY >> 1)
|
|
|
+ rlimits->rlim_max = RLIM_INFINITY;
|
|
|
+ return result;
|
|
|
+}
|
|
|
#endif
|
|
|
+#endif
|
|
|
|
|
|
|
|
|
#ifdef L_getrusage
|
|
@@ -1404,6 +1445,17 @@ _syscall4(ssize_t,sendfile, int, out_fd, int, in_fd, __off_t *, offset, size_t,
|
|
|
|
|
|
|
|
|
|
|
|
+#ifdef L___ugetrlimit
|
|
|
+#define __NR___ugetrlimit __NR_ugetrlimit
|
|
|
+#include <unistd.h>
|
|
|
+#include <sys/resource.h>
|
|
|
+_syscall2(int, __ugetrlimit, enum __rlimit_resource, resource, struct rlimit *, rlim);
|
|
|
+int getrlimit (__rlimit_resource_t resource, struct rlimit *rlimits)
|
|
|
+{
|
|
|
+ return(__ugetrlimit(resource, rlimits));
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
|
|
|
|
|
|
|