diff options
author | kib <kib@FreeBSD.org> | 2013-08-21 17:47:11 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2013-08-21 17:47:11 +0000 |
commit | 58d5d31b369ffa07e7a858a1734306f5fda8a553 (patch) | |
tree | 1752cd8e52b60856f068bd38b7ed61725d735b47 /tools/test | |
parent | d11c4f9c32bf7f78b6ca5f9fc02e869111dbe680 (diff) | |
download | FreeBSD-src-58d5d31b369ffa07e7a858a1734306f5fda8a553.zip FreeBSD-src-58d5d31b369ffa07e7a858a1734306f5fda8a553.tar.gz |
Add simple test for the read/write/lseek on posix shm filedescriptor.
Tested by: pho
Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'tools/test')
-rw-r--r-- | tools/test/posixshm/shm_test.c | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/tools/test/posixshm/shm_test.c b/tools/test/posixshm/shm_test.c index 3ab4732..0ec890a 100644 --- a/tools/test/posixshm/shm_test.c +++ b/tools/test/posixshm/shm_test.c @@ -21,7 +21,7 @@ * Signal handler which does nothing. */ static void -ignoreit(int sig) +ignoreit(int sig __unused) { ; } @@ -29,13 +29,13 @@ ignoreit(int sig) int main(int argc, char **argv) { - char buf[1024], *cp; - int desc, rv; + char buf[1024], *cp, c; + int error, desc, rv; long scval; sigset_t ss; struct sigaction sa; void *region; - size_t psize; + size_t i, psize; #ifndef _POSIX_SHARED_MEMORY_OBJECTS printf("_POSIX_SHARED_MEMORY_OBJECTS is undefined\n"); @@ -118,14 +118,29 @@ main(int argc, char **argv) sigemptyset(&ss); sigsuspend(&ss); - for (cp = region; cp < (char *)region + psize; cp++) + for (cp = region; cp < (char *)region + psize; cp++) { if (*cp != '\151') _exit(1); + } + if (lseek(desc, 0, SEEK_SET) == -1) + _exit(1); + for (i = 0; i < psize; i++) { + error = read(desc, &c, 1); + if (c != '\151') + _exit(1); + } _exit(0); } else { int status; - memset(region, '\151', psize); + memset(region, '\151', psize - 2); + error = pwrite(desc, region, 2, psize - 2); + if (error != 2) { + if (error >= 0) + errx(1, "short write %d", error); + else + err(1, "shmfd write"); + } kill(rv, SIGUSR1); waitpid(rv, &status, 0); |