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

Reply via email to