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