home *** CD-ROM | disk | FTP | other *** search
/ ftp.parl.clemson.edu / 2015-02-07.ftp.parl.clemson.edu.tar / ftp.parl.clemson.edu / pub / pvfs2 / orangefs-2.8.3-20110323.tar.gz / orangefs-2.8.3-20110323.tar / orangefs / test / io / bmi / bench-args.c < prev    next >
C/C++ Source or Header  |  2006-06-25  |  2KB  |  127 lines

  1. /*
  2.  * (C) 2001 Clemson University and The University of Chicago
  3.  *
  4.  * See COPYING in top-level directory.
  5.  */
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <unistd.h>
  10. #include <errno.h>
  11. #include <math.h>
  12. #include <getopt.h>
  13. #include "gossip.h"
  14. #include <mpi.h>
  15. #include "bmi.h"
  16. #include "bench-args.h"
  17.  
  18. int bench_args(
  19.     struct bench_options *user_opts,
  20.     int argc,
  21.     char **argv)
  22. {
  23.     char flags[] = "L:pm:t:l:s:r";
  24.     int one_opt = ' ';
  25.     int got_method = 0;
  26.  
  27.     int ret = -1;
  28.  
  29.     /* fill in defaults */
  30.     user_opts->message_len = 128;
  31.     user_opts->total_len = user_opts->message_len * 8;
  32.     user_opts->flags = 0;
  33.     user_opts->method_name[0] = '\0';
  34.     user_opts->num_servers = 1;
  35.     user_opts->list_io_factor = 1;
  36.  
  37.     /* look at command line arguments */
  38.     while ((one_opt = getopt(argc, argv, flags)) != EOF)
  39.     {
  40.     switch (one_opt)
  41.     {
  42.     case ('s'):
  43.         ret = sscanf(optarg, "%d", &user_opts->num_servers);
  44.         if (ret < 1)
  45.         {
  46.         return -1;
  47.         }
  48.         break;
  49.     case ('l'):
  50.         ret = sscanf(optarg, "%d", &user_opts->message_len);
  51.         if (ret < 1)
  52.         {
  53.         return -1;
  54.         }
  55.         break;
  56.     case ('L'):
  57.         ret = sscanf(optarg, "%d", &user_opts->list_io_factor);
  58.         if (ret < 1)
  59.         {
  60.         return -1;
  61.         }
  62.         break;
  63.     case ('t'):
  64.         ret = sscanf(optarg, "%d", &user_opts->total_len);
  65.         if (ret < 1)
  66.         {
  67.         return -1;
  68.         }
  69.         break;
  70.     case ('m'):
  71.         got_method = 1;
  72.         ret = sscanf(optarg, "%s", user_opts->method_name);
  73.         if (ret < 1)
  74.         {
  75.         return -1;
  76.         }
  77.         break;
  78.     case ('p'):
  79.         user_opts->flags |= BMI_ALLOCATE_MEMORY;
  80.         break;
  81.     case ('r'):
  82.         user_opts->flags |= REUSE_BUFFERS;
  83.         break;
  84.     default:
  85.         break;
  86.     }
  87.     }
  88.  
  89.     if (!got_method)
  90.     {
  91.     printf("Must specify method!\n");
  92.     return (-1);
  93.     }
  94.  
  95.     return (0);
  96. }
  97.  
  98. void bench_args_dump(
  99.     struct bench_options *opts)
  100. {
  101.     printf("Options:\n");
  102.     if (opts->flags & REUSE_BUFFERS)
  103.     {
  104.     printf("Reuse buffers.\n");
  105.     }
  106.     if (opts->flags & BMI_ALLOCATE_MEMORY)
  107.     {
  108.     printf("BMI allocate memory.\n");
  109.     }
  110.     printf("message length: %d\n", opts->message_len);
  111.     printf("total length: %d\n", opts->total_len);
  112.     printf("number of servers: %d\n", opts->num_servers);
  113.     printf("method name: %s\n", opts->method_name);
  114.     printf("count of each list io message: %d\n", opts->list_io_factor);
  115.  
  116.     return;
  117. }
  118.  
  119. /*
  120.  * Local variables:
  121.  *  c-indent-level: 4
  122.  *  c-basic-offset: 4
  123.  * End:
  124.  *
  125.  * vim: ts=8 sts=4 sw=4 expandtab
  126.  */
  127.