[LTP] [COMMITTED] [PATCH 02/23] syscalls/mkdir09: Small cleanup
Cyril Hrubis
chrubis@suse.cz
Tue Feb 28 12:11:24 CET 2017
* Get rid of UCLINUX ifdefs
* Remove useless comments
* Make use of tst_parse_opts()
Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
---
testcases/kernel/syscalls/mkdir/mkdir09.c | 184 ++++++------------------------
1 file changed, 32 insertions(+), 152 deletions(-)
diff --git a/testcases/kernel/syscalls/mkdir/mkdir09.c b/testcases/kernel/syscalls/mkdir/mkdir09.c
index de1cb69..88034d2 100644
--- a/testcases/kernel/syscalls/mkdir/mkdir09.c
+++ b/testcases/kernel/syscalls/mkdir/mkdir09.c
@@ -21,11 +21,7 @@
/* 10/30/2002 Port to LTP dbarrera@us.ibm.com */
/*
- * NAME
- * mkdir.c - Stress test of mkdir call.
- *
- * CALLS
- * mkdir, rmdir
+ * Stress test of mkdir call.
*
* ALGORITHM
* Create multiple processes which create subdirectories in the
@@ -37,12 +33,10 @@
* -t = number of seconds to run test
* -d = number of directories created in test directory
*
- * RESTRICTIONS
- *
*/
-#include <stdio.h> /* needed by testhead.h */
-#include <sys/wait.h> /* needed by testhead.h */
+#include <stdio.h>
+#include <sys/wait.h>
#include <sys/types.h>
#include <sys/param.h>
#include <sys/stat.h>
@@ -62,16 +56,9 @@
#define MODE_RWX 07770
#define DIR_NAME "./X.%d"
-/* used by getopt */
-extern char *optarg;
-extern int optind, opterr;
-char *goodopts = "c:t:d:";
-int errflg;
-
char *TCID = "mkdir09";
int TST_TOTAL = 1;
-int child_groups, test_time, nfiles;
char testdir[MAXPATHLEN];
int parent_pid, sigchld, sigterm, jump;
void term(int sig);
@@ -88,88 +75,60 @@ int runtest(void);
void setup(void);
void cleanup(void);
-#ifdef UCLINUX
-static char *argv0;
-void dochild1_uclinux(void);
-void dochild2_uclinux(void);
-void dochild3_uclinux(void);
-static int group_uclinux;
-#endif
-
-/*--------------------------------------------------------------*/
-/*--------------------------------------------------------------*/
-/*--------------------------------------------------------------*/
+static int child_groups = 2;
+static int test_time = 5;
+static int nfiles = 5;
+
+static char *opt_child_groups;
+static char *opt_test_time;
+static char *opt_nfiles;
+
+static option_t options[] = {
+ {"c:", NULL, &opt_child_groups},
+ {"t:", NULL, &opt_test_time},
+ {"d:", NULL, &opt_nfiles},
+ {NULL, NULL, NULL}
+};
+
+static void usage(void)
+{
+ printf(" -c Child groups\n");
+ printf(" -t Test runtime\n");
+ printf(" -d Directories\n");
+}
+
int main(int argc, char *argv[])
{
- int c;
+ tst_parse_opts(argc, argv, options, usage);
-#ifdef UCLINUX
+ if (opt_child_groups)
+ child_groups = atoi(opt_child_groups);
- tst_parse_opts(argc, argv, NULL, NULL);
+ if (opt_test_time)
+ test_time = atoi(opt_test_time);
- argv0 = argv[0];
- maybe_run_child(&dochild1_uclinux, "nd", 1, &nfiles);
- maybe_run_child(&dochild2_uclinux, "n", 2);
- maybe_run_child(&dochild3_uclinux, "nd", 3, &group_uclinux);
-#endif
+ if (opt_nfiles)
+ nfiles = atoi(opt_nfiles);
setup();
- /* Set up to catch SIGTERM signal */
if (signal(SIGTERM, term) == SIG_ERR) {
tst_brkm(TFAIL, cleanup,
"Error setting up SIGTERM signal, ERRNO = %d", errno);
}
- /* Set up to catch SIGCHLD signal */
if (signal(SIGCHLD, chld) == SIG_ERR) {
tst_brkm(TFAIL, cleanup,
"Error setting up SIGCHLD signal, ERRNO = %d", errno);
}
- /* Default argument settings. */
-
- child_groups = 2;
- test_time = 5; /* 0 = run forever or till signal */
- nfiles = 5;
-
- /* Get command line options */
-
- while ((c = getopt(argc, argv, goodopts)) != EOF) {
- switch (c) {
- case 'c':
- child_groups = atoi(optarg);
- break;
- case 't':
- test_time = atoi(optarg);
- break;
- case 'd':
- nfiles = atoi(optarg);
- break;
- case '?':
- errflg++;
- break;
- default:
- break;
- }
- }
- if (errflg) {
- tst_resm(TINFO,
- "USAGE : mkdir09 -c #child_groups -t#test_time -d#directories");
- tst_resm(TINFO, "Bad argument count.");
-
- }
-
runtest();
cleanup();
tst_exit();
-
}
-/*--------------------------------------------------------------*/
-
int runtest(void)
{
int i, j;
@@ -316,34 +275,13 @@ int getchild(int group, int child, int children)
} else if (pid == 0) { /* child does this */
switch (children % NCHILD) {
case 0:
-#ifdef UCLINUX
- if (self_exec(argv0, "nd", 1, nfiles) < 0) {
- massmurder();
- tst_brkm(TBROK, cleanup, "\tself_exec failed");
- }
-#else
dochild1(); /* create existing directories */
-#endif
break; /* so lint won't complain */
case 1:
-#ifdef UCLINUX
- if (self_exec(argv0, "n", 2) < 0) {
- massmurder();
- tst_brkm(TBROK, cleanup, "\tself_exec failed");
- }
-#else
dochild2(); /* remove nonexistant directories */
-#endif
break;
case 2:
-#ifdef UCLINUX
- if (self_exec(argv0, "nd", 3, group) < 0) {
- massmurder();
- tst_brkm(TBROK, cleanup, "\tself_exec failed");
- }
-#else
dochild3(group); /* create/delete directories */
-#endif
break;
default:
tst_brkm(TFAIL, cleanup,
@@ -415,19 +353,6 @@ int dochild1(void)
exit(0);
}
-#ifdef UCLINUX
-void dochild1_uclinux(void)
-{
- /* Set up to catch SIGTERM signal */
- if (signal(SIGTERM, term) == SIG_ERR) {
- tst_brkm(TFAIL, cleanup,
- "Error setting up SIGTERM signal, ERRNO = %d", errno);
- }
-
- dochild1();
-}
-#endif
-
int dochild2(void)
{
/* Child routine which attempts to remove directories from the
@@ -462,19 +387,6 @@ int dochild2(void)
return 0;
}
-#ifdef UCLINUX
-void dochild2_uclinux(void)
-{
- /* Set up to catch SIGTERM signal */
- if (signal(SIGTERM, term) == SIG_ERR) {
- tst_brkm(TFAIL, cleanup,
- "Error setting up SIGTERM signal, ERRNO = %d", errno);
- }
-
- dochild2();
-}
-#endif
-
int dochild3(int group)
{
/* Child routine which creates and deletes directories in the
@@ -518,19 +430,6 @@ int dochild3(int group)
exit(0);
}
-#ifdef UCLINUX
-void dochild3_uclinux(void)
-{
- /* Set up to catch SIGTERM signal */
- if (signal(SIGTERM, term) == SIG_ERR) {
- tst_brkm(TFAIL, cleanup,
- "Error setting up SIGTERM signal, ERRNO = %d", errno);
- }
-
- dochild3(group_uclinux);
-}
-#endif
-
int massmurder(void)
{
register int j;
@@ -546,35 +445,16 @@ int massmurder(void)
return 0;
}
-/***************************************************************
- * * setup() - performs all ONE TIME setup for this test.
- * ***************************************************************/
void setup(void)
{
-
tst_sig(NOFORK, DEF_HANDLER, cleanup);
TEST_PAUSE;
- /* Create a temporary directory and make it current. */
tst_tmpdir();
-
}
-/***************************************************************
- * * cleanup() - performs all ONE TIME cleanup for this test at
- * * completion or premature exit.
- * ***************************************************************/
void cleanup(void)
{
-
- /*
- * * Remove the temporary directory.
- * */
tst_rmdir();
-
- /*
- * * Exit with return code appropriate for results.
- * */
-
}
--
2.10.2
More information about the ltp
mailing list