diff options
Diffstat (limited to 'test/librt/shmtest.c')
-rw-r--r-- | test/librt/shmtest.c | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/test/librt/shmtest.c b/test/librt/shmtest.c deleted file mode 100644 index a14302d..0000000 --- a/test/librt/shmtest.c +++ /dev/null @@ -1,104 +0,0 @@ -/* Copyright (C) 2009 Mikael Lund Jepsen <mlj@iccc.dk> - * - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - */ - -#include <errno.h> -#include <fcntl.h> -#include <string.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <sys/types.h> -#include <sys/mman.h> -#include <sys/stat.h> -#include <sys/wait.h> - -#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) - -char shared_name[] = "/sharetest"; -int test_data[11] = {0,1,2,3,4,5,6,7,8,9,10}; - -int main(void) { - int pfds[2]; - pid_t pid; - int fd; - int test_data_fails = 0; - char *ptest_data; - unsigned int i; - char buf[30]; - int rv; - - pipe(pfds); - - switch(pid = fork()) { - case -1: - perror("fork"); - exit(1); /* parent exits */ - - case 0: - /* Child */ - - /* wait for parent */ - read(pfds[0], buf, 5); - - fd = shm_open(shared_name, O_RDWR, DEFFILEMODE); - if (fd == -1) { - perror("CHILD - shm_open(existing):"); - exit(1); - } else { - ptest_data = mmap(0, sizeof(test_data), PROT_READ + PROT_WRITE, MAP_SHARED, fd, 0); - if (ptest_data != MAP_FAILED) { - for (i=0; i < ARRAY_SIZE(test_data); i++) { - if (ptest_data[i] != test_data[i]) { - printf("%-40s: Offset %d, local %d, shm %d\n", "Compare memory error", i, test_data[i], ptest_data[i]); - test_data_fails++; - } - } - if (test_data_fails == 0) - printf("%-40s: %s\n", "Compare memory", "Success"); - - munmap(ptest_data, sizeof(test_data)); - } - } - exit(0); - - default: - /* Parent */ - fd = shm_open(shared_name, O_RDWR+O_CREAT+O_EXCL, DEFFILEMODE ); - if (fd == -1) { - perror("PARENT - shm_open(create):"); - } else { - if ((ftruncate(fd, sizeof(test_data))) == -1) - { - printf("%-40s: %s", "ftruncate", strerror(errno)); - shm_unlink(shared_name); - return 0; - } - - ptest_data = mmap(0, sizeof(test_data), PROT_READ + PROT_WRITE, MAP_SHARED, fd, 0); - if (ptest_data == MAP_FAILED) - { - perror("PARENT - mmap:"); - if (shm_unlink(shared_name) == -1) { - perror("PARENT - shm_unlink:"); - } - return 0; - } - for (i=0; i < ARRAY_SIZE(test_data); i++) - ptest_data[i] = test_data[i]; - - /* signal child */ - write(pfds[1], "rdy", 5); - /* wait for child */ - wait(&rv); - - /* Cleanup */ - munmap(ptest_data, sizeof(test_data)); - if (shm_unlink(shared_name) == -1) { - perror("PARENT - shm_unlink:"); - } - } - } - return 0; -} |