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 | } |
58 | |