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