Module: xenomai-2.6 Branch: master Commit: a59eaf3bdf480ad4d67a9615c0cb221f4a1e1406 URL: http://git.xenomai.org/?p=xenomai-2.6.git;a=commit;h=a59eaf3bdf480ad4d67a9615c0cb221f4a1e1406
Author: Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org> Date: Sat Jun 16 00:09:21 2012 +0200 testsuite: add nanosleep regression test --- src/testsuite/regression/posix/Makefile.am | 2 +- src/testsuite/regression/posix/Makefile.in | 16 ++++++- src/testsuite/regression/posix/check.h | 7 ++- src/testsuite/regression/posix/nano_test.c | 46 ++++++++++++++++++++++ src/testsuite/regression/xeno-regression-test.in | 2 + 5 files changed, 66 insertions(+), 7 deletions(-) diff --git a/src/testsuite/regression/posix/Makefile.am b/src/testsuite/regression/posix/Makefile.am index 368f75e..2107482 100644 --- a/src/testsuite/regression/posix/Makefile.am +++ b/src/testsuite/regression/posix/Makefile.am @@ -4,7 +4,7 @@ noinst_HEADERS = check.h CCLD = $(top_srcdir)/scripts/wrap-link.sh $(CC) -tst_PROGRAMS = leaks shm mprotect +tst_PROGRAMS = leaks shm mprotect nano_test CPPFLAGS = $(XENO_USER_CFLAGS) \ -I$(top_srcdir)/include/posix \ diff --git a/src/testsuite/regression/posix/Makefile.in b/src/testsuite/regression/posix/Makefile.in index 86def30..3c20f16 100644 --- a/src/testsuite/regression/posix/Makefile.in +++ b/src/testsuite/regression/posix/Makefile.in @@ -36,7 +36,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -tst_PROGRAMS = leaks$(EXEEXT) shm$(EXEEXT) mprotect$(EXEEXT) +tst_PROGRAMS = leaks$(EXEEXT) shm$(EXEEXT) mprotect$(EXEEXT) \ + nano_test$(EXEEXT) subdir = src/testsuite/regression/posix DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in @@ -67,6 +68,11 @@ mprotect_OBJECTS = mprotect.$(OBJEXT) mprotect_LDADD = $(LDADD) mprotect_DEPENDENCIES = ../../../skins/posix/libpthread_rt.la \ ../../../skins/common/libxenomai.la +nano_test_SOURCES = nano_test.c +nano_test_OBJECTS = nano_test.$(OBJEXT) +nano_test_LDADD = $(LDADD) +nano_test_DEPENDENCIES = ../../../skins/posix/libpthread_rt.la \ + ../../../skins/common/libxenomai.la shm_SOURCES = shm.c shm_OBJECTS = shm.$(OBJEXT) shm_LDADD = $(LDADD) @@ -84,8 +90,8 @@ LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ -SOURCES = leaks.c mprotect.c shm.c -DIST_SOURCES = leaks.c mprotect.c shm.c +SOURCES = leaks.c mprotect.c nano_test.c shm.c +DIST_SOURCES = leaks.c mprotect.c nano_test.c shm.c HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags @@ -343,6 +349,9 @@ leaks$(EXEEXT): $(leaks_OBJECTS) $(leaks_DEPENDENCIES) mprotect$(EXEEXT): $(mprotect_OBJECTS) $(mprotect_DEPENDENCIES) @rm -f mprotect$(EXEEXT) $(LINK) $(mprotect_OBJECTS) $(mprotect_LDADD) $(LIBS) +nano_test$(EXEEXT): $(nano_test_OBJECTS) $(nano_test_DEPENDENCIES) + @rm -f nano_test$(EXEEXT) + $(LINK) $(nano_test_OBJECTS) $(nano_test_LDADD) $(LIBS) shm$(EXEEXT): $(shm_OBJECTS) $(shm_DEPENDENCIES) @rm -f shm$(EXEEXT) $(LINK) $(shm_OBJECTS) $(shm_LDADD) $(LIBS) @@ -355,6 +364,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/leaks.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mprotect.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nano_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shm.Po@am__quote@ .c.o: diff --git a/src/testsuite/regression/posix/check.h b/src/testsuite/regression/posix/check.h index 3d532cf..63dc4a3 100644 --- a/src/testsuite/regression/posix/check.h +++ b/src/testsuite/regression/posix/check.h @@ -4,12 +4,13 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <errno.h> #define check_pthread(expr) \ ({ \ int rc = (expr); \ if (rc > 0) { \ - fprintf(stderr, "%s:%d: "#expr ": %s\n", __FILE__, __LINE__, strerror(rc)); \ + fprintf(stderr, "FAILURE %s:%d: "#expr ": %s\n", __FILE__, __LINE__, strerror(rc)); \ exit(EXIT_FAILURE); \ } \ rc; \ @@ -19,7 +20,7 @@ ({ \ int rc = (expr); \ if (rc < 0) { \ - fprintf(stderr, "%s:%d: "#expr ": %s\n", __FILE__, __LINE__, strerror(errno)); \ + fprintf(stderr, "FAILURE %s:%d: "#expr ": %s\n", __FILE__, __LINE__, strerror(errno)); \ exit(EXIT_FAILURE); \ } \ rc; \ @@ -29,7 +30,7 @@ ({ \ void *rc = (expr); \ if (rc == MAP_FAILED) { \ - fprintf(stderr, "%s:%d: "#expr ": %s\n", __FILE__, __LINE__, strerror(errno)); \ + fprintf(stderr, "FAILURE %s:%d: "#expr ": %s\n", __FILE__, __LINE__, strerror(errno)); \ exit(EXIT_FAILURE); \ } \ rc; \ diff --git a/src/testsuite/regression/posix/nano_test.c b/src/testsuite/regression/posix/nano_test.c new file mode 100644 index 0000000..2b3599e --- /dev/null +++ b/src/testsuite/regression/posix/nano_test.c @@ -0,0 +1,46 @@ +#include <signal.h> +#include <errno.h> +#include <assert.h> +#include <sys/mman.h> +#include "check.h" + +static sig_atomic_t gotsig; + +static void handle(int sig) +{ + gotsig = 1; +} + +int main(void) +{ + struct timespec delay; + struct sigaction sa; + struct itimerval it; + int err; + + mlockall(MCL_CURRENT | MCL_FUTURE); + + sigemptyset(&sa.sa_mask); + sa.sa_handler = handle; + sa.sa_flags = 0; + check_unix(sigaction(SIGALRM, &sa, NULL)); + + it.it_interval.tv_sec = 1; + it.it_interval.tv_usec = 0; + it.it_value = it.it_interval; + check_unix(setitimer(ITIMER_REAL, &it, NULL)); + + delay.tv_sec = 5; + delay.tv_nsec = 0; + err = nanosleep(&delay, &delay); + if (err != -1 || errno != EINTR || !gotsig || delay.tv_sec != 4) { + fprintf(stderr, "FAILURE, nanosleep: %s, received SIGALRM: %d, " + "remaining time to sleep: %lu.%09lus\n", + err ? strerror(errno) : strerror(err), gotsig, + (unsigned long)delay.tv_sec, delay.tv_nsec); + exit(EXIT_FAILURE); + } + + fprintf(stderr, "Test OK\n"); + return EXIT_SUCCESS; +} diff --git a/src/testsuite/regression/xeno-regression-test.in b/src/testsuite/regression/xeno-regression-test.in index ecbc9c6..738d661 100644 --- a/src/testsuite/regression/xeno-regression-test.in +++ b/src/testsuite/regression/xeno-regression-test.in @@ -45,6 +45,8 @@ echo 0 > /proc/xenomai/latency || : @testdir@/mutex-torture-native @testdir@/mutex-torture-posix @testdir@/regression/posix/leaks +@testdir@/regression/posix/mprotect +@testdir@/regression/posix/nano_test @testdir@/regression/posix/shm @testdir@/regression/native/heap @testdir@/regression/native/leaks _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git