>From 35bf35d4098284f26b641fb0cd0a9524b1d98627 Mon Sep 17 00:00:00 2001
From: Zeng Linggang <zenglg...@cn.fujitsu.com>
Date: Wed, 12 Nov 2014 13:59:52 +0800
Subject: [PATCH] stress_cd: Cleanup

* Delete some useless commtents.

* Add 'static' before functions and global variables.

* In 'read_data()' the second variable is local and it would not change after
  'read_data()' is over. Defined it as a pointer.

* Remove 'return' that follows 'pthread_exit()'.

* Add branch 'read() returndd 0' that indicates end of file.

* Merge 'syserror()' and 'error()'.

* Some cleanup.

Signed-off-by: Zeng Linggang <zenglg...@cn.fujitsu.com>
---
 testcases/kernel/io/stress_cd/stress_cd.c | 198 ++++++++----------------------
 1 file changed, 51 insertions(+), 147 deletions(-)

diff --git a/testcases/kernel/io/stress_cd/stress_cd.c 
b/testcases/kernel/io/stress_cd/stress_cd.c
index 0209a1f..ede1871 100644
--- a/testcases/kernel/io/stress_cd/stress_cd.c
+++ b/testcases/kernel/io/stress_cd/stress_cd.c
@@ -1,6 +1,7 @@
 /*
- *
  *   Copyright (c) International Business Machines  Corp., 2001
+ *    06/20/2001 Robbie Williamson (robb...@us.ibm.com)
+ *    11/08/2001 Manoj Iyer (ma...@austin.ibm.com)
  *
  *   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
@@ -13,37 +14,19 @@
  *   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
+ *   along with this program;  if not, write to the Free Software Foundation,
+ *   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 /*
- *  FILE        : stress_cd.c
- *  DESCRIPTION : creates multiple read threads on the cdrom device.
- *  HISTORY:
- *    06/20/2001 Robbie Williamson (robb...@us.ibm.com)
- *      -Ported
- *    11/08/2001 Manoj Iyer (ma...@austin.ibm.com)
- *      - Modified.
- *     - removed compiler warnings.
- *     - Added #include <sys/types.h>, #include <unistd.h> and
- *       #include <string.h>
- *     - print unsigned long correctly in printf() use "lx" instead of "x"
- *     - added missing parameter in usage message.
- *
-+--------------------------------------------------------------------+
-|                                                                    |
-| Usage:        cdtest [-n n] [-f file] [-m xx] [-d]                 |
-|                                                                    |
-|               where:                                               |
-|                 -n n     Number of threads to create               |
-|                 -f file  File or device to read from               |
-|                 -m xx    Number of MB to read from file            |
-|                 -b xx    Number of bytes to read from file         |
-|                 -d       Enable debugging messages                 |
-|                                                                    |
-|                                                                    |
-+-------------------------------------------------------------------*/
+ * Usage:      stress_cd [-n n] [-f file] [-m xx] [-d]
+ *             where:
+ *               -n n     Number of threads to create
+ *               -f file  File or device to read from
+ *               -m xx    Number of MB to read from file
+ *               -b xx    Number of bytes to read from file
+ *               -d       Enable debugging messages
+ */
 
 #include <pthread.h>
 #include <fcntl.h>
@@ -55,86 +38,57 @@
 #include <unistd.h>
 #include <string.h>
 
-/* Defines
- *
- * DEFAULT_NUM_THREADS: Default number of threads to create,
- * user can specifiy with [-n] command line option.
- *
- * USAGE: usage statement
- */
-#define DEFAULT_NUM_THREADS    10
-#define DEFAULT_NUM_BYTES      1024*1024*100   /* 100Mb */
-#define DEFAULT_FILE           "/dev/cdrom"
+#define DEFAULT_NUM_THREADS    10
+#define DEFAULT_NUM_BYTES      (1024*1024*100) /* 100Mb */
+#define DEFAULT_FILE           "/dev/cdrom"
 
-/*
- * Function prototypes
- *
- * sys_error (): System error message function
- * error (): Error message function
- * parse_args (): Parses command line arguments
- */
 static void sys_error(const char *, int);
-static void error(const char *, int);
 static void parse_args(int, char **);
