1*2874c5fdSThomas 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