-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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: Michael Ellerman <mpe@ellerman.id.au>
- Loading branch information
Michael Ellerman
committed
Oct 15, 2015
1 parent
ad987fc
commit 0b824f2
Showing
5 changed files
with
122 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
ipc_unmuxed |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
TEST_PROGS := ipc_unmuxed | ||
|
||
CFLAGS += -I../../../../../usr/include | ||
|
||
all: $(TEST_PROGS) | ||
|
||
$(TEST_PROGS): ../harness.c | ||
|
||
include ../../lib.mk | ||
|
||
clean: | ||
rm -f $(TEST_PROGS) *.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
#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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
/* | ||
* 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"); | ||
} |