提交 0b824f2e 编写于 作者: M Michael Ellerman

selftests/powerpc: Add tests of unmuxed IPC calls

This is just a simple test which confirms that the individual IPC
syscalls are all available.
Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
上级 ad987fc8
......@@ -12,7 +12,7 @@ CFLAGS := -Wall -O2 -flto -Wall -Werror -DGIT_VERSION='"$(GIT_VERSION)"' -I$(CUR
export CFLAGS
SUB_DIRS = pmu copyloops mm tm primitives stringloops vphn switch_endian dscr benchmarks
SUB_DIRS = pmu copyloops mm tm primitives stringloops vphn switch_endian dscr benchmarks syscalls
endif
......
TEST_PROGS := ipc_unmuxed
CFLAGS += -I../../../../../usr/include
all: $(TEST_PROGS)
$(TEST_PROGS): ../harness.c
include ../../lib.mk
clean:
rm -f $(TEST_PROGS) *.o
#ifdef __NR_semop
DO_TEST(semop, __NR_semop)
#endif
#ifdef __NR_semget
DO_TEST(semget, __NR_semget)
#endif
#ifdef __NR_semctl
DO_TEST(semctl, __NR_semctl)
#endif
#ifdef __NR_semtimedop
DO_TEST(semtimedop, __NR_semtimedop)
#endif
#ifdef __NR_msgsnd
DO_TEST(msgsnd, __NR_msgsnd)
#endif
#ifdef __NR_msgrcv
DO_TEST(msgrcv, __NR_msgrcv)
#endif
#ifdef __NR_msgget
DO_TEST(msgget, __NR_msgget)
#endif
#ifdef __NR_msgctl
DO_TEST(msgctl, __NR_msgctl)
#endif
#ifdef __NR_shmat
DO_TEST(shmat, __NR_shmat)
#endif
#ifdef __NR_shmdt
DO_TEST(shmdt, __NR_shmdt)
#endif
#ifdef __NR_shmget
DO_TEST(shmget, __NR_shmget)
#endif
#ifdef __NR_shmctl
DO_TEST(shmctl, __NR_shmctl)
#endif
/*
* Copyright 2015, Michael Ellerman, IBM Corp.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*
* This test simply tests that certain syscalls are implemented. It doesn't
* actually exercise their logic in any way.
*/
#define _GNU_SOURCE
#include <errno.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/syscall.h>
#include "utils.h"
#define DO_TEST(_name, _num) \
static int test_##_name(void) \
{ \
int rc; \
printf("Testing " #_name); \
errno = 0; \
rc = syscall(_num, -1, 0, 0, 0, 0, 0); \
printf("\treturned %d, errno %d\n", rc, errno); \
return errno == ENOSYS; \
}
#include "ipc.h"
#undef DO_TEST
static int ipc_unmuxed(void)
{
int tests_done = 0;
#define DO_TEST(_name, _num) \
FAIL_IF(test_##_name()); \
tests_done++;
#include "ipc.h"
#undef DO_TEST
/*
* If we ran no tests then it means none of the syscall numbers were
* defined, possibly because we were built against old headers. But it
* means we didn't really test anything, so instead of passing mark it
* as a skip to give the user a clue.
*/
SKIP_IF(tests_done == 0);
return 0;
}
int main(void)
{
return test_harness(ipc_unmuxed, "ipc_unmuxed");
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册