* [LTP] [PATCH 1/2] syscalls/wait01.c: Convert to new API @ 2021-04-15 14:05 Zenghui Gao 2021-04-15 14:05 ` [LTP] [PATCH 2/2] syscalls/wait02.c: " Zenghui Gao 2021-04-16 12:04 ` [LTP] [PATCH 1/2] syscalls/wait01.c: " Cyril Hrubis 0 siblings, 2 replies; 5+ messages in thread From: Zenghui Gao @ 2021-04-15 14:05 UTC (permalink / raw) To: ltp 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/wait01.c | 82 ++++--------------------- 1 file changed, 13 insertions(+), 69 deletions(-) diff --git a/testcases/kernel/syscalls/wait/wait01.c b/testcases/kernel/syscalls/wait/wait01.c index bd22c1191..3af95cf9b 100644 --- a/testcases/kernel/syscalls/wait/wait01.c +++ b/testcases/kernel/syscalls/wait/wait01.c @@ -1,81 +1,25 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * Copyright (c) 2014 Fujitsu Ltd. * Author: Zeng Linggang <zenglg.jy@cn.fujitsu.com> - * - * 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. - * - * 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. - * - * 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. */ -/* - * Test Description: - * Verify that, - * The calling process does not have any unwaited-for children, - * ECHILD would return. +/*\ + * [Description] + * + * The calling process does not have any unwaited-for children, + * ECHILD would return. */ #include <errno.h> -#include <sys/types.h> #include <sys/wait.h> +#include <sys/types.h> +#include "tst_test.h" -#include "test.h" - -char *TCID = "wait01"; -int TST_TOTAL = 1; -static void setup(void); -static void wait_verify(void); -static void cleanup(void); - -int main(int argc, char **argv) -{ - int lc; - - tst_parse_opts(argc, argv, NULL, NULL); - - setup(); - - for (lc = 0; TEST_LOOPING(lc); lc++) { - tst_count = 0; - wait_verify(); - } - - cleanup(); - tst_exit(); -} - -static void setup(void) -{ - tst_sig(NOFORK, DEF_HANDLER, cleanup); - - TEST_PAUSE; -} - -static void wait_verify(void) +static void verify_wait(void) { - TEST(wait(NULL)); - - if (TEST_RETURN != -1) { - tst_resm(TFAIL | TTERRNO, "wait failed unexpectedly: %ld", - TEST_RETURN); - return; - } - - if (TEST_ERRNO == ECHILD) { - tst_resm(TPASS | TTERRNO, "wait failed as expected"); - } else { - tst_resm(TFAIL | TTERRNO, - "wait failed unexpectedly; expected: %d - %s", - ECHILD, strerror(ECHILD)); - } + TST_EXP_FAIL(wait(NULL), ECHILD); } -static void cleanup(void) -{ -} +static struct tst_test test = { + .test_all = verify_wait, +}; -- 2.18.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [LTP] [PATCH 2/2] syscalls/wait02.c: Convert to new API 2021-04-15 14:05 [LTP] [PATCH 1/2] syscalls/wait01.c: Convert to new API Zenghui Gao @ 2021-04-15 14:05 ` Zenghui Gao 2021-04-16 12:16 ` Cyril Hrubis 2021-04-16 12:04 ` [LTP] [PATCH 1/2] syscalls/wait01.c: " Cyril Hrubis 1 sibling, 1 reply; 5+ messages in thread From: Zenghui Gao @ 2021-04-15 14:05 UTC (permalink / raw) To: ltp 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 + *\ + * [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. - * - * 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; + } - 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); } } -static void cleanup(void) -{ -} +static struct tst_test test = { + .test_all = verify_wait, + .forks_child = 1, +}; -- 2.18.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [LTP] [PATCH 2/2] syscalls/wait02.c: Convert to new API 2021-04-15 14:05 ` [LTP] [PATCH 2/2] syscalls/wait02.c: " Zenghui Gao @ 2021-04-16 12:16 ` Cyril Hrubis 2021-04-19 2:43 ` Xiao Yang 0 siblings, 1 reply; 5+ messages in thread From: Cyril Hrubis @ 2021-04-16 12:16 UTC (permalink / raw) To: ltp 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? > - 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. -- Cyril Hrubis chrubis@suse.cz ^ permalink raw reply [flat|nested] 5+ messages in thread
* [LTP] [PATCH 2/2] syscalls/wait02.c: Convert to new API 2021-04-16 12:16 ` Cyril Hrubis @ 2021-04-19 2:43 ` Xiao Yang 0 siblings, 0 replies; 5+ messages in thread From: Xiao Yang @ 2021-04-19 2:43 UTC (permalink / raw) To: ltp 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. > ^ permalink raw reply [flat|nested] 5+ messages in thread
* [LTP] [PATCH 1/2] syscalls/wait01.c: Convert to new API 2021-04-15 14:05 [LTP] [PATCH 1/2] syscalls/wait01.c: Convert to new API Zenghui Gao 2021-04-15 14:05 ` [LTP] [PATCH 2/2] syscalls/wait02.c: " Zenghui Gao @ 2021-04-16 12:04 ` Cyril Hrubis 1 sibling, 0 replies; 5+ messages in thread From: Cyril Hrubis @ 2021-04-16 12:04 UTC (permalink / raw) To: ltp Hi! Nice cleanup. Pushed with a minor fix for the [Description], thanks. > diff --git a/testcases/kernel/syscalls/wait/wait01.c b/testcases/kernel/syscalls/wait/wait01.c > index bd22c1191..3af95cf9b 100644 > --- a/testcases/kernel/syscalls/wait/wait01.c > +++ b/testcases/kernel/syscalls/wait/wait01.c > @@ -1,81 +1,25 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later > /* > * Copyright (c) 2014 Fujitsu Ltd. > * Author: Zeng Linggang <zenglg.jy@cn.fujitsu.com> > - * > - * 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. Also note that this was originally GPL-2.0 only, but since the original copyright is by fujitsu and you are fujitsu employees I keep the new licence GPL-2.0-or-later. -- Cyril Hrubis chrubis@suse.cz ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-04-19 2:43 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-04-15 14:05 [LTP] [PATCH 1/2] syscalls/wait01.c: Convert to new API Zenghui Gao 2021-04-15 14:05 ` [LTP] [PATCH 2/2] syscalls/wait02.c: " Zenghui Gao 2021-04-16 12:16 ` Cyril Hrubis 2021-04-19 2:43 ` Xiao Yang 2021-04-16 12:04 ` [LTP] [PATCH 1/2] syscalls/wait01.c: " Cyril Hrubis
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox