* [LTP] [PATCH 0/2] Convert syscalls/dup3/dup3_{01,02} to new API
@ 2021-09-16 14:46 ` QI Fuli
0 siblings, 0 replies; 10+ messages in thread
From: QI Fuli @ 2021-09-16 14:46 UTC (permalink / raw)
To: ltp
From: QI Fuli <qi.fuli@fujitsu.com>
Convert syscalls/dup3/dup3_{01,02} to new API
QI Fuli (2):
syscalls/dup3_01: Rewrite and convert to new API
syscalls/dup3_02: Convert to new API
testcases/kernel/syscalls/dup3/dup3_01.c | 157 ++++++++---------------
testcases/kernel/syscalls/dup3/dup3_02.c | 111 ++++------------
2 files changed, 75 insertions(+), 193 deletions(-)
--
2.31.1
^ permalink raw reply [flat|nested] 10+ messages in thread* [LTP] [PATCH 0/2] Convert syscalls/dup3/dup3_{01,02} to new API @ 2021-09-16 14:46 ` QI Fuli 0 siblings, 0 replies; 10+ messages in thread From: QI Fuli @ 2021-09-16 14:46 UTC (permalink / raw) To: ltp; +Cc: QI Fuli From: QI Fuli <qi.fuli@fujitsu.com> Convert syscalls/dup3/dup3_{01,02} to new API QI Fuli (2): syscalls/dup3_01: Rewrite and convert to new API syscalls/dup3_02: Convert to new API testcases/kernel/syscalls/dup3/dup3_01.c | 157 ++++++++--------------- testcases/kernel/syscalls/dup3/dup3_02.c | 111 ++++------------ 2 files changed, 75 insertions(+), 193 deletions(-) -- 2.31.1 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH 1/2] syscalls/dup3_01: Rewrite and convert to new API @ 2021-09-16 14:46 ` QI Fuli 0 siblings, 0 replies; 10+ messages in thread From: QI Fuli @ 2021-09-16 14:46 UTC (permalink / raw) To: ltp From: QI Fuli <qi.fuli@fujitsu.com> - divide into two testcases - convert to new API Signed-off-by: QI Fuli <qi.fuli@fujitsu.com> --- testcases/kernel/syscalls/dup3/dup3_01.c | 157 ++++++++--------------- 1 file changed, 50 insertions(+), 107 deletions(-) diff --git a/testcases/kernel/syscalls/dup3/dup3_01.c b/testcases/kernel/syscalls/dup3/dup3_01.c index 6a44ec809..9a233f51b 100644 --- a/testcases/kernel/syscalls/dup3/dup3_01.c +++ b/testcases/kernel/syscalls/dup3/dup3_01.c @@ -1,120 +1,63 @@ -/******************************************************************************/ -/* */ -/* Copyright (c) Ulrich Drepper <drepper@redhat.com> */ -/* Copyright (c) International Business Machines Corp., 2009 */ -/* */ -/* This program is free software; you can redistribute it and/or modify */ -/* it under the terms of the GNU General Public License as published by */ -/* the Free Software Foundation; either version 2 of the License, or */ -/* (at your option) any later version. */ -/* */ -/* This program is distributed in the hope that it will be useful, */ -/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ -/* the GNU General Public License for more details. */ -/* */ -/* You should have received a copy of the GNU General Public License */ -/* along with this program; if not, write to the Free Software */ -/* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -/* */ -/******************************************************************************/ -/******************************************************************************/ -/* */ -/* File: dup3_01.c */ -/* */ -/* Description: This Program tests the new system call introduced in 2.6.27. */ -/* Ulrich??s comment as in: */ -/* http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=336dd1f70ff62d7dd8655228caed4c5bfc818c56 */ -/* says: */ -/* This patch adds the new dup3 syscall. It extends the old dup2 syscall by */ -/* one parameter which is meant to hold a flag value. Support for the */ -/* O_CLOEXEC flag is added in this patch. The following test must be adjusted */ -/* for architectures other than x86 and x86-64 and in case the */ -/* syscall numbers changed. */ -/* */ -/* Usage: <for command-line> */ -/* dup3_01 [-c n] [-e][-i n] [-I x] [-p x] [-t] */ -/* where, -c n : Run n copies concurrently. */ -/* -e : Turn on errno logging. */ -/* -i n : Execute test n times. */ -/* -I x : Execute test for x seconds. */ -/* -P x : Pause for x seconds between iterations. */ -/* -t : Turn on syscall timing. */ -/* */ -/* Total Tests: 1 */ -/* */ -/* Test Name: dup3_01 */ -/* */ -/* Author: Ulrich Drepper <drepper@redhat.com> */ -/* */ -/* History: Created - Jan 13 2009 - Ulrich Drepper <drepper@redhat.com> */ -/* Ported to LTP */ -/* - Jan 13 2009 - Subrata <subrata@linux.vnet.ibm.com> */ -/******************************************************************************/ -#include <fcntl.h> +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) Ulrich Drepper <drepper@redhat.com> + * Copyright (c) International Business Machines Corp., 2009 + * Created - Jan 13 2009 - Ulrich Drepper <drepper@redhat.com> + * Ported to LTP - Jan 13 2009 - Subrata <subrata@linux.vnet.ibm.com> + */ + +/*\ + * [Description] + * Testcase to check whether dup3() supports O_CLOEXEC flag. + */ + #include <stdio.h> -#include <time.h> -#include <unistd.h> -#include <sys/syscall.h> +#include <stdbool.h> #include <errno.h> -#include "test.h" -#include "lapi/fcntl.h" +#include "tst_test.h" #include "lapi/syscalls.h" - -char *TCID = "dup3_01"; -int TST_TOTAL = 1; - -void cleanup(void) +#include "tst_safe_macros.h" + +static struct tcase { + int oflag; + bool tflag; + char *desc; +} tcases [] = { + {0, true, "dup3(0)"}, + {O_CLOEXEC, false, "dup3(O_CLOEXEC)"}, +}; + +static void setup(void) { - tst_rmdir(); -} - -void setup(void) -{ - TEST_PAUSE; - tst_tmpdir(); -} + if ((tst_kvercmp(2, 6, 27)) < 0) + tst_brk(TCONF, + "This test can only run on kernels 2.6.27 and higher"); +}; -int main(int argc, char *argv[]) +static void run(unsigned int i) { int fd, coe; + struct tcase *tc = tcases + i; - tst_parse_opts(argc, argv, NULL, NULL); + TEST(tst_syscall(__NR_dup3, 1, 4, tc->oflag)); - if ((tst_kvercmp(2, 6, 27)) < 0) - tst_brkm(TCONF, NULL, - "This test can only run on kernels that are 2.6.27 and higher"); - setup(); + fd = TST_RET; + if (TST_RET == -1) + tst_brk(TFAIL | TTERRNO, "%s failed", tc->desc); - fd = ltp_syscall(__NR_dup3, 1, 4, 0); - if (fd == -1) { - tst_brkm(TFAIL | TERRNO, cleanup, "dup3(0) failed"); - } - coe = fcntl(fd, F_GETFD); - if (coe == -1) { - tst_brkm(TBROK | TERRNO, cleanup, "fcntl failed"); - } - if (coe & FD_CLOEXEC) { - tst_brkm(TFAIL, cleanup, "dup3(0) set close-on-exec flag"); - } - close(fd); + coe = SAFE_FCNTL(fd, F_GETFD); + if ((coe & FD_CLOEXEC) == tc->tflag) + tst_brk(TFAIL, "%s set close-on-exec flag", tc->desc); + else + tst_res(TPASS, "%s PASSED", tc->desc); - fd = ltp_syscall(__NR_dup3, 1, 4, O_CLOEXEC); - if (fd == -1) { - tst_brkm(TFAIL | TERRNO, cleanup, "dup3(O_CLOEXEC) failed"); - } - coe = fcntl(fd, F_GETFD); - if (coe == -1) { - tst_brkm(TBROK | TERRNO, cleanup, "fcntl failed"); - } - if ((coe & FD_CLOEXEC) == 0) { - tst_brkm(TFAIL, cleanup, - "dup3(O_CLOEXEC) set close-on-exec flag"); - } - close(fd); - tst_resm(TPASS, "dup3(O_CLOEXEC) PASSED"); + SAFE_CLOSE(fd); +}; - cleanup(); - tst_exit(); -} +static struct tst_test test = { + .setup = setup, + .tcnt = ARRAY_SIZE(tcases), + .needs_tmpdir = 1, + .test = run, +}; -- 2.31.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [LTP] [PATCH 1/2] syscalls/dup3_01: Rewrite and convert to new API @ 2021-09-16 14:46 ` QI Fuli 0 siblings, 0 replies; 10+ messages in thread From: QI Fuli @ 2021-09-16 14:46 UTC (permalink / raw) To: ltp; +Cc: QI Fuli [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain; charset=y, Size: 7580 bytes --] From: QI Fuli <qi.fuli@fujitsu.com> - divide into two testcases - convert to new API Signed-off-by: QI Fuli <qi.fuli@fujitsu.com> --- testcases/kernel/syscalls/dup3/dup3_01.c | 157 ++++++++--------------- 1 file changed, 50 insertions(+), 107 deletions(-) diff --git a/testcases/kernel/syscalls/dup3/dup3_01.c b/testcases/kernel/syscalls/dup3/dup3_01.c index 6a44ec809..9a233f51b 100644 --- a/testcases/kernel/syscalls/dup3/dup3_01.c +++ b/testcases/kernel/syscalls/dup3/dup3_01.c @@ -1,120 +1,63 @@ -/******************************************************************************/ -/* */ -/* Copyright (c) Ulrich Drepper <drepper@redhat.com> */ -/* Copyright (c) International Business Machines Corp., 2009 */ -/* */ -/* This program is free software; you can redistribute it and/or modify */ -/* it under the terms of the GNU General Public License as published by */ -/* the Free Software Foundation; either version 2 of the License, or */ -/* (at your option) any later version. */ -/* */ -/* This program is distributed in the hope that it will be useful, */ -/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ -/* the GNU General Public License for more details. */ -/* */ -/* You should have received a copy of the GNU General Public License */ -/* along with this program; if not, write to the Free Software */ -/* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -/* */ -/******************************************************************************/ -/******************************************************************************/ -/* */ -/* File: dup3_01.c */ -/* */ -/* Description: This Program tests the new system call introduced in 2.6.27. */ -/* Ulrich´s comment as in: */ -/* http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=336dd1f70ff62d7dd8655228caed4c5bfc818c56 */ -/* says: */ -/* This patch adds the new dup3 syscall. It extends the old dup2 syscall by */ -/* one parameter which is meant to hold a flag value. Support for the */ -/* O_CLOEXEC flag is added in this patch. The following test must be adjusted */ -/* for architectures other than x86 and x86-64 and in case the */ -/* syscall numbers changed. */ -/* */ -/* Usage: <for command-line> */ -/* dup3_01 [-c n] [-e][-i n] [-I x] [-p x] [-t] */ -/* where, -c n : Run n copies concurrently. */ -/* -e : Turn on errno logging. */ -/* -i n : Execute test n times. */ -/* -I x : Execute test for x seconds. */ -/* -P x : Pause for x seconds between iterations. */ -/* -t : Turn on syscall timing. */ -/* */ -/* Total Tests: 1 */ -/* */ -/* Test Name: dup3_01 */ -/* */ -/* Author: Ulrich Drepper <drepper@redhat.com> */ -/* */ -/* History: Created - Jan 13 2009 - Ulrich Drepper <drepper@redhat.com> */ -/* Ported to LTP */ -/* - Jan 13 2009 - Subrata <subrata@linux.vnet.ibm.com> */ -/******************************************************************************/ -#include <fcntl.h> +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) Ulrich Drepper <drepper@redhat.com> + * Copyright (c) International Business Machines Corp., 2009 + * Created - Jan 13 2009 - Ulrich Drepper <drepper@redhat.com> + * Ported to LTP - Jan 13 2009 - Subrata <subrata@linux.vnet.ibm.com> + */ + +/*\ + * [Description] + * Testcase to check whether dup3() supports O_CLOEXEC flag. + */ + #include <stdio.h> -#include <time.h> -#include <unistd.h> -#include <sys/syscall.h> +#include <stdbool.h> #include <errno.h> -#include "test.h" -#include "lapi/fcntl.h" +#include "tst_test.h" #include "lapi/syscalls.h" - -char *TCID = "dup3_01"; -int TST_TOTAL = 1; - -void cleanup(void) +#include "tst_safe_macros.h" + +static struct tcase { + int oflag; + bool tflag; + char *desc; +} tcases [] = { + {0, true, "dup3(0)"}, + {O_CLOEXEC, false, "dup3(O_CLOEXEC)"}, +}; + +static void setup(void) { - tst_rmdir(); -} - -void setup(void) -{ - TEST_PAUSE; - tst_tmpdir(); -} + if ((tst_kvercmp(2, 6, 27)) < 0) + tst_brk(TCONF, + "This test can only run on kernels 2.6.27 and higher"); +}; -int main(int argc, char *argv[]) +static void run(unsigned int i) { int fd, coe; + struct tcase *tc = tcases + i; - tst_parse_opts(argc, argv, NULL, NULL); + TEST(tst_syscall(__NR_dup3, 1, 4, tc->oflag)); - if ((tst_kvercmp(2, 6, 27)) < 0) - tst_brkm(TCONF, NULL, - "This test can only run on kernels that are 2.6.27 and higher"); - setup(); + fd = TST_RET; + if (TST_RET == -1) + tst_brk(TFAIL | TTERRNO, "%s failed", tc->desc); - fd = ltp_syscall(__NR_dup3, 1, 4, 0); - if (fd == -1) { - tst_brkm(TFAIL | TERRNO, cleanup, "dup3(0) failed"); - } - coe = fcntl(fd, F_GETFD); - if (coe == -1) { - tst_brkm(TBROK | TERRNO, cleanup, "fcntl failed"); - } - if (coe & FD_CLOEXEC) { - tst_brkm(TFAIL, cleanup, "dup3(0) set close-on-exec flag"); - } - close(fd); + coe = SAFE_FCNTL(fd, F_GETFD); + if ((coe & FD_CLOEXEC) == tc->tflag) + tst_brk(TFAIL, "%s set close-on-exec flag", tc->desc); + else + tst_res(TPASS, "%s PASSED", tc->desc); - fd = ltp_syscall(__NR_dup3, 1, 4, O_CLOEXEC); - if (fd == -1) { - tst_brkm(TFAIL | TERRNO, cleanup, "dup3(O_CLOEXEC) failed"); - } - coe = fcntl(fd, F_GETFD); - if (coe == -1) { - tst_brkm(TBROK | TERRNO, cleanup, "fcntl failed"); - } - if ((coe & FD_CLOEXEC) == 0) { - tst_brkm(TFAIL, cleanup, - "dup3(O_CLOEXEC) set close-on-exec flag"); - } - close(fd); - tst_resm(TPASS, "dup3(O_CLOEXEC) PASSED"); + SAFE_CLOSE(fd); +}; - cleanup(); - tst_exit(); -} +static struct tst_test test = { + .setup = setup, + .tcnt = ARRAY_SIZE(tcases), + .needs_tmpdir = 1, + .test = run, +}; -- 2.31.1 [-- Attachment #2: Type: text/plain, Size: 60 bytes --] -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [LTP] [PATCH 1/2] syscalls/dup3_01: Rewrite and convert to new API @ 2021-09-17 5:52 ` xuyang2018.jy 0 siblings, 0 replies; 10+ messages in thread From: xuyang2018.jy @ 2021-09-17 5:52 UTC (permalink / raw) To: ltp Hi Qi > From: QI Fuli<qi.fuli@fujitsu.com> > > - divide into two testcases > - convert to new API > > Signed-off-by: QI Fuli<qi.fuli@fujitsu.com> > --- > testcases/kernel/syscalls/dup3/dup3_01.c | 157 ++++++++--------------- > 1 file changed, 50 insertions(+), 107 deletions(-) > > diff --git a/testcases/kernel/syscalls/dup3/dup3_01.c b/testcases/kernel/syscalls/dup3/dup3_01.c > index 6a44ec809..9a233f51b 100644 > --- a/testcases/kernel/syscalls/dup3/dup3_01.c > +++ b/testcases/kernel/syscalls/dup3/dup3_01.c > @@ -1,120 +1,63 @@ > -/******************************************************************************/ > -/* */ > -/* Copyright (c) Ulrich Drepper<drepper@redhat.com> */ > -/* Copyright (c) International Business Machines Corp., 2009 */ > -/* */ > -/* This program is free software; you can redistribute it and/or modify */ > -/* it under the terms of the GNU General Public License as published by */ > -/* the Free Software Foundation; either version 2 of the License, or */ > -/* (at your option) any later version. */ > -/* */ > -/* This program is distributed in the hope that it will be useful, */ > -/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ > -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ > -/* the GNU General Public License for more details. */ > -/* */ > -/* You should have received a copy of the GNU General Public License */ > -/* along with this program; if not, write to the Free Software */ > -/* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ > -/* */ > -/******************************************************************************/ > -/******************************************************************************/ > -/* */ > -/* File: dup3_01.c */ > -/* */ > -/* Description: This Program tests the new system call introduced in 2.6.27. */ > -/* Ulrich?s comment as in: */ > -/* http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=336dd1f70ff62d7dd8655228caed4c5bfc818c56 */ > -/* says: */ > -/* This patch adds the new dup3 syscall. It extends the old dup2 syscall by */ > -/* one parameter which is meant to hold a flag value. Support for the */ > -/* O_CLOEXEC flag is added in this patch. The following test must be adjusted */ > -/* for architectures other than x86 and x86-64 and in case the */ > -/* syscall numbers changed. */ > -/* */ > -/* Usage:<for command-line> */ > -/* dup3_01 [-c n] [-e][-i n] [-I x] [-p x] [-t] */ > -/* where, -c n : Run n copies concurrently. */ > -/* -e : Turn on errno logging. */ > -/* -i n : Execute test n times. */ > -/* -I x : Execute test for x seconds. */ > -/* -P x : Pause for x seconds between iterations. */ > -/* -t : Turn on syscall timing. */ > -/* */ > -/* Total Tests: 1 */ > -/* */ > -/* Test Name: dup3_01 */ > -/* */ > -/* Author: Ulrich Drepper<drepper@redhat.com> */ > -/* */ > -/* History: Created - Jan 13 2009 - Ulrich Drepper<drepper@redhat.com> */ > -/* Ported to LTP */ > -/* - Jan 13 2009 - Subrata<subrata@linux.vnet.ibm.com> */ > -/******************************************************************************/ > -#include<fcntl.h> > +// SPDX-License-Identifier: GPL-2.0-or-later > +/* > + * Copyright (c) Ulrich Drepper<drepper@redhat.com> > + * Copyright (c) International Business Machines Corp., 2009 > + * Created - Jan 13 2009 - Ulrich Drepper<drepper@redhat.com> > + * Ported to LTP - Jan 13 2009 - Subrata<subrata@linux.vnet.ibm.com> > + */ > + > +/*\ > + * [Description] > + * Testcase to check whether dup3() supports O_CLOEXEC flag. > + */ > + > #include<stdio.h> > -#include<time.h> > -#include<unistd.h> > -#include<sys/syscall.h> > +#include<stdbool.h> > #include<errno.h> > > -#include "test.h" > -#include "lapi/fcntl.h" > +#include "tst_test.h" > #include "lapi/syscalls.h" > - > -char *TCID = "dup3_01"; > -int TST_TOTAL = 1; > - > -void cleanup(void) > +#include "tst_safe_macros.h" > + > +static struct tcase { > + int oflag; > + bool tflag; This variable(tflag)looks confusing. Can we use a meaningful name? > + char *desc; > +} tcases [] = { > + {0, true, "dup3(0)"}, > + {O_CLOEXEC, false, "dup3(O_CLOEXEC)"}, I prefer to use dup3(1,4,0) and dup3(1,4,O_CLOEXEC) because it is more clear. > +}; > + > +static void setup(void) > { > - tst_rmdir(); > -} > - > -void setup(void) > -{ > - TEST_PAUSE; > - tst_tmpdir(); > -} > + if ((tst_kvercmp(2, 6, 27))< 0) > + tst_brk(TCONF, > + "This test can only run on kernels 2.6.27 and higher"); Lastest upstream kernel has reached to 5.15-rc1 and we don't need to check this very old kernel version. So we can remove this check. ps: user who use old distros can use old ltp release to test. I don't want to keep it. > +}; > > -int main(int argc, char *argv[]) > +static void run(unsigned int i) > { > int fd, coe; coe represent what? ret looks better. > + struct tcase *tc = tcases + i; > > - tst_parse_opts(argc, argv, NULL, NULL); > + TEST(tst_syscall(__NR_dup3, 1, 4, tc->oflag)); I think this case was introduced by long time ago and glibc doesn't support it so case uses syscall directly. Now, I think using glicb wrapper is enough. > > - if ((tst_kvercmp(2, 6, 27))< 0) > - tst_brkm(TCONF, NULL, > - "This test can only run on kernels that are 2.6.27 and higher"); > - setup(); > + fd = TST_RET; > + if (TST_RET == -1) > + tst_brk(TFAIL | TTERRNO, "%s failed", tc->desc); We don't need to break and should run the second case. Please use tst_res and return. > > - fd = ltp_syscall(__NR_dup3, 1, 4, 0); > - if (fd == -1) { > - tst_brkm(TFAIL | TERRNO, cleanup, "dup3(0) failed"); > - } > - coe = fcntl(fd, F_GETFD); > - if (coe == -1) { > - tst_brkm(TBROK | TERRNO, cleanup, "fcntl failed"); > - } > - if (coe& FD_CLOEXEC) { > - tst_brkm(TFAIL, cleanup, "dup3(0) set close-on-exec flag"); > - } > - close(fd); > + coe = SAFE_FCNTL(fd, F_GETFD); > + if ((coe& FD_CLOEXEC) == tc->tflag) > + tst_brk(TFAIL, "%s set close-on-exec flag", tc->desc); Use tst_res. > + else > + tst_res(TPASS, "%s PASSED", tc->desc); > > - fd = ltp_syscall(__NR_dup3, 1, 4, O_CLOEXEC); > - if (fd == -1) { > - tst_brkm(TFAIL | TERRNO, cleanup, "dup3(O_CLOEXEC) failed"); > - } > - coe = fcntl(fd, F_GETFD); > - if (coe == -1) { > - tst_brkm(TBROK | TERRNO, cleanup, "fcntl failed"); > - } > - if ((coe& FD_CLOEXEC) == 0) { > - tst_brkm(TFAIL, cleanup, > - "dup3(O_CLOEXEC) set close-on-exec flag"); > - } > - close(fd); > - tst_resm(TPASS, "dup3(O_CLOEXEC) PASSED"); > + SAFE_CLOSE(fd); > +}; > > - cleanup(); > - tst_exit(); > -} > +static struct tst_test test = { > + .setup = setup, > + .tcnt = ARRAY_SIZE(tcases), > + .needs_tmpdir = 1, Remove. Best Regards Yang Xu > + .test = run, > +}; > > > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [LTP] [PATCH 1/2] syscalls/dup3_01: Rewrite and convert to new API @ 2021-09-17 5:52 ` xuyang2018.jy 0 siblings, 0 replies; 10+ messages in thread From: xuyang2018.jy @ 2021-09-17 5:52 UTC (permalink / raw) To: QI Fuli; +Cc: qi.fuli@fujitsu.com, ltp@lists.linux.it Hi Qi > From: QI Fuli<qi.fuli@fujitsu.com> > > - divide into two testcases > - convert to new API > > Signed-off-by: QI Fuli<qi.fuli@fujitsu.com> > --- > testcases/kernel/syscalls/dup3/dup3_01.c | 157 ++++++++--------------- > 1 file changed, 50 insertions(+), 107 deletions(-) > > diff --git a/testcases/kernel/syscalls/dup3/dup3_01.c b/testcases/kernel/syscalls/dup3/dup3_01.c > index 6a44ec809..9a233f51b 100644 > --- a/testcases/kernel/syscalls/dup3/dup3_01.c > +++ b/testcases/kernel/syscalls/dup3/dup3_01.c > @@ -1,120 +1,63 @@ > -/******************************************************************************/ > -/* */ > -/* Copyright (c) Ulrich Drepper<drepper@redhat.com> */ > -/* Copyright (c) International Business Machines Corp., 2009 */ > -/* */ > -/* This program is free software; you can redistribute it and/or modify */ > -/* it under the terms of the GNU General Public License as published by */ > -/* the Free Software Foundation; either version 2 of the License, or */ > -/* (at your option) any later version. */ > -/* */ > -/* This program is distributed in the hope that it will be useful, */ > -/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ > -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ > -/* the GNU General Public License for more details. */ > -/* */ > -/* You should have received a copy of the GNU General Public License */ > -/* along with this program; if not, write to the Free Software */ > -/* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ > -/* */ > -/******************************************************************************/ > -/******************************************************************************/ > -/* */ > -/* File: dup3_01.c */ > -/* */ > -/* Description: This Program tests the new system call introduced in 2.6.27. */ > -/* Ulrich´s comment as in: */ > -/* http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=336dd1f70ff62d7dd8655228caed4c5bfc818c56 */ > -/* says: */ > -/* This patch adds the new dup3 syscall. It extends the old dup2 syscall by */ > -/* one parameter which is meant to hold a flag value. Support for the */ > -/* O_CLOEXEC flag is added in this patch. The following test must be adjusted */ > -/* for architectures other than x86 and x86-64 and in case the */ > -/* syscall numbers changed. */ > -/* */ > -/* Usage:<for command-line> */ > -/* dup3_01 [-c n] [-e][-i n] [-I x] [-p x] [-t] */ > -/* where, -c n : Run n copies concurrently. */ > -/* -e : Turn on errno logging. */ > -/* -i n : Execute test n times. */ > -/* -I x : Execute test for x seconds. */ > -/* -P x : Pause for x seconds between iterations. */ > -/* -t : Turn on syscall timing. */ > -/* */ > -/* Total Tests: 1 */ > -/* */ > -/* Test Name: dup3_01 */ > -/* */ > -/* Author: Ulrich Drepper<drepper@redhat.com> */ > -/* */ > -/* History: Created - Jan 13 2009 - Ulrich Drepper<drepper@redhat.com> */ > -/* Ported to LTP */ > -/* - Jan 13 2009 - Subrata<subrata@linux.vnet.ibm.com> */ > -/******************************************************************************/ > -#include<fcntl.h> > +// SPDX-License-Identifier: GPL-2.0-or-later > +/* > + * Copyright (c) Ulrich Drepper<drepper@redhat.com> > + * Copyright (c) International Business Machines Corp., 2009 > + * Created - Jan 13 2009 - Ulrich Drepper<drepper@redhat.com> > + * Ported to LTP - Jan 13 2009 - Subrata<subrata@linux.vnet.ibm.com> > + */ > + > +/*\ > + * [Description] > + * Testcase to check whether dup3() supports O_CLOEXEC flag. > + */ > + > #include<stdio.h> > -#include<time.h> > -#include<unistd.h> > -#include<sys/syscall.h> > +#include<stdbool.h> > #include<errno.h> > > -#include "test.h" > -#include "lapi/fcntl.h" > +#include "tst_test.h" > #include "lapi/syscalls.h" > - > -char *TCID = "dup3_01"; > -int TST_TOTAL = 1; > - > -void cleanup(void) > +#include "tst_safe_macros.h" > + > +static struct tcase { > + int oflag; > + bool tflag; This variable(tflag)looks confusing. Can we use a meaningful name? > + char *desc; > +} tcases [] = { > + {0, true, "dup3(0)"}, > + {O_CLOEXEC, false, "dup3(O_CLOEXEC)"}, I prefer to use dup3(1,4,0) and dup3(1,4,O_CLOEXEC) because it is more clear. > +}; > + > +static void setup(void) > { > - tst_rmdir(); > -} > - > -void setup(void) > -{ > - TEST_PAUSE; > - tst_tmpdir(); > -} > + if ((tst_kvercmp(2, 6, 27))< 0) > + tst_brk(TCONF, > + "This test can only run on kernels 2.6.27 and higher"); Lastest upstream kernel has reached to 5.15-rc1 and we don't need to check this very old kernel version. So we can remove this check. ps: user who use old distros can use old ltp release to test. I don't want to keep it. > +}; > > -int main(int argc, char *argv[]) > +static void run(unsigned int i) > { > int fd, coe; coe represent what? ret looks better. > + struct tcase *tc = tcases + i; > > - tst_parse_opts(argc, argv, NULL, NULL); > + TEST(tst_syscall(__NR_dup3, 1, 4, tc->oflag)); I think this case was introduced by long time ago and glibc doesn't support it so case uses syscall directly. Now, I think using glicb wrapper is enough. > > - if ((tst_kvercmp(2, 6, 27))< 0) > - tst_brkm(TCONF, NULL, > - "This test can only run on kernels that are 2.6.27 and higher"); > - setup(); > + fd = TST_RET; > + if (TST_RET == -1) > + tst_brk(TFAIL | TTERRNO, "%s failed", tc->desc); We don't need to break and should run the second case. Please use tst_res and return. > > - fd = ltp_syscall(__NR_dup3, 1, 4, 0); > - if (fd == -1) { > - tst_brkm(TFAIL | TERRNO, cleanup, "dup3(0) failed"); > - } > - coe = fcntl(fd, F_GETFD); > - if (coe == -1) { > - tst_brkm(TBROK | TERRNO, cleanup, "fcntl failed"); > - } > - if (coe& FD_CLOEXEC) { > - tst_brkm(TFAIL, cleanup, "dup3(0) set close-on-exec flag"); > - } > - close(fd); > + coe = SAFE_FCNTL(fd, F_GETFD); > + if ((coe& FD_CLOEXEC) == tc->tflag) > + tst_brk(TFAIL, "%s set close-on-exec flag", tc->desc); Use tst_res. > + else > + tst_res(TPASS, "%s PASSED", tc->desc); > > - fd = ltp_syscall(__NR_dup3, 1, 4, O_CLOEXEC); > - if (fd == -1) { > - tst_brkm(TFAIL | TERRNO, cleanup, "dup3(O_CLOEXEC) failed"); > - } > - coe = fcntl(fd, F_GETFD); > - if (coe == -1) { > - tst_brkm(TBROK | TERRNO, cleanup, "fcntl failed"); > - } > - if ((coe& FD_CLOEXEC) == 0) { > - tst_brkm(TFAIL, cleanup, > - "dup3(O_CLOEXEC) set close-on-exec flag"); > - } > - close(fd); > - tst_resm(TPASS, "dup3(O_CLOEXEC) PASSED"); > + SAFE_CLOSE(fd); > +}; > > - cleanup(); > - tst_exit(); > -} > +static struct tst_test test = { > + .setup = setup, > + .tcnt = ARRAY_SIZE(tcases), > + .needs_tmpdir = 1, Remove. Best Regards Yang Xu > + .test = run, > +}; > > > > -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH 2/2] syscalls/dup3_02: Convert to new API @ 2021-09-16 14:46 ` QI Fuli 0 siblings, 0 replies; 10+ messages in thread From: QI Fuli @ 2021-09-16 14:46 UTC (permalink / raw) To: ltp From: QI Fuli <qi.fuli@fujitsu.com> Signed-off-by: QI Fuli <qi.fuli@fujitsu.com> --- testcases/kernel/syscalls/dup3/dup3_02.c | 111 +++++------------------ 1 file changed, 25 insertions(+), 86 deletions(-) diff --git a/testcases/kernel/syscalls/dup3/dup3_02.c b/testcases/kernel/syscalls/dup3/dup3_02.c index e49ec3575..76c4e6e35 100644 --- a/testcases/kernel/syscalls/dup3/dup3_02.c +++ b/testcases/kernel/syscalls/dup3/dup3_02.c @@ -1,118 +1,57 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * Copyright (c) 2013 Fujitsu Ltd. * Author: Xiaoguang Wang <wangxg.fnst@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. */ -/* - * Description: +/*\ + * [Description] * Verify that, * 1. dup3() fails with -1 return value and sets errno to EINVAL * if flags contain an invalid value or oldfd was equal to newfd. */ -#define _GNU_SOURCE - -#include <stdio.h> #include <errno.h> -#include <unistd.h> -#include <fcntl.h> -#include <string.h> -#include <signal.h> -#include <sys/types.h> - -#include "test.h" -#include "safe_macros.h" -#include "lapi/fcntl.h" +#include "tst_test.h" +#include "tst_safe_macros.h" #include "lapi/syscalls.h" - -static void setup(void); -static void cleanup(void); - -#define INVALID_FLAG -1 - static int old_fd; -static int new_fd; +static int new_fd = -1; -static struct test_case_t { +static struct tcase { int *oldfd; int *newfd; int flags; - int exp_errno; -} test_cases[] = { - {&old_fd, &old_fd, O_CLOEXEC, EINVAL}, - {&old_fd, &old_fd, 0, EINVAL}, - {&old_fd, &new_fd, INVALID_FLAG, EINVAL} +} tcases[] = { + {&old_fd, &old_fd, O_CLOEXEC}, + {&old_fd, &old_fd, 0}, + {&old_fd, &new_fd, -1} }; -char *TCID = "dup3_02"; -int TST_TOTAL = ARRAY_SIZE(test_cases); - -int main(int ac, char **av) +static void run(unsigned int i) { - int lc; - int i; - - tst_parse_opts(ac, av, NULL, NULL); - - setup(); - - for (lc = 0; TEST_LOOPING(lc); lc++) { - tst_count = 0; + struct tcase *tc = tcases + i; - for (i = 0; i < TST_TOTAL; i++) { - TEST(ltp_syscall(__NR_dup3, *(test_cases[i].oldfd), - *(test_cases[i].newfd), test_cases[i].flags)); - - if (TEST_RETURN != -1) { - tst_resm(TFAIL, "dup3 succeeded unexpectedly"); - continue; - } - - if (TEST_ERRNO == test_cases[i].exp_errno) { - tst_resm(TPASS | TTERRNO, - "dup3 failed as expected"); - } else { - tst_resm(TFAIL | TTERRNO, - "dup3 failed unexpectedly; expected:" - "%d - %s", test_cases[i].exp_errno, - strerror(test_cases[i].exp_errno)); - } - } - } - - cleanup(); - tst_exit(); + TST_EXP_FAIL2(tst_syscall(__NR_dup3, *tc->oldfd, *tc->newfd, tc->flags), + EINVAL, "syscall(__NR_dup3, %d, %d, %d)", + *tc->oldfd, *tc->newfd, tc->flags); } static void setup(void) { - tst_sig(NOFORK, DEF_HANDLER, cleanup); - - tst_tmpdir(); - - TEST_PAUSE; - - old_fd = SAFE_CREAT(cleanup, "testeinval.file", 0644); - new_fd = -1; + old_fd = SAFE_CREAT("testeinval.file", 0644); } static void cleanup(void) { if (old_fd > 0) - SAFE_CLOSE(NULL, old_fd); - - tst_rmdir(); + SAFE_CLOSE(old_fd); } + +static struct tst_test test = { + .tcnt = ARRAY_SIZE(tcases), + .test = run, + .setup = setup, + .cleanup = cleanup, +}; -- 2.31.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [LTP] [PATCH 2/2] syscalls/dup3_02: Convert to new API @ 2021-09-16 14:46 ` QI Fuli 0 siblings, 0 replies; 10+ messages in thread From: QI Fuli @ 2021-09-16 14:46 UTC (permalink / raw) To: ltp; +Cc: QI Fuli From: QI Fuli <qi.fuli@fujitsu.com> Signed-off-by: QI Fuli <qi.fuli@fujitsu.com> --- testcases/kernel/syscalls/dup3/dup3_02.c | 111 +++++------------------ 1 file changed, 25 insertions(+), 86 deletions(-) diff --git a/testcases/kernel/syscalls/dup3/dup3_02.c b/testcases/kernel/syscalls/dup3/dup3_02.c index e49ec3575..76c4e6e35 100644 --- a/testcases/kernel/syscalls/dup3/dup3_02.c +++ b/testcases/kernel/syscalls/dup3/dup3_02.c @@ -1,118 +1,57 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * Copyright (c) 2013 Fujitsu Ltd. * Author: Xiaoguang Wang <wangxg.fnst@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. */ -/* - * Description: +/*\ + * [Description] * Verify that, * 1. dup3() fails with -1 return value and sets errno to EINVAL * if flags contain an invalid value or oldfd was equal to newfd. */ -#define _GNU_SOURCE - -#include <stdio.h> #include <errno.h> -#include <unistd.h> -#include <fcntl.h> -#include <string.h> -#include <signal.h> -#include <sys/types.h> - -#include "test.h" -#include "safe_macros.h" -#include "lapi/fcntl.h" +#include "tst_test.h" +#include "tst_safe_macros.h" #include "lapi/syscalls.h" - -static void setup(void); -static void cleanup(void); - -#define INVALID_FLAG -1 - static int old_fd; -static int new_fd; +static int new_fd = -1; -static struct test_case_t { +static struct tcase { int *oldfd; int *newfd; int flags; - int exp_errno; -} test_cases[] = { - {&old_fd, &old_fd, O_CLOEXEC, EINVAL}, - {&old_fd, &old_fd, 0, EINVAL}, - {&old_fd, &new_fd, INVALID_FLAG, EINVAL} +} tcases[] = { + {&old_fd, &old_fd, O_CLOEXEC}, + {&old_fd, &old_fd, 0}, + {&old_fd, &new_fd, -1} }; -char *TCID = "dup3_02"; -int TST_TOTAL = ARRAY_SIZE(test_cases); - -int main(int ac, char **av) +static void run(unsigned int i) { - int lc; - int i; - - tst_parse_opts(ac, av, NULL, NULL); - - setup(); - - for (lc = 0; TEST_LOOPING(lc); lc++) { - tst_count = 0; + struct tcase *tc = tcases + i; - for (i = 0; i < TST_TOTAL; i++) { - TEST(ltp_syscall(__NR_dup3, *(test_cases[i].oldfd), - *(test_cases[i].newfd), test_cases[i].flags)); - - if (TEST_RETURN != -1) { - tst_resm(TFAIL, "dup3 succeeded unexpectedly"); - continue; - } - - if (TEST_ERRNO == test_cases[i].exp_errno) { - tst_resm(TPASS | TTERRNO, - "dup3 failed as expected"); - } else { - tst_resm(TFAIL | TTERRNO, - "dup3 failed unexpectedly; expected:" - "%d - %s", test_cases[i].exp_errno, - strerror(test_cases[i].exp_errno)); - } - } - } - - cleanup(); - tst_exit(); + TST_EXP_FAIL2(tst_syscall(__NR_dup3, *tc->oldfd, *tc->newfd, tc->flags), + EINVAL, "syscall(__NR_dup3, %d, %d, %d)", + *tc->oldfd, *tc->newfd, tc->flags); } static void setup(void) { - tst_sig(NOFORK, DEF_HANDLER, cleanup); - - tst_tmpdir(); - - TEST_PAUSE; - - old_fd = SAFE_CREAT(cleanup, "testeinval.file", 0644); - new_fd = -1; + old_fd = SAFE_CREAT("testeinval.file", 0644); } static void cleanup(void) { if (old_fd > 0) - SAFE_CLOSE(NULL, old_fd); - - tst_rmdir(); + SAFE_CLOSE(old_fd); } + +static struct tst_test test = { + .tcnt = ARRAY_SIZE(tcases), + .test = run, + .setup = setup, + .cleanup = cleanup, +}; -- 2.31.1 -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [LTP] [PATCH 2/2] syscalls/dup3_02: Convert to new API @ 2021-09-17 6:09 ` xuyang2018.jy 0 siblings, 0 replies; 10+ messages in thread From: xuyang2018.jy @ 2021-09-17 6:09 UTC (permalink / raw) To: ltp Hi Qi > From: QI Fuli<qi.fuli@fujitsu.com> > > Signed-off-by: QI Fuli<qi.fuli@fujitsu.com> > --- > testcases/kernel/syscalls/dup3/dup3_02.c | 111 +++++------------------ > 1 file changed, 25 insertions(+), 86 deletions(-) > > diff --git a/testcases/kernel/syscalls/dup3/dup3_02.c b/testcases/kernel/syscalls/dup3/dup3_02.c > index e49ec3575..76c4e6e35 100644 > --- a/testcases/kernel/syscalls/dup3/dup3_02.c > +++ b/testcases/kernel/syscalls/dup3/dup3_02.c > @@ -1,118 +1,57 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later > /* > * Copyright (c) 2013 Fujitsu Ltd. > * Author: Xiaoguang Wang<wangxg.fnst@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. > */ > > -/* > - * Description: > +/*\ > + * [Description] > * Verify that, > * 1. dup3() fails with -1 return value and sets errno to EINVAL > * if flags contain an invalid value or oldfd was equal to newfd. > */ > Test for various EINVAL error. EINVAL - oldfd was equal to newfd and doesn't use O_CLOEXEC flag EINVAL - oldfd was equal to newfd and use O_CLOEXEC flag EINVAL - flags contain an invalid value. > -#define _GNU_SOURCE > - > -#include<stdio.h> > #include<errno.h> > -#include<unistd.h> > -#include<fcntl.h> > -#include<string.h> > -#include<signal.h> > -#include<sys/types.h> > - > -#include "test.h" > -#include "safe_macros.h" > -#include "lapi/fcntl.h" > +#include "tst_test.h" > +#include "tst_safe_macros.h" > #include "lapi/syscalls.h" > > - > -static void setup(void); > -static void cleanup(void); > - > -#define INVALID_FLAG -1 > - > static int old_fd; > -static int new_fd; > +static int new_fd = -1; > > -static struct test_case_t { > +static struct tcase { > int *oldfd; > int *newfd; > int flags; > - int exp_errno; > -} test_cases[] = { > - {&old_fd,&old_fd, O_CLOEXEC, EINVAL}, > - {&old_fd,&old_fd, 0, EINVAL}, > - {&old_fd,&new_fd, INVALID_FLAG, EINVAL} > +} tcases[] = { > + {&old_fd,&old_fd, O_CLOEXEC}, > + {&old_fd,&old_fd, 0}, > + {&old_fd,&new_fd, -1} > }; > > -char *TCID = "dup3_02"; > -int TST_TOTAL = ARRAY_SIZE(test_cases); > - > -int main(int ac, char **av) > +static void run(unsigned int i) > { > - int lc; > - int i; > - > - tst_parse_opts(ac, av, NULL, NULL); > - > - setup(); > - > - for (lc = 0; TEST_LOOPING(lc); lc++) { > - tst_count = 0; > + struct tcase *tc = tcases + i; > > - for (i = 0; i< TST_TOTAL; i++) { > - TEST(ltp_syscall(__NR_dup3, *(test_cases[i].oldfd), > - *(test_cases[i].newfd), test_cases[i].flags)); > - > - if (TEST_RETURN != -1) { > - tst_resm(TFAIL, "dup3 succeeded unexpectedly"); > - continue; > - } > - > - if (TEST_ERRNO == test_cases[i].exp_errno) { > - tst_resm(TPASS | TTERRNO, > - "dup3 failed as expected"); > - } else { > - tst_resm(TFAIL | TTERRNO, > - "dup3 failed unexpectedly; expected:" > - "%d - %s", test_cases[i].exp_errno, > - strerror(test_cases[i].exp_errno)); > - } > - } > - } > - > - cleanup(); > - tst_exit(); > + TST_EXP_FAIL2(tst_syscall(__NR_dup3, *tc->oldfd, *tc->newfd, tc->flags), > + EINVAL, "syscall(__NR_dup3, %d, %d, %d)", > + *tc->oldfd, *tc->newfd, tc->flags); glibc wrapper. > } > > static void setup(void) > { > - tst_sig(NOFORK, DEF_HANDLER, cleanup); > - > - tst_tmpdir(); > - > - TEST_PAUSE; > - > - old_fd = SAFE_CREAT(cleanup, "testeinval.file", 0644); > - new_fd = -1; > + old_fd = SAFE_CREAT("testeinval.file", 0644); > } > > static void cleanup(void) > { > if (old_fd> 0) > - SAFE_CLOSE(NULL, old_fd); > - > - tst_rmdir(); > + SAFE_CLOSE(old_fd); > } > + > +static struct tst_test test = { > + .tcnt = ARRAY_SIZE(tcases), > + .test = run, > + .setup = setup, > + .cleanup = cleanup, ".needs_tmpdir = 1" miss. Best Regards Yang Xu > +}; ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [LTP] [PATCH 2/2] syscalls/dup3_02: Convert to new API @ 2021-09-17 6:09 ` xuyang2018.jy 0 siblings, 0 replies; 10+ messages in thread From: xuyang2018.jy @ 2021-09-17 6:09 UTC (permalink / raw) To: QI Fuli; +Cc: qi.fuli@fujitsu.com, ltp@lists.linux.it Hi Qi > From: QI Fuli<qi.fuli@fujitsu.com> > > Signed-off-by: QI Fuli<qi.fuli@fujitsu.com> > --- > testcases/kernel/syscalls/dup3/dup3_02.c | 111 +++++------------------ > 1 file changed, 25 insertions(+), 86 deletions(-) > > diff --git a/testcases/kernel/syscalls/dup3/dup3_02.c b/testcases/kernel/syscalls/dup3/dup3_02.c > index e49ec3575..76c4e6e35 100644 > --- a/testcases/kernel/syscalls/dup3/dup3_02.c > +++ b/testcases/kernel/syscalls/dup3/dup3_02.c > @@ -1,118 +1,57 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later > /* > * Copyright (c) 2013 Fujitsu Ltd. > * Author: Xiaoguang Wang<wangxg.fnst@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. > */ > > -/* > - * Description: > +/*\ > + * [Description] > * Verify that, > * 1. dup3() fails with -1 return value and sets errno to EINVAL > * if flags contain an invalid value or oldfd was equal to newfd. > */ > Test for various EINVAL error. EINVAL - oldfd was equal to newfd and doesn't use O_CLOEXEC flag EINVAL - oldfd was equal to newfd and use O_CLOEXEC flag EINVAL - flags contain an invalid value. > -#define _GNU_SOURCE > - > -#include<stdio.h> > #include<errno.h> > -#include<unistd.h> > -#include<fcntl.h> > -#include<string.h> > -#include<signal.h> > -#include<sys/types.h> > - > -#include "test.h" > -#include "safe_macros.h" > -#include "lapi/fcntl.h" > +#include "tst_test.h" > +#include "tst_safe_macros.h" > #include "lapi/syscalls.h" > > - > -static void setup(void); > -static void cleanup(void); > - > -#define INVALID_FLAG -1 > - > static int old_fd; > -static int new_fd; > +static int new_fd = -1; > > -static struct test_case_t { > +static struct tcase { > int *oldfd; > int *newfd; > int flags; > - int exp_errno; > -} test_cases[] = { > - {&old_fd,&old_fd, O_CLOEXEC, EINVAL}, > - {&old_fd,&old_fd, 0, EINVAL}, > - {&old_fd,&new_fd, INVALID_FLAG, EINVAL} > +} tcases[] = { > + {&old_fd,&old_fd, O_CLOEXEC}, > + {&old_fd,&old_fd, 0}, > + {&old_fd,&new_fd, -1} > }; > > -char *TCID = "dup3_02"; > -int TST_TOTAL = ARRAY_SIZE(test_cases); > - > -int main(int ac, char **av) > +static void run(unsigned int i) > { > - int lc; > - int i; > - > - tst_parse_opts(ac, av, NULL, NULL); > - > - setup(); > - > - for (lc = 0; TEST_LOOPING(lc); lc++) { > - tst_count = 0; > + struct tcase *tc = tcases + i; > > - for (i = 0; i< TST_TOTAL; i++) { > - TEST(ltp_syscall(__NR_dup3, *(test_cases[i].oldfd), > - *(test_cases[i].newfd), test_cases[i].flags)); > - > - if (TEST_RETURN != -1) { > - tst_resm(TFAIL, "dup3 succeeded unexpectedly"); > - continue; > - } > - > - if (TEST_ERRNO == test_cases[i].exp_errno) { > - tst_resm(TPASS | TTERRNO, > - "dup3 failed as expected"); > - } else { > - tst_resm(TFAIL | TTERRNO, > - "dup3 failed unexpectedly; expected:" > - "%d - %s", test_cases[i].exp_errno, > - strerror(test_cases[i].exp_errno)); > - } > - } > - } > - > - cleanup(); > - tst_exit(); > + TST_EXP_FAIL2(tst_syscall(__NR_dup3, *tc->oldfd, *tc->newfd, tc->flags), > + EINVAL, "syscall(__NR_dup3, %d, %d, %d)", > + *tc->oldfd, *tc->newfd, tc->flags); glibc wrapper. > } > > static void setup(void) > { > - tst_sig(NOFORK, DEF_HANDLER, cleanup); > - > - tst_tmpdir(); > - > - TEST_PAUSE; > - > - old_fd = SAFE_CREAT(cleanup, "testeinval.file", 0644); > - new_fd = -1; > + old_fd = SAFE_CREAT("testeinval.file", 0644); > } > > static void cleanup(void) > { > if (old_fd> 0) > - SAFE_CLOSE(NULL, old_fd); > - > - tst_rmdir(); > + SAFE_CLOSE(old_fd); > } > + > +static struct tst_test test = { > + .tcnt = ARRAY_SIZE(tcases), > + .test = run, > + .setup = setup, > + .cleanup = cleanup, ".needs_tmpdir = 1" miss. Best Regards Yang Xu > +}; -- Mailing list info: https://lists.linux.it/listinfo/ltp ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2021-09-17 6:09 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-09-16 14:46 [LTP] [PATCH 0/2] Convert syscalls/dup3/dup3_{01,02} to new API QI Fuli
2021-09-16 14:46 ` QI Fuli
2021-09-16 14:46 ` [LTP] [PATCH 1/2] syscalls/dup3_01: Rewrite and convert " QI Fuli
2021-09-16 14:46 ` QI Fuli
2021-09-17 5:52 ` xuyang2018.jy
2021-09-17 5:52 ` xuyang2018.jy
2021-09-16 14:46 ` [LTP] [PATCH 2/2] syscalls/dup3_02: Convert " QI Fuli
2021-09-16 14:46 ` QI Fuli
2021-09-17 6:09 ` xuyang2018.jy
2021-09-17 6:09 ` xuyang2018.jy
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.