-void *thread(int *);
-int read_data(int, unsigned long);
+static void *thread(int *);
+static int read_data(int, unsigned long *);
+
+static int num_threads = DEFAULT_NUM_THREADS;
+static int num_bytes = DEFAULT_NUM_BYTES;
+static char *file = DEFAULT_FILE;
+static unsigned long checksum;
+static int debug;
 
-/*
- * Global Variables
- */
-int num_threads = DEFAULT_NUM_THREADS;
-int num_bytes = DEFAULT_NUM_BYTES;
-char *file = DEFAULT_FILE;
-unsigned long checksum = 0;
-int debug = 0;
-
-/*-------------------------------------------------------------------+
-|                               main ()                              |
-| ================================================================== |
-|                                                                    |
-| Function:  Main program  (see prolog for more details)             |
-|                                                                    |
-+-------------------------------------------------------------------*/
 int main(int argc, char **argv)
 {
        pthread_attr_t attr;
-       pthread_t *array;
-       int *arg;
        int rc = 0, i;
 
        /* Parse command line arguments and print out program header */
        parse_args(argc, argv);
 
        /* Read data from CDROM & compute checksum */
-       read_data(0, checksum);
+       read_data(0, &checksum);
        if (debug)
-               printf("Thread [main] checksum: %-#12lx \n", checksum);
+               printf("Thread [main] checksum: %-#12lx\n", checksum);
 
        if (pthread_attr_init(&attr))
                sys_error("pthread_attr_init failed", __LINE__);
        if (pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE))
                sys_error("pthread_attr_setdetachstate failed", __LINE__);
 
-       /* Create num_thread threads... */
        printf("\tThread [main] Creating %d threads\n", num_threads);
 
-       array = malloc(sizeof(pthread_t) * num_threads);
-       arg = malloc(sizeof(int) * num_threads);
-       assert(array);
-       assert(arg);
+       pthread_t array[num_threads];
+       int arg[num_threads];
+
        for (i = 0; i < num_threads; i++) {
                if (debug)
                        printf("\tThread [main]: creating thread %d\n", i + 1);
                arg[i] = i + 1;
-               if (pthread_create
-                   ((pthread_t *) & array[i], &attr, (void *)thread,
-                    (void *)&arg[i])) {
-                       if (errno == EAGAIN)
+               if (pthread_create((pthread_t *)&array[i], &attr,
+                                  (void *)thread, (void *)&arg[i])) {
+                       if (errno == EAGAIN) {
                                fprintf(stderr,
-                                       "\tThread [main]: unable to create 
thread %d\n",
-                                       i);
-                       else
+                                       "\tThread [main]: unable to create "
+                                       "thread %d\n", i);
+                       } else {
                                sys_error("pthread_create failed", __LINE__);
+                       }
                }
                if (debug)
                        printf("\tThread [main]: created thread %d\n", i + 1);
@@ -145,7 +99,6 @@ int main(int argc, char **argv)
        for (i = 0; i < num_threads; i++) {
                void *exit_value;
                printf("\tThread [main]: waiting for thread: %d\n", i + 1);
-               /*if (pthread_join ((pthread_t*) array [i], (void **) 
&exit_value)) */
                if (pthread_join(array[i], &exit_value))
                        sys_error("pthread_join failed", __LINE__);
 
@@ -154,28 +107,17 @@ int main(int argc, char **argv)
                               (long)exit_value);
                rc += (long)exit_value;
        }
-       free(array);
-       free(arg);
 
-       /* One or more of the threads did not complete sucessfully! */
        if (rc != 0) {
                printf("test failed!\n");
                exit(-1);
        }
 
-       /* Program completed successfully... */
        printf("\tThread [main] All threads completed successfully...\n");
        exit(0);
 }
 
