1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Copyright 2015, Michael Ellerman, IBM Corp.
4 *
5 * This test simply tests that certain syscalls are implemented. It doesn't
6 * actually exercise their logic in any way.
7 */
8
9#define _GNU_SOURCE
10#include <errno.h>
11#include <stdio.h>
12#include <unistd.h>
13#include <sys/syscall.h>
14
15#include "utils.h"
16
17
18#define DO_TEST(_name, _num)	\
19static int test_##_name(void)			\
20{						\
21	int rc;					\
22	printf("Testing " #_name);		\
23	errno = 0;				\
24	rc = syscall(_num, -1, 0, 0, 0, 0, 0);	\
25	printf("\treturned %d, errno %d\n", rc, errno); \
26	return errno == ENOSYS;			\
27}
28
29#include "ipc.h"
30#undef DO_TEST
31
32static int ipc_unmuxed(void)
33{
34	int tests_done = 0;
35
36#define DO_TEST(_name, _num)		\
37	FAIL_IF(test_##_name());	\
38	tests_done++;
39
40#include "ipc.h"
41#undef DO_TEST
42
43	/*
44	 * If we ran no tests then it means none of the syscall numbers were
45	 * defined, possibly because we were built against old headers. But it
46	 * means we didn't really test anything, so instead of passing mark it
47	 * as a skip to give the user a clue.
48	 */
49	SKIP_IF(tests_done == 0);
50
51	return 0;
52}
53
54int main(void)
55{
56	return test_harness(ipc_unmuxed, "ipc_unmuxed");
57}
58