diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2021-08-12 12:03:32 -0700 |
---|---|---|
committer | Xin Li <delphij@google.com> | 2021-08-12 22:43:23 +0000 |
commit | a2da23195a0c87a1fcb826878abfe8deb495b1d5 (patch) | |
tree | dc99b8d2649bf2bbdb34cad32c778ac254a47634 | |
parent | 15ae46528acd0f9608d711129bd6435a0183afb8 (diff) | |
parent | d8fb78b33624ef3709e6990066d25b971d291439 (diff) | |
download | ltp-a2da23195a0c87a1fcb826878abfe8deb495b1d5.tar.gz |
Merge ab/7633965
Bug: 169893837
Merged-In: Iadbaf4fa9574878f64094ff1212ab14584b90518
Change-Id: Idba86087d25690ff5299ee05a24f70fbe01ecaa1
-rw-r--r-- | testcases/kernel/syscalls/getrlimit/getrlimit03.c | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/testcases/kernel/syscalls/getrlimit/getrlimit03.c b/testcases/kernel/syscalls/getrlimit/getrlimit03.c index 319bc494a..604082ccf 100644 --- a/testcases/kernel/syscalls/getrlimit/getrlimit03.c +++ b/testcases/kernel/syscalls/getrlimit/getrlimit03.c @@ -35,14 +35,20 @@ * The underlying syscall names vary across architectures, depending on whether * the architecture predates the "new" handler. For clarity, this test * will call them getrlimit_long and getlimit_ulong internally. + * + * __NR_getrlimit has been deprecated from arm EABI and moved to OABI_COMPAT, + * so the syscall on arm may or may not be available even if __NR_ugetrlimit + * exists. */ -#define SIGNED_GETRLIMIT (__NR_ugetrlimit != __LTP__NR_INVALID_SYSCALL) -#if SIGNED_GETRLIMIT -#define __NR_getrlimit_ulong __NR_ugetrlimit -#define __NR_getrlimit_ulong_str "__NR_ugetrlimit" +#if __NR_ugetrlimit != __LTP__NR_INVALID_SYSCALL +# if !defined(__arm__) || __NR_getrlimit != __LTP__NR_INVALID_SYSCALL +# define SIGNED_GETRLIMIT +# endif +# define __NR_getrlimit_ulong __NR_ugetrlimit +# define __NR_getrlimit_ulong_str "__NR_ugetrlimit" #else -#define __NR_getrlimit_ulong __NR_getrlimit -#define __NR_getrlimit_ulong_str "__NR_getrlimit" +# define __NR_getrlimit_ulong __NR_getrlimit +# define __NR_getrlimit_ulong_str "__NR_getrlimit" #endif #ifndef HAVE_STRUCT_RLIMIT64 @@ -74,12 +80,13 @@ static int getrlimit_ulong(int resource, struct rlimit_ulong *rlim) return syscall(__NR_getrlimit_ulong, resource, rlim); } -#if SIGNED_GETRLIMIT +const long RLIM_INFINITY_L = LONG_MAX; + +#ifdef SIGNED_GETRLIMIT struct rlimit_long { long rlim_cur; long rlim_max; }; -const long RLIM_INFINITY_L = LONG_MAX; static int getrlimit_long(int resource, struct rlimit_long *rlim) { @@ -116,7 +123,7 @@ static int compare_u64_ulong(int resource, uint64_t val_u64, return 0; } -#if SIGNED_GETRLIMIT +#ifdef SIGNED_GETRLIMIT static int compare_u64_long(int resource, uint64_t val_u64, long val_l, const char *kind) { @@ -142,7 +149,7 @@ static void run(unsigned int resource) int ret_ul; int errno_ul; -#if SIGNED_GETRLIMIT +#ifdef SIGNED_GETRLIMIT struct rlimit_long rlim_l; int ret_l; int errno_l; @@ -167,7 +174,7 @@ static void run(unsigned int resource) tst_res(TPASS, "__NR_prlimit64(%d) and %s(%d) gave consistent results", resource, __NR_getrlimit_ulong_str, resource); -#if SIGNED_GETRLIMIT +#ifdef SIGNED_GETRLIMIT errno = 0; ret_l = getrlimit_long(resource, &rlim_l); errno_l = errno; |