fix getrlimit handling on 32-bit systems, and ease porting to 64-bit

This commit is contained in:
Rich Felker 2011-02-15 05:42:27 -05:00
parent 13a026bd79
commit f7eb91e795
2 changed files with 5 additions and 3 deletions

View File

@ -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_fstatat __NR_fstatat64
#define __NR_pread __NR_pread64 #define __NR_pread __NR_pread64
#define __NR_pwrite __NR_pwrite64 #define __NR_pwrite __NR_pwrite64
#undef __NR_getrlimit
#define __NR_getrlimit __NR_ugetrlimit
#define __SC_socket 1 #define __SC_socket 1
#define __SC_bind 2 #define __SC_bind 2

View File

@ -5,10 +5,10 @@
int getrlimit(int resource, struct rlimit *rlim) int getrlimit(int resource, struct rlimit *rlim)
{ {
long k_rlim[2]; long k_rlim[2];
if (syscall2(__NR_ugetrlimit, resource, (long)k_rlim) < 0) if (syscall2(__NR_getrlimit, resource, (long)k_rlim) < 0)
return -1; return -1;
rlim->rlim_cur = k_rlim[0]; rlim->rlim_cur = k_rlim[0] == -1 ? -1 : (unsigned long)k_rlim[0];
rlim->rlim_max = k_rlim[1]; rlim->rlim_max = k_rlim[1] == -1 ? -1 : (unsigned long)k_rlim[1];
return 0; return 0;
} }