From: Peng H. <pe...@cn...> - 2013-12-04 03:43:48
|
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 <pe...@cn...> Signed-off-by: Jan Stancek <jst...@re...> --- testcases/open_posix_testsuite/Makefile | 4 ++++ testcases/open_posix_testsuite/Makefile.linux | 22 ++++++++++++++++++++++ .../open_posix_testsuite/scripts/tst_kvercmp.sh | 20 ++++++++++++++++++++ 3 files changed, 46 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..4a32c07 --- /dev/null +++ b/testcases/open_posix_testsuite/Makefile.linux @@ -0,0 +1,22 @@ +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) + +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.3.1 |