As the Linux signal(7) said:
POSIX semaphore interfaces: sem_wait(3) and sem_timedwait(3) (since Linux 
2.6.22; beforehand, always failed with EINTR).

So, on linux, we just leave this untested when the kernel version
is less than 2.6.22.

Signed-off-by: Peng Haitao <[email protected]>
---
 testcases/open_posix_testsuite/Makefile              |  4 ++++
 testcases/open_posix_testsuite/Makefile.linux        | 20 ++++++++++++++++++++
 .../open_posix_testsuite/scripts/tst_kvercmp.sh      | 20 ++++++++++++++++++++
 3 files changed, 44 insertions(+)
 create mode 100644 testcases/open_posix_testsuite/Makefile.linux
 create mode 100755 testcases/open_posix_testsuite/scripts/tst_kvercmp.sh

diff --git a/testcases/open_posix_testsuite/Makefile 
b/testcases/open_posix_testsuite/Makefile
index 9c61fa4..500ddc2 100644
--- a/testcases/open_posix_testsuite/Makefile
+++ b/testcases/open_posix_testsuite/Makefile
@@ -40,6 +40,10 @@ exec_prefix?=                $(prefix)
 
 all: conformance-all functional-all stress-all tools-all
 
+ifeq ($(shell uname -s), Linux)
+include Makefile.linux
+endif
+
 clean: $(CRITICAL_MAKEFILES)
        @rm -f $(LOGFILE)*
        @for dir in $(SUBDIRS) tools; do \
diff --git a/testcases/open_posix_testsuite/Makefile.linux 
b/testcases/open_posix_testsuite/Makefile.linux
new file mode 100644
index 0000000..de3dd0e
--- /dev/null
+++ b/testcases/open_posix_testsuite/Makefile.linux
@@ -0,0 +1,20 @@
+all: conformance-all functional-all stress-all tools-all filter-broken
+
+cmd_disable = @set -e; \
+       echo "Disabling: $(1)"; \
+       echo "\#!/bin/sh" > $(1); \
+       echo "echo $(1) skipped" >> $(1); \
+       echo "echo $(2)" >> $(1); \
+       echo "exit 0" >> $(1); \
+       chmod a+x $(1)
+
+kver_cmp = $(shell $(top_srcdir)/scripts/tst_kvercmp.sh 2 6 22)
+ifeq ($(kver_cmp), 1)
+filter-broken: t_sigaction_16-1
+else
+filter-broken:
+endif
+
+t_sigaction_16-1:
+       $(call 
cmd_disable,conformance/interfaces/sigaction/sigaction_16-1.run-test, \
+         This fails on old linux because sem_wait always be interrupted by a 
signal.)
diff --git a/testcases/open_posix_testsuite/scripts/tst_kvercmp.sh 
b/testcases/open_posix_testsuite/scripts/tst_kvercmp.sh
new file mode 100755
index 0000000..d0e101c
--- /dev/null
+++ b/testcases/open_posix_testsuite/scripts/tst_kvercmp.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+if [ $# -ne 3 ]; then
+       echo "Usgae: ./tst_kvercmp.sh r1 r2 r3"
+       exit 1
+fi
+
+ker_ver=$(uname -r)
+r1=$(echo ${ker_ver} | awk -F. '{print $1}')
+r2=$(echo ${ker_ver} | awk -F. '{print $2}')
+r3=$(echo ${ker_ver} | awk -F. '{print $3}')
+r3=${r3%-*}
+
+test_ver=$(($1 * 65536 + $2 * 256 + $3))
+curr_ver=$((${r1} * 65536 + ${r2} * 256 + ${r3}))
+if [ ${curr_ver} -ge ${test_ver} ]; then
+       echo 0
+else
+       echo 1
+fi
-- 
1.8.3.1


------------------------------------------------------------------------------
DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to