[prev in list] [next in list] [prev in thread] [next in thread]
List: ltp-list
Subject: Re: [LTP]
From: "Mitani" <mitani () ryobi ! co ! jp>
Date: 2009-12-22 5:17:21
Message-ID: 000001ca82c6$09f0ec40$1dd2c4c0$ () co ! jp
[Download RAW message or body]
I revised patch into "WIFEXITED(status) && WEXITSTATUS(status) == 0", and tried to test.
After that, "nanosleep" could work correctly.
I agree with your proposal.
Thank you for your help!
-Tomonori Mitani
-----Original Message-----
From: Garrett Cooper [mailto:yanegomi@gmail.com]
Sent: Tuesday, December 22, 2009 11:45 AM
To: Mitani
Cc: ltp-list@lists.sourceforge.net
Subject: Re: [LTP] "nanosleep{02~04}" testcase failed
2009/12/20 Mitani <mitani@ryobi.co.jp>:
> Hi,
>
> I found that "nanosleep{02~04}" testcase failed like follow example.
> ----------
> nanosleep02 1 TFAIL : child process exited abnormally
> ----------
>
> In ${LTPROOT}/testcases/kernel/syscalls/nanosleep/nanosleep{02~04}.c,
> WEXITSTATUS(status) is used to judge whether child process did exit
> normally.
> But WEXITSTATUS macro is used only when WIFEXITED macro returned "true".
> So, it cannot get the correct results and it terminated with the above
> error.
>
> To solve this problem, I thought that we had better use WIFEXITED macro
> instead of the WEXITSTATUS macro.
> Here are patches to fix these problem:
> ============
> --- nanosleep02.c 2009-11-02 22:57:17.000000000 +0900
> +++ nanosleep02.c.new 2009-12-21 14:15:19.000000000 +0900
> @@ -162,10 +162,10 @@
>
> /* Wait for child to execute */
> wait(&status);
> - if (WEXITSTATUS(status) == 0) {
> + if (WIFEXITED(status)) {
> tst_resm(TPASS, "Functionality of nanosleep() "
> "is correct");
> - } else if (WEXITSTATUS(status) == 1) {
> + } else if (!WIFEXITED(status)) {
> tst_resm(TFAIL, "child process exited abnormally");
> }
> } /* End for TEST_LOOPING */
>
> ============
>
> ============
> --- nanosleep03.c 2009-11-02 22:57:17.000000000 +0900
> +++ nanosleep03.c.new 2009-12-21 15:03:52.000000000 +0900
> @@ -143,10 +143,10 @@
>
> /* Wait for child to execute */
> wait(&status);
> - if (WEXITSTATUS(status) == 0) {
> + if (WIFEXITED(status)) {
> tst_resm(TPASS, "nanosleep() fails, interrupted"
> " by signal, error:%d", EINTR);
> - } else if (WEXITSTATUS(status) == 1) {
> + } else if (!WIFEXITED(status)) {
> tst_resm(TFAIL, "child process exited abnormally");
> }
> } /* End for TEST_LOOPING */
>
> ============
>
> ============
> --- nanosleep04.c 2009-11-02 22:57:17.000000000 +0900
> +++ nanosleep04.c.new 2009-12-21 15:04:24.000000000 +0900
> @@ -147,10 +147,10 @@
>
> /* Wait for child to execute */
> wait(&status);
> - if (WEXITSTATUS(status) == 0) {
> + if (WIFEXITED(status)) {
> tst_resm(TPASS, "nanosleep() fails, invalid pause "
> "time, error:%d", EINVAL);
> - } else if (WEXITSTATUS(status) == 1) {
> + } else if (!WIFEXITED(status)) {
> tst_resm(TFAIL, "child process exited abnormally");
> }
> } /* End for TEST_LOOPING */
> ============
I agree that the test's validation step is written incorrectly, as per
the wait(2) manpage:
WIFEXITED(status)
returns true if the child terminated normally, that is, by call-
ing exit(3) or _exit(2), or by returning from main().
WEXITSTATUS(status)
returns the exit status of the child. This consists of the
least significant 8 bits of the status argument that the child
specified in a call to exit(3) or _exit(2) or as the argument
for a return statement in main(). This macro should only be
employed if WIFEXITED returned true.
in particular the precondition for calling WEXITSTATUS, but should
it be WIFEXITED(status) && WEXITSTATUS(status) == 0 => PASS, else
FAIL?
Thanks,
-Garrett
------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic