[LTP] [PATCH 2/2] syscalls/wait02.c: Convert to new API
Xiao Yang
ice_yangxiao@163.com
Mon Apr 19 04:43:14 CEST 2021
On 4/16/21 8:16 PM, Cyril Hrubis wrote:
> Hi!
>> Take use of macros and clean up.
>>
>> Signed-off-by: Zenghui Gao <gaozh.jy@fujitsu.com>
>> Reviewed-by: Xiao Yang <yangx.jy@fujitsu.com>
>> ---
>> testcases/kernel/syscalls/wait/wait02.c | 106 ++++++------------------
>> 1 file changed, 25 insertions(+), 81 deletions(-)
>>
>> diff --git a/testcases/kernel/syscalls/wait/wait02.c b/testcases/kernel/syscalls/wait/wait02.c
>> index 5695c071c..111849f2a 100644
>> --- a/testcases/kernel/syscalls/wait/wait02.c
>> +++ b/testcases/kernel/syscalls/wait/wait02.c
>> @@ -1,103 +1,47 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later
>> /*
>> * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
>> * AUTHOR : William Roske
>> * CO-PILOT : Dave Fenner
>> + *\
> I'm not sure that starting sequence in the middle of comment would be
> picked up by the docparser. Either way the documentation comment should
> really be a separate comment.
>
>> + * [Description]
>> *
>> - * This program is free software; you can redistribute it and/or modify it
>> - * under the terms of version 2 of the GNU General Public License as
>> - * published by the Free Software Foundation.
> Since this is SGI copyright we have to keep GPL-2.0 for the SPDX as
> well.
>
>> - * This program is distributed in the hope that it would be useful, but
>> - * WITHOUT ANY WARRANTY; without even the implied warranty of
>> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>> - *
>> - * Further, this software is distributed without any warranty that it is
>> - * free of the rightful claim of any third person regarding infringement
>> - * or the like. Any license provided herein, whether implied or
>> - * otherwise, applies only to this software file. Patent licenses, if
>> - * any, provided herein do not apply to combinations of this program with
>> - * other software, or any other product whatsoever.
>> - *
>> - * You should have received a copy of the GNU General Public License along
>> - * with this program; if not, write the Free Software Foundation, Inc.,
>> - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
>> - *
>> - * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
>> - * Mountain View, CA 94043, or:
>> - *
>> - * http://www.sgi.com
>> - *
>> - * For further information regarding this notice, see:
>> - *
>> - * http://oss.sgi.com/projects/GenInfo/NoticeExplan/
>> - *
>> + * For a terminated child, test whether wait(2) can get its pid
>> + * and exit status correctly.
>> */
>>
>> #include <errno.h>
>> -#include <string.h>
>> -#include <signal.h>
>> -#include <stdlib.h>
>> #include <sys/types.h>
>> #include <sys/wait.h>
>> -#include "test.h"
>> -
>> -static void setup(void);
>> -static void cleanup(void);
>> -
>> -char *TCID = "wait02";
>> -int TST_TOTAL = 1;
>> -
>> -static void wait_verify(void);
>> -
>> -int main(int ac, char **av)
>> -{
>> - int lc;
>> -
>> - tst_parse_opts(ac, av, NULL, NULL);
>> -
>> - setup();
>> -
>> - for (lc = 0; TEST_LOOPING(lc); lc++) {
>> - tst_count = 0;
>> - wait_verify();
>> - }
>> -
>> - cleanup();
>> - tst_exit();
>> -}
>> -
>> -static void setup(void)
>> -{
>> - tst_sig(FORK, DEF_HANDLER, cleanup);
>> -
>> - TEST_PAUSE;
>> -}
>> +#include <stdlib.h>
>> +#include "tst_test.h"
>>
>> -static void wait_verify(void)
>> +static void verify_wait(void)
>> {
>> - int fork_pid, status, exit_child = 1;
>> + int status, exit_child = 1;
>> + pid_t fpid;
>>
>> - fork_pid = FORK_OR_VFORK();
>> - if (fork_pid == -1) {
>> - tst_brkm(TBROK | TERRNO, cleanup, "fork() Failure");
>> - } else if (fork_pid == 0) {
>> - sleep(1);
>> + fpid = SAFE_FORK();
>> + if (fpid == 0)
>> exit(exit_child);
>> - }
>>
>> TEST(wait(&status));
>> + if (TST_RET == -1) {
>> + tst_res(TFAIL | TTERRNO, "wait() failed");
>> + return;
>> + }
> I guess that we should add TST_EXP_PID(), I guess that it would be
> basically the same as TST_EXP_FD(). Can you add it or should I do that?
Hi Cyril,
Thanks for your detailed review.
I will add TST_EXP_PID() and TST_EXP_PID_SILENT() in a seperate patchset
and Gao will fix all the rest of comments.
Best Regards,
Xiao Yang
>
>> - if (TEST_RETURN == -1) {
>> - tst_resm(TFAIL | TTERRNO, "wait(1) Failed");
>> + if (fpid != TST_RET) {
>> + tst_res(TFAIL, "wait() returned wrong pid %ld, expected %d",
>> + TST_RET, fpid);
>> } else if (WIFEXITED(status) && WEXITSTATUS(status) == exit_child) {
>> - tst_resm(TPASS, "wait(&status) returned %ld", TEST_RETURN);
>> + tst_res(TPASS, "wait() succeeded");
>> } else {
>> - tst_resm(TFAIL,
>> - "wait(1) Failed, exit_child - 0x%x, status - 0x%x",
>> - exit_child, status);
>> + tst_res(TFAIL, "wait() got wrong exit status 0x%x", status);
>> }
>> }
> This could be made a bit simpler by using return instead of else as:
>
> if (foo) {
> tst_res(TFAIL, ...);
> return;
> }
>
> if (bar) {
> tst_res(TPASS, ...);
> return;
> }
>
> tst_res(...);
>
> At least I find this style more readable.
>
More information about the ltp
mailing list