|
@@ -12,12 +12,14 @@ struct ctx {
|
|
|
int err;
|
|
|
};
|
|
|
|
|
|
+#ifdef SYS_setrlimit
|
|
|
static void do_setrlimit(void *p)
|
|
|
{
|
|
|
struct ctx *c = p;
|
|
|
if (c->err>0) return;
|
|
|
c->err = -__syscall(SYS_setrlimit, c->res, c->lim);
|
|
|
}
|
|
|
+#endif
|
|
|
|
|
|
int setrlimit(int resource, const struct rlimit *rlim)
|
|
|
{
|
|
@@ -29,6 +31,7 @@ int setrlimit(int resource, const struct rlimit *rlim)
|
|
|
rlim = &tmp;
|
|
|
}
|
|
|
int ret = __syscall(SYS_prlimit64, 0, resource, rlim, 0);
|
|
|
+#ifdef SYS_setrlimit
|
|
|
if (ret != -ENOSYS) return __syscall_ret(ret);
|
|
|
|
|
|
struct ctx c = {
|
|
@@ -42,6 +45,9 @@ int setrlimit(int resource, const struct rlimit *rlim)
|
|
|
return -1;
|
|
|
}
|
|
|
return 0;
|
|
|
+#else
|
|
|
+ return __syscall_ret(ret);
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
weak_alias(setrlimit, setrlimit64);
|