Linux-libre 5.4.47-gnu
[librecmc/linux-libre.git] / tools / testing / selftests / powerpc / syscalls / ipc_unmuxed.c
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)    \
19 static 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
32 static 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
54 int main(void)
55 {
56         return test_harness(ipc_unmuxed, "ipc_unmuxed");
57 }