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 it untested when the kernel version
is less than 2.6.22 and user wants to filter it.

Signed-off-by: Peng Haitao <[email protected]>
Signed-off-by: Jan Stancek <[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..3b09433
--- /dev/null
+++ b/testcases/open_posix_testsuite/Makefile.linux
@@ -0,0 +1,20 @@
+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)
+
+BROKEN :=
+
+kver_cmp = $(shell $(top_srcdir)/scripts/tst_kvercmp.sh 2 6 22)
+ifeq ($(kver_cmp), 1)
+BROKEN += t_sigaction_16-1
+endif
+
+filter-broken: $(BROKEN)
+
+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.5.3


------------------------------------------------------------------------------
Flow-based real-time traffic analytics software. Cisco certified tool.
Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer
Customize your own dashboards, set traffic alerts and generate reports.
Network behavioral analysis & security monitoring. All-in-one tool.
http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to