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