| Index: fusl/src/linux/prlimit.c | 
| diff --git a/fusl/src/linux/prlimit.c b/fusl/src/linux/prlimit.c | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..0fe28e10664e9047b1ca1a75bdab78c3e0407723 | 
| --- /dev/null | 
| +++ b/fusl/src/linux/prlimit.c | 
| @@ -0,0 +1,27 @@ | 
| +#define _GNU_SOURCE | 
| +#include <sys/resource.h> | 
| +#include "syscall.h" | 
| +#include "libc.h" | 
| + | 
| +#define FIX(x) do{ if ((x)>=SYSCALL_RLIM_INFINITY) (x)=RLIM_INFINITY; }while(0) | 
| + | 
| +int prlimit(pid_t pid, int resource, const struct rlimit *new_limit, struct rlimit *old_limit) | 
| +{ | 
| +	struct rlimit tmp; | 
| +	int r; | 
| +	if (new_limit && SYSCALL_RLIM_INFINITY != RLIM_INFINITY) { | 
| +		tmp = *new_limit; | 
| +		FIX(tmp.rlim_cur); | 
| +		FIX(tmp.rlim_max); | 
| +		new_limit = &tmp; | 
| +	} | 
| +	r = syscall(SYS_prlimit64, pid, resource, new_limit, old_limit); | 
| +	if (!r && old_limit && SYSCALL_RLIM_INFINITY != RLIM_INFINITY) { | 
| +		FIX(old_limit->rlim_cur); | 
| +		FIX(old_limit->rlim_max); | 
| +	} | 
| +	return r; | 
| +} | 
| + | 
| +#undef prlimit64 | 
| +LFS64(prlimit); | 
|  |