[LTP] [PATCH V7 14/19] syscalls/select6: Add support for time64 tests

Viresh Kumar
2020-06-26T06:22:27Z

This adds support for time64 tests to the existing select6() syscall
tests.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
testcases/kernel/syscalls/select/select_var.h | 25 ++++++++++++++++---
1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/testcases/kernel/syscalls/select/select_var.h b/testcases/kernel/syscalls/select/select_var.h
index b19a1d1bf085..2c7604807cf6 100644
--- a/testcases/kernel/syscalls/select/select_var.h
+++ b/testcases/kernel/syscalls/select/select_var.h
@@ -6,6 +6,7 @@
#define SELECT_VAR__

#include "lapi/syscalls.h"
+#include "tst_timer.h"

struct compat_sel_arg_struct {
long _n;
@@ -38,7 +39,7 @@ static int do_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *except
}
case 2: {
int ret;
- struct timespec ts = {
+ struct __kernel_old_timespec ts = {
.tv_sec = timeout->tv_sec,
.tv_nsec = timeout->tv_usec * 1000,
};
@@ -47,7 +48,22 @@ static int do_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *except
timeout->tv_usec = ts.tv_nsec / 1000;
return ret;
}
- case 3:
+ case 3: {
+ int ret = 0;
+#if (__NR_clock_settime64 != __LTP__NR_INVALID_SYSCALL)
+ struct __kernel_timespec ts = {
+ .tv_sec = timeout->tv_sec,
+ .tv_nsec = timeout->tv_usec * 1000,
+ };
+ ret = tst_syscall(__NR_pselect6_time64, nfds, readfds, writefds, exceptfds, &ts, NULL);
+ timeout->tv_sec = ts.tv_sec;
+ timeout->tv_usec = ts.tv_nsec / 1000;
+#else
+ tst_brk(TCONF, "__NR_pselect6 time64 variant not supported");
+#endif
+ return ret;
+ }
+ case 4:
#ifdef __NR__newselect
return tst_syscall(__NR__newselect, nfds, readfds, writefds, exceptfds, timeout);
#else
@@ -72,11 +88,14 @@ static void select_info(void)
tst_res(TINFO, "Testing SYS_pselect6 syscall");
break;
case 3:
+ tst_res(TINFO, "Testing SYS_pselect6 time64 syscall");
+ break;
+ case 4:
tst_res(TINFO, "Testing SYS__newselect syscall");
break;
}
}

-#define TEST_VARIANTS 4
+#define TEST_VARIANTS 5

#endif /* SELECT_VAR__ */
--
2.25.0.rc1.19.g042ed3e048af