• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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