cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ipc_unmuxed.c (1179B)


      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)	\
     19static 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
     32static 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
     54int main(void)
     55{
     56	return test_harness(ipc_unmuxed, "ipc_unmuxed");
     57}