1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3 * Copyright (c) 2018 Google, Inc.
4 */
5
6 #ifndef SENDMMSG_VAR__
7 #define SENDMMSG_VAR__
8
9 #include "lapi/syscalls.h"
10
do_sendmmsg(int sockfd,struct mmsghdr * msgvec,unsigned int vlen,int flags)11 static int do_sendmmsg(int sockfd, struct mmsghdr *msgvec, unsigned int vlen,
12 int flags)
13 {
14 switch (tst_variant) {
15 case 0:
16 return tst_syscall(__NR_sendmmsg, sockfd, msgvec, vlen, flags);
17 case 1:
18 #ifdef HAVE_SENDMMSG
19 return sendmmsg(sockfd, msgvec, vlen, flags);
20 #else
21 tst_brk(TCONF, "libc sendmmsg not present");
22 #endif
23 }
24
25 return -1;
26 }
27
do_recvmmsg(int sockfd,struct mmsghdr * msgvec,unsigned int vlen,int flags,struct timespec * timeout)28 static int do_recvmmsg(int sockfd, struct mmsghdr *msgvec, unsigned int vlen,
29 int flags, struct timespec *timeout)
30 {
31 switch (tst_variant) {
32 case 0:
33 return tst_syscall(__NR_recvmmsg, sockfd, msgvec, vlen, flags,
34 timeout);
35 case 1:
36 #ifdef HAVE_RECVMMSG
37 return recvmmsg(sockfd, msgvec, vlen, flags, timeout);
38 #else
39 tst_brk(TCONF, "libc recvmmsg not present");
40 #endif
41 }
42
43 return -1;
44 }
45
test_info(void)46 static void test_info(void)
47 {
48 switch (tst_variant) {
49 case 0:
50 tst_res(TINFO, "Testing direct sendmmsg and recvmmsg syscalls");
51 break;
52 case 1:
53 tst_res(TINFO, "Testing libc sendmmsg and recvmmsg syscalls");
54 break;
55 }
56 }
57
58 #define TEST_VARIANTS 2
59
60 #endif /* SENDMMSG_VAR__ */
61