1 /*
2 * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@strace.io>
3 * Copyright (c) 2015-2021 The strace developers.
4 * All rights reserved.
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8
9 #include "tests.h"
10 #include "scno.h"
11
12 #if defined __NR_select && defined __NR__newselect \
13 && __NR_select != __NR__newselect \
14 && !defined __sparc__
15
16 # define TEST_SYSCALL_NR __NR_select
17 # define TEST_SYSCALL_STR "select"
18 # define xselect xselect
19 # include "xselect.c"
20
21 static uint32_t *args;
22
23 static long
24 xselect(const kernel_ulong_t nfds,
25 const kernel_ulong_t rs,
26 const kernel_ulong_t ws,
27 const kernel_ulong_t es,
28 const kernel_ulong_t tv)
29 {
30 if (!args)
31 args = tail_alloc(sizeof(*args) * 5);
32 args[0] = nfds;
33 args[1] = rs;
34 args[2] = ws;
35 args[3] = es;
36 args[4] = tv;
37 long rc = syscall(TEST_SYSCALL_NR, args);
38 errstr = sprintrc(rc);
39 return rc;
40 }
41
42 #else
43
44 SKIP_MAIN_UNDEFINED("__NR_select && __NR__newselect"
45 " && __NR_select != __NR__newselect"
46 " && !defined __sparc__")
47
48 #endif