-/*-------------------------------------------------------------------+
-|                               thread ()                            |
-| ================================================================== |
-|                                                                    |
-| Function:  ...                                                     |
-|                                                                    |
-+-------------------------------------------------------------------*/
-void *thread(int *parm)
+static void *thread(int *parm)
 {
        int num = *parm;
        unsigned long cksum = 0;
@@ -183,7 +125,7 @@ void *thread(int *parm)
        if (debug)
                printf("\tThread [%d]: begin\n", num);
 
-       read_data(num, cksum);
+       read_data(num, &cksum);
        if (checksum != cksum) {
                fprintf(stderr, "\tThread [%d]: checksum mismatch!\n", num);
                pthread_exit((void *)-1);
@@ -193,17 +135,9 @@ void *thread(int *parm)
                printf("\tThread [%d]: done\n", num);
 
        pthread_exit(NULL);
-       return (NULL);
 }
 
-/*-------------------------------------------------------------------+
-|                           read_data ()                             |
-| ================================================================== |
-|                                                                    |
-| Function:  Reads data from the CDROM                               |
-|                                                                    |
-+-------------------------------------------------------------------*/
-int read_data(int num, unsigned long cksum)
+static int read_data(int num, unsigned long *cksum)
 {
        int fd;
        const int bufSize = 1024;
@@ -223,23 +157,25 @@ int read_data(int num, unsigned long cksum)
 
        lseek(fd, 1024 * 36, SEEK_SET);
        while (bytes_read < num_bytes) {
-               if ((n = read(fd, buffer, bufSize)) < 0)
+               n = read(fd, buffer, bufSize);
+               if (n < 0)
                        sys_error("read failed", __LINE__);
+               else if (n == 0)
+                       sys_error("End of file", __LINE__);
                bytes_read += n;
 
                for (p = buffer; p < buffer + n; p++)
-                       cksum += *p;
+                       *cksum += *p;
 
                if (debug)
-                       printf
-                           ("\tThread [%d] bytes read: %5d checksum: 
%-#12lx\n",
-                            num, bytes_read, cksum);
+                       printf("\tThread [%d] bytes read: %5d checksum: "
+                              "%-#12lx\n", num, bytes_read, *cksum);
        }
        free(buffer);
 
        if (debug)
                printf("\tThread [%d] bytes read: %5d checksum: %-#12lx\n",
-                      num, bytes_read, cksum);
+                      num, bytes_read, *cksum);
 
        if (close(fd) < 0)
                sys_error("close failed", __LINE__);
@@ -250,20 +186,6 @@ int read_data(int num, unsigned long cksum)
        return (0);
 }
 
-/*-------------------------------------------------------------------+
-|                             parse_args ()                          |
-| ================================================================== |
-|                                                                    |
-| Function:  Parse the command line arguments & initialize global    |
-|            variables.                                              |
-|                                                                    |
-| Updates:   (command line options)                                  |
-|                                                                    |
-|            [-n] num   number of threads to create                  |
-|                                                                    |
-|            [-d]       enable debugging messages                    |
-|                                                                    |
-+-------------------------------------------------------------------*/
 static void parse_args(int argc, char **argv)
 {
        int i;
@@ -297,6 +219,10 @@ static void parse_args(int argc, char **argv)
                errflag++;
                fprintf(stderr, "ERROR: num_bytes must be greater than 0");
        }
+       if (num_threads < 0) {
+               errflag++;
+               fprintf(stderr, "ERROR: num_threads must be greater than 0");
+       }
 
        if (errflag) {
                fprintf(stderr, "\nUsage: %s"
@@ -311,30 +237,8 @@ static void parse_args(int argc, char **argv)
        }
 }
 
-/*-------------------------------------------------------------------+
-|                             sys_error ()                           |
-| ================================================================== |
-|                                                                    |
-| Function:  Creates system error message and calls error ()         |
-|                                                                    |
-+-------------------------------------------------------------------*/
 static void sys_error(const char *msg, int line)
 {
-       char syserr_msg[256];
-
-       sprintf(syserr_msg, "%s: %s\n", msg, strerror(errno));
-       error(syserr_msg, line);
-}
-
-/*-------------------------------------------------------------------+
-|                               error ()                             |
-| ================================================================== |
-|                                                                    |
-| Function:  Prints out message and exits...                         |
-|                                                                    |
-+-------------------------------------------------------------------*/
-static void error(const char *msg, int line)
-{
-       fprintf(stderr, "ERROR [line: %s] \n", msg);
+       fprintf(stderr, "ERROR [%d: %s: %s]\n", line, msg, strerror(errno));
        exit(-1);
 }
-- 
1.9.3




------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to