[igt-dev] [PATCH i-g-t 1/9] lib/tests: Drop NIH exit status handling

Chris Wilson chris at chris-wilson.co.uk
Wed Feb 13 10:49:42 UTC 2019


Quoting Daniel Vetter (2019-02-13 10:35:43)
> Spotted by Chris.
> 
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
> ---
>  lib/tests/igt_assert.c     |  9 +++------
>  lib/tests/igt_segfault.c   |  8 ++++----
>  lib/tests/igt_simulation.c | 39 +++++++++++++++++++++++---------------
>  3 files changed, 31 insertions(+), 25 deletions(-)
> 
> diff --git a/lib/tests/igt_assert.c b/lib/tests/igt_assert.c
> index 306b1fb8533c..0082fda14851 100644
> --- a/lib/tests/igt_assert.c
> +++ b/lib/tests/igt_assert.c
> @@ -79,10 +79,7 @@ static int do_fork(void)
>                        errno == EINTR)
>                         ;
>  
> -               if(WIFSIGNALED(status))
> -                       return WTERMSIG(status) + 128;
> -
> -               return WEXITSTATUS(status);
> +               return status;
>         }
>  }
>  
> @@ -161,7 +158,7 @@ igt_main
>         test_to_run = test_cmpint_negative;
>         ret = do_fork();
>         igt_subtest("igt_cmpint_negative")
> -               internal_assert(ret == IGT_EXIT_FAILURE);
> +               internal_assert(WEXITSTATUS(ret) == IGT_EXIT_FAILURE);

I don't think we can get away with plain WEXITSTATUS/WTERMSIG as they
are simple shifts and masks.

I think we need

bool wexited(int status, int exitcode)
{
	return WIFEXITED(status) && WEXITSTATUS(status) == exitcode;
}

bool wsignaled(int status, int sig)
{
	return WIFSIGNALED(status) && WTERMSIG(status) == sig;
}

-Chris


More information about the igt-dev mailing list