diff options
author | Rich Felker <dalias@aerifal.cx> | 2011-02-15 05:42:27 -0500 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2011-02-15 05:42:27 -0500 |
commit | f7eb91e7952553dc24a734030a6c78f8dc6ed455 (patch) | |
tree | 15e212fa4214ba919d02f733c5b266ad1afb71b6 | |
parent | 13a026bd79f0024d57b7edf8305d625599d10810 (diff) | |
download | musl-f7eb91e7952553dc24a734030a6c78f8dc6ed455.tar.gz musl-f7eb91e7952553dc24a734030a6c78f8dc6ed455.tar.bz2 musl-f7eb91e7952553dc24a734030a6c78f8dc6ed455.tar.xz musl-f7eb91e7952553dc24a734030a6c78f8dc6ed455.zip |
fix getrlimit handling on 32-bit systems, and ease porting to 64-bit
-rw-r--r-- | arch/i386/syscall.h | 2 | ||||
-rw-r--r-- | src/misc/getrlimit.c | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/arch/i386/syscall.h b/arch/i386/syscall.h index fcdae241..8df9b1b9 100644 --- a/arch/i386/syscall.h +++ b/arch/i386/syscall.h @@ -500,6 +500,8 @@ static inline long syscall6(long n, long a1, long a2, long a3, long a4, long a5, #define __NR_fstatat __NR_fstatat64 #define __NR_pread __NR_pread64 #define __NR_pwrite __NR_pwrite64 +#undef __NR_getrlimit +#define __NR_getrlimit __NR_ugetrlimit #define __SC_socket 1 #define __SC_bind 2 diff --git a/src/misc/getrlimit.c b/src/misc/getrlimit.c index db25943b..84a659d4 100644 --- a/src/misc/getrlimit.c +++ b/src/misc/getrlimit.c @@ -5,10 +5,10 @@ int getrlimit(int resource, struct rlimit *rlim) { long k_rlim[2]; - if (syscall2(__NR_ugetrlimit, resource, (long)k_rlim) < 0) + if (syscall2(__NR_getrlimit, resource, (long)k_rlim) < 0) return -1; - rlim->rlim_cur = k_rlim[0]; - rlim->rlim_max = k_rlim[1]; + rlim->rlim_cur = k_rlim[0] == -1 ? -1 : (unsigned long)k_rlim[0]; + rlim->rlim_max = k_rlim[1] == -1 ? -1 : (unsigned long)k_rlim[1]; return 0; } |