Hi, According to POSIX, many historical implementations (including Version 7 and System V) allow an alarm to occur up to a second early. Other implementations allow alarms up to half a second or one clock tick early or do not allow them to occur early at all. That means, the SIGALRM sent by alarm() could arrive a little earlier. So, even if sem_wait() is blocked, test could still fail. Setting a range for time checking would be better. When sem_wait() is block and then be interrupted by SIGALRM, if the time is in this range, test is passed.
Signed-off-by: tangchen <[email protected]> --- .../conformance/interfaces/sem_wait/13-1.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sem_wait/13-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sem_wait/13-1.c index 7bf547c..f30bba5 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/sem_wait/13-1.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/sem_wait/13-1.c @@ -83,6 +83,8 @@ /******************************************************************************/ /*************************** Test case ***********************************/ /******************************************************************************/ +#define RANGE 1000000 /* 1000000 nsec */ + sem_t sem; void handler(int sig) @@ -163,7 +165,7 @@ int main(int argc, char * argv[]) } if (((ts_fin.tv_sec - ts_ref.tv_sec) * 1000000000) + - (ts_fin.tv_nsec - ts_ref.tv_nsec) < 1000000000) + (ts_fin.tv_nsec - ts_ref.tv_nsec) < (1000000000 - RANGE)) { output("Ts: %d.%9.9d -> %d.%9.9d\n", ts_ref.tv_sec, ts_ref.tv_nsec, ts_fin.tv_sec, ts_fin.tv_nsec); FAILED("The sem_wait call did not block"); @@ -185,4 +187,4 @@ int main(int argc, char * argv[]) #endif PASSED; -} \ No newline at end of file +} -- 1.7.1 -- Best Regards, Tang chen -------------------------------------------------- ------------------------------------------------------------------------------ Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
