All of lore.kernel.org
 help / color / mirror / Atom feed
From: tangchen <tangchen@cn.fujitsu.com>
To: yanegomi@gmail.com
Cc: ltp-list@lists.sourceforge.net
Subject: [LTP] [POSIX][PATCH] sem_wait: Setting a range for time checking.
Date: Wed, 16 Mar 2011 16:36:47 +0800	[thread overview]
Message-ID: <4D80769F.70202@cn.fujitsu.com> (raw)

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 <tangchen@cn.fujitsu.com>
---
  .../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
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

             reply	other threads:[~2011-03-16  8:35 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-16  8:36 tangchen [this message]
2011-03-23 16:36 ` [LTP] [POSIX][PATCH] sem_wait: Setting a range for time checking Cyril Hrubis
     [not found]   ` <4D8AA64A.30506@cn.fujitsu.com>
2011-03-31 16:09     ` Cyril Hrubis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D80769F.70202@cn.fujitsu.com \
    --to=tangchen@cn.fujitsu.com \
    --cc=ltp-list@lists.sourceforge.net \
    --cc=yanegomi@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.