Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame] | 1 | From fc2b47ad979a87bfbd11aeea3f67c26e7fb39e30 Mon Sep 17 00:00:00 2001 |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 2 | From: Khem Raj <raj.khem@gmail.com> |
| 3 | Date: Thu, 7 Jan 2016 19:40:08 +0000 |
Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame] | 4 | Subject: [PATCH] Check if __GLIBC_PREREQ is defined before using it |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 5 | |
| 6 | __GLIBC_PREREQ is specific to glibc so it should be checked if it is |
| 7 | defined or not. |
| 8 | |
| 9 | Signed-off-by: Khem Raj <raj.khem@gmail.com> |
| 10 | |
Brad Bishop | d7bf8c1 | 2018-02-25 22:55:05 -0500 | [diff] [blame] | 11 | Upstream-Status: Pending |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 12 | --- |
Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame] | 13 | .../kernel/syscalls/accept4/accept4_01.c | 9 ++++++- |
| 14 | .../sched_getaffinity/sched_getaffinity01.c | 26 +++++++++++++++++++ |
| 15 | 2 files changed, 34 insertions(+), 1 deletion(-) |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 16 | |
| 17 | diff --git a/testcases/kernel/syscalls/accept4/accept4_01.c b/testcases/kernel/syscalls/accept4/accept4_01.c |
Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame] | 18 | index dec4ef93b..c5d74b07f 100644 |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 19 | --- a/testcases/kernel/syscalls/accept4/accept4_01.c |
| 20 | +++ b/testcases/kernel/syscalls/accept4/accept4_01.c |
| 21 | @@ -64,6 +64,7 @@ static void cleanup(void) |
| 22 | tst_rmdir(); |
| 23 | } |
| 24 | |
| 25 | +#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) |
| 26 | #if !(__GLIBC_PREREQ(2, 10)) |
| 27 | static int |
| 28 | accept4_01(int fd, struct sockaddr *sockaddr, socklen_t *addrlen, int flags) |
| 29 | @@ -82,7 +83,6 @@ accept4_01(int fd, struct sockaddr *sockaddr, socklen_t *addrlen, int flags) |
| 30 | } |
| 31 | tst_resm(TINFO, "\n"); |
| 32 | #endif |
| 33 | - |
| 34 | #if USE_SOCKETCALL |
| 35 | long args[6]; |
| 36 | |
| 37 | @@ -97,6 +97,7 @@ accept4_01(int fd, struct sockaddr *sockaddr, socklen_t *addrlen, int flags) |
| 38 | #endif |
| 39 | } |
| 40 | #endif |
| 41 | +#endif |
| 42 | |
| 43 | static void |
| 44 | do_test(int lfd, struct sockaddr_in *conn_addr, |
| 45 | @@ -119,9 +120,15 @@ do_test(int lfd, struct sockaddr_in *conn_addr, |
| 46 | die("Connect Error"); |
| 47 | |
| 48 | addrlen = sizeof(struct sockaddr_in); |
| 49 | +#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) |
| 50 | #if !(__GLIBC_PREREQ(2, 10)) |
| 51 | acceptfd = accept4_01(lfd, (struct sockaddr *)&claddr, &addrlen, |
| 52 | closeonexec_flag | nonblock_flag); |
| 53 | + |
| 54 | +#else |
| 55 | + acceptfd = accept4(lfd, (struct sockaddr *)&claddr, &addrlen, |
| 56 | + closeonexec_flag | nonblock_flag); |
| 57 | +#endif |
| 58 | #else |
| 59 | acceptfd = accept4(lfd, (struct sockaddr *)&claddr, &addrlen, |
| 60 | closeonexec_flag | nonblock_flag); |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 61 | diff --git a/testcases/kernel/syscalls/sched_getaffinity/sched_getaffinity01.c b/testcases/kernel/syscalls/sched_getaffinity/sched_getaffinity01.c |
Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame] | 62 | index 02f04b909..d906d7e09 100644 |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 63 | --- a/testcases/kernel/syscalls/sched_getaffinity/sched_getaffinity01.c |
| 64 | +++ b/testcases/kernel/syscalls/sched_getaffinity/sched_getaffinity01.c |
Brad Bishop | 1a4b7ee | 2018-12-16 17:11:34 -0800 | [diff] [blame] | 65 | @@ -67,9 +67,11 @@ do { \ |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 66 | tst_resm((TEST_RETURN == -1 ? TPASS : TFAIL) | TTERRNO, #t); \ |
| 67 | } while (0) |
| 68 | |
| 69 | +#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) |
| 70 | #if !(__GLIBC_PREREQ(2, 7)) |
| 71 | #define CPU_FREE(ptr) free(ptr) |
| 72 | #endif |
| 73 | +#endif |
| 74 | |
| 75 | int main(int ac, char **av) |
| 76 | { |
Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame] | 77 | @@ -96,17 +98,26 @@ static void do_test(void) |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 78 | pid_t unused_pid; |
| 79 | unsigned len; |
| 80 | |
| 81 | +#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) |
| 82 | #if __GLIBC_PREREQ(2, 7) |
| 83 | realloc: |
| 84 | mask = CPU_ALLOC(nrcpus); |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 85 | +#else |
| 86 | + mask = malloc(sizeof(cpu_set_t)); |
| 87 | +#endif |
Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame] | 88 | #else |
| 89 | mask = malloc(sizeof(cpu_set_t)); |
| 90 | #endif |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 91 | if (mask == NULL) |
| 92 | tst_brkm(TFAIL | TTERRNO, cleanup, "fail to get enough memory"); |
| 93 | +#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) |
| 94 | #if __GLIBC_PREREQ(2, 7) |
| 95 | len = CPU_ALLOC_SIZE(nrcpus); |
| 96 | CPU_ZERO_S(len, mask); |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 97 | +#else |
| 98 | + len = sizeof(cpu_set_t); |
| 99 | + CPU_ZERO(mask); |
| 100 | +#endif |
Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame] | 101 | #else |
| 102 | len = sizeof(cpu_set_t); |
| 103 | CPU_ZERO(mask); |
| 104 | @@ -115,11 +126,18 @@ realloc: |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 105 | TEST(sched_getaffinity(0, len, mask)); |
| 106 | if (TEST_RETURN == -1) { |
| 107 | CPU_FREE(mask); |
| 108 | +#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) |
| 109 | #if __GLIBC_PREREQ(2, 7) |
| 110 | if (errno == EINVAL && nrcpus < (1024 << 8)) { |
| 111 | nrcpus = nrcpus << 2; |
Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame] | 112 | goto realloc; |
| 113 | } |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 114 | +#else |
| 115 | + if (errno == EINVAL) |
| 116 | + tst_resm(TFAIL, "NR_CPUS > 1024, we'd better use a " |
| 117 | + "newer glibc(>= 2.7)"); |
| 118 | + else |
| 119 | +#endif |
Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame] | 120 | #else |
| 121 | if (errno == EINVAL) |
| 122 | tst_resm(TFAIL, "NR_CPUS > 1024, we'd better use a " |
| 123 | @@ -132,8 +150,12 @@ realloc: |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 124 | tst_resm(TINFO, "cpusetsize is %d", len); |
| 125 | tst_resm(TINFO, "mask.__bits[0] = %lu ", mask->__bits[0]); |
| 126 | for (i = 0; i < num; i++) { |
| 127 | +#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) |
| 128 | #if __GLIBC_PREREQ(2, 7) |
| 129 | TEST(CPU_ISSET_S(i, len, mask)); |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 130 | +#else |
| 131 | + TEST(CPU_ISSET(i, mask)); |
| 132 | +#endif |
Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame] | 133 | #else |
| 134 | TEST(CPU_ISSET(i, mask)); |
| 135 | #endif |
| 136 | @@ -144,8 +166,12 @@ realloc: |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 137 | } |
| 138 | } |
| 139 | |
| 140 | +#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) |
| 141 | #if __GLIBC_PREREQ(2, 7) |
| 142 | CPU_ZERO_S(len, mask); |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 143 | +#else |
| 144 | + CPU_ZERO(mask); |
| 145 | +#endif |
Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame] | 146 | #else |
| 147 | CPU_ZERO(mask); |
| 148 | #endif |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 149 | -- |
Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame] | 150 | 2.17.1 |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 151 | |