diff options
| author | Stefan O'Rear <sorear@fastmail.com> | 2020-09-03 03:31:05 -0400 | 
|---|---|---|
| committer | Rich Felker <dalias@aerifal.cx> | 2022-05-01 23:25:21 -0400 | 
| commit | 41149ea8c7a6f28a1c60478fe7f6b9552aa39e3b (patch) | |
| tree | f9fe8f74a892ce6b5b77ba8eb3e704da8ed703e5 | |
| parent | 8910efd0e474fab85bf00657a6eeae4d69a87f63 (diff) | |
| download | musl-41149ea8c7a6f28a1c60478fe7f6b9552aa39e3b.tar.gz | |
only use getrlimit/setrlimit syscalls if they exist
riscv32 and future architectures only provide prlimit64.
| -rw-r--r-- | src/misc/getrlimit.c | 6 | ||||
| -rw-r--r-- | src/misc/setrlimit.c | 6 | 
2 files changed, 11 insertions, 1 deletions
| diff --git a/src/misc/getrlimit.c b/src/misc/getrlimit.c index 2ab2f0f4..bf676307 100644 --- a/src/misc/getrlimit.c +++ b/src/misc/getrlimit.c @@ -6,12 +6,13 @@  int getrlimit(int resource, struct rlimit *rlim)  { -	unsigned long k_rlim[2];  	int ret = syscall(SYS_prlimit64, 0, resource, 0, rlim);  	if (!ret) {  		FIX(rlim->rlim_cur);  		FIX(rlim->rlim_max);  	} +#ifdef SYS_getrlimit +	unsigned long k_rlim[2];  	if (!ret || errno != ENOSYS)  		return ret;  	if (syscall(SYS_getrlimit, resource, k_rlim) < 0) @@ -21,6 +22,9 @@ int getrlimit(int resource, struct rlimit *rlim)  	FIX(rlim->rlim_cur);  	FIX(rlim->rlim_max);  	return 0; +#else +	return ret; +#endif  }  weak_alias(getrlimit, getrlimit64); diff --git a/src/misc/setrlimit.c b/src/misc/setrlimit.c index 8340aee0..5b713cf3 100644 --- a/src/misc/setrlimit.c +++ b/src/misc/setrlimit.c @@ -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); | 
