10b824f2eSMichael Ellerman /* 20b824f2eSMichael Ellerman * Copyright 2015, Michael Ellerman, IBM Corp. 30b824f2eSMichael Ellerman * 40b824f2eSMichael Ellerman * This program is free software; you can redistribute it and/or 50b824f2eSMichael Ellerman * modify it under the terms of the GNU General Public License 60b824f2eSMichael Ellerman * as published by the Free Software Foundation; either version 70b824f2eSMichael Ellerman * 2 of the License, or (at your option) any later version. 80b824f2eSMichael Ellerman * 90b824f2eSMichael Ellerman * This test simply tests that certain syscalls are implemented. It doesn't 100b824f2eSMichael Ellerman * actually exercise their logic in any way. 110b824f2eSMichael Ellerman */ 120b824f2eSMichael Ellerman 130b824f2eSMichael Ellerman #define _GNU_SOURCE 140b824f2eSMichael Ellerman #include <errno.h> 150b824f2eSMichael Ellerman #include <stdio.h> 160b824f2eSMichael Ellerman #include <unistd.h> 170b824f2eSMichael Ellerman #include <sys/syscall.h> 180b824f2eSMichael Ellerman 190b824f2eSMichael Ellerman #include "utils.h" 200b824f2eSMichael Ellerman 210b824f2eSMichael Ellerman 220b824f2eSMichael Ellerman #define DO_TEST(_name, _num) \ 230b824f2eSMichael Ellerman static int test_##_name(void) \ 240b824f2eSMichael Ellerman { \ 250b824f2eSMichael Ellerman int rc; \ 260b824f2eSMichael Ellerman printf("Testing " #_name); \ 270b824f2eSMichael Ellerman errno = 0; \ 280b824f2eSMichael Ellerman rc = syscall(_num, -1, 0, 0, 0, 0, 0); \ 290b824f2eSMichael Ellerman printf("\treturned %d, errno %d\n", rc, errno); \ 300b824f2eSMichael Ellerman return errno == ENOSYS; \ 310b824f2eSMichael Ellerman } 320b824f2eSMichael Ellerman 330b824f2eSMichael Ellerman #include "ipc.h" 340b824f2eSMichael Ellerman #undef DO_TEST 350b824f2eSMichael Ellerman 360b824f2eSMichael Ellerman static int ipc_unmuxed(void) 370b824f2eSMichael Ellerman { 380b824f2eSMichael Ellerman int tests_done = 0; 390b824f2eSMichael Ellerman 400b824f2eSMichael Ellerman #define DO_TEST(_name, _num) \ 410b824f2eSMichael Ellerman FAIL_IF(test_##_name()); \ 420b824f2eSMichael Ellerman tests_done++; 430b824f2eSMichael Ellerman 440b824f2eSMichael Ellerman #include "ipc.h" 450b824f2eSMichael Ellerman #undef DO_TEST 460b824f2eSMichael Ellerman 470b824f2eSMichael Ellerman /* 480b824f2eSMichael Ellerman * If we ran no tests then it means none of the syscall numbers were 490b824f2eSMichael Ellerman * defined, possibly because we were built against old headers. But it 500b824f2eSMichael Ellerman * means we didn't really test anything, so instead of passing mark it 510b824f2eSMichael Ellerman * as a skip to give the user a clue. 520b824f2eSMichael Ellerman */ 530b824f2eSMichael Ellerman SKIP_IF(tests_done == 0); 540b824f2eSMichael Ellerman 550b824f2eSMichael Ellerman return 0; 560b824f2eSMichael Ellerman } 570b824f2eSMichael Ellerman 580b824f2eSMichael Ellerman int main(void) 590b824f2eSMichael Ellerman { 600b824f2eSMichael Ellerman return test_harness(ipc_unmuxed, "ipc_unmuxed"); 610b824f2eSMichael Ellerman } 62