12874c5fdSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-or-later
20b824f2eSMichael Ellerman /*
30b824f2eSMichael Ellerman  * Copyright 2015, Michael Ellerman, IBM Corp.
40b824f2eSMichael Ellerman  *
50b824f2eSMichael Ellerman  * This test simply tests that certain syscalls are implemented. It doesn't
60b824f2eSMichael Ellerman  * actually exercise their logic in any way.
70b824f2eSMichael Ellerman  */
80b824f2eSMichael Ellerman 
90b824f2eSMichael Ellerman #define _GNU_SOURCE
100b824f2eSMichael Ellerman #include <errno.h>
110b824f2eSMichael Ellerman #include <stdio.h>
120b824f2eSMichael Ellerman #include <unistd.h>
130b824f2eSMichael Ellerman #include <sys/syscall.h>
140b824f2eSMichael Ellerman 
150b824f2eSMichael Ellerman #include "utils.h"
160b824f2eSMichael Ellerman 
170b824f2eSMichael Ellerman 
180b824f2eSMichael Ellerman #define DO_TEST(_name, _num)	\
190b824f2eSMichael Ellerman static int test_##_name(void)			\
200b824f2eSMichael Ellerman {						\
210b824f2eSMichael Ellerman 	int rc;					\
220b824f2eSMichael Ellerman 	printf("Testing " #_name);		\
230b824f2eSMichael Ellerman 	errno = 0;				\
240b824f2eSMichael Ellerman 	rc = syscall(_num, -1, 0, 0, 0, 0, 0);	\
250b824f2eSMichael Ellerman 	printf("\treturned %d, errno %d\n", rc, errno); \
260b824f2eSMichael Ellerman 	return errno == ENOSYS;			\
270b824f2eSMichael Ellerman }
280b824f2eSMichael Ellerman 
290b824f2eSMichael Ellerman #include "ipc.h"
300b824f2eSMichael Ellerman #undef DO_TEST
310b824f2eSMichael Ellerman 
ipc_unmuxed(void)320b824f2eSMichael Ellerman static int ipc_unmuxed(void)
330b824f2eSMichael Ellerman {
340b824f2eSMichael Ellerman 	int tests_done = 0;
350b824f2eSMichael Ellerman 
360b824f2eSMichael Ellerman #define DO_TEST(_name, _num)		\
370b824f2eSMichael Ellerman 	FAIL_IF(test_##_name());	\
380b824f2eSMichael Ellerman 	tests_done++;
390b824f2eSMichael Ellerman 
400b824f2eSMichael Ellerman #include "ipc.h"
410b824f2eSMichael Ellerman #undef DO_TEST
420b824f2eSMichael Ellerman 
430b824f2eSMichael Ellerman 	/*
440b824f2eSMichael Ellerman 	 * If we ran no tests then it means none of the syscall numbers were
450b824f2eSMichael Ellerman 	 * defined, possibly because we were built against old headers. But it
460b824f2eSMichael Ellerman 	 * means we didn't really test anything, so instead of passing mark it
470b824f2eSMichael Ellerman 	 * as a skip to give the user a clue.
480b824f2eSMichael Ellerman 	 */
490b824f2eSMichael Ellerman 	SKIP_IF(tests_done == 0);
500b824f2eSMichael Ellerman 
510b824f2eSMichael Ellerman 	return 0;
520b824f2eSMichael Ellerman }
530b824f2eSMichael Ellerman 
main(void)540b824f2eSMichael Ellerman int main(void)
550b824f2eSMichael Ellerman {
560b824f2eSMichael Ellerman 	return test_harness(ipc_unmuxed, "ipc_unmuxed");
570b824f2eSMichael Ellerman }
58