static bool parse_args()

in benchmarks/cyclictest/cyclictest.c [217:391]


static bool parse_args(int argc, char * const argv[])
{
  int longindex;
  int opt;
  long decimal;
  while ((opt = getopt_long(argc, argv, "c:d:D:h:Hi:l:m:n:p:qt:T:",
                  optargs, &longindex)) != -1)
    {
      switch (opt)
        {
          case 'c':
            decimal = arg_decimal(optarg);
            if (decimal < 0)
              {
                return false;
              }
            else if (decimal == CLOCK_MONOTONIC || decimal == CLOCK_REALTIME)
              {
                config.clock = decimal;
              }
            break;
          case 'd':
            decimal = arg_decimal(optarg);
            if (decimal >= 0)
              {
                config.distance = decimal;
              }
            else
              {
                return false;
              }
            break;
          case 'D':
            decimal = arg_decimal(optarg);
            if (decimal >= 0)
              {
                config.duration = decimal;
              }
            else
              {
                return false;
              }
            break;
          case 'e':
            return true;
          case 'h':
            decimal = arg_decimal(optarg);
            if (decimal >= 0)
              {
                config.histogram = decimal;
              }
            else
              {
                return false;
              }
            break;
          case 'H':
            config.histofall = true;
            break;
          case 'i':
            decimal = arg_decimal(optarg);
            if (decimal >= 0)
              {
                config.interval = decimal;
              }
            else
              {
                return false;
              }
            break;
          case 'l':
            decimal = arg_decimal(optarg);
            if (decimal >= 0)
              {
                config.loops = decimal;
              }
            else
              {
                return false;
              }
            break;
          case 'm':
            decimal = arg_decimal(optarg);
            if (decimal >= 0)
              {
                config.meas_method = decimal;
              }
            else
              {
                return false;
              }
            break;
          case 'n':
            decimal = arg_decimal(optarg);
            if (decimal >= 0)
              {
                config.wait_method = decimal;
              }
            else
              {
                return false;
              }
            break;
          case 'p':
            decimal = arg_decimal(optarg);
            if (decimal >= 0 && decimal <= 255)
              {
                config.prio = decimal;
              }
            else
              {
                return false;
              }
            break;
          case 'q':
            config.quiet = true;
            break;
          case 't':
            decimal = arg_decimal(optarg);
            if (decimal > 0)
              {
                config.threads = decimal;
              }
            else
              {
                return false;
              }
            break;
          case 'T':
            config.timer_dev = optarg;
            break;
          case 'y':
            if (strcmp(optarg, "other") == 0)
              {
                config.policy = SCHED_OTHER;
              }
            else if (strcmp(optarg, "normal") == 0)
              {
                config.policy = SCHED_NORMAL;
              }
            else if (strcmp(optarg, "batch") == 0)
              {
                config.policy = SCHED_BATCH;
              }
            else if (strcmp(optarg, "idle") == 0)
              {
                config.policy = SCHED_IDLE;
              }
            else if (strcmp(optarg, "fifo") == 0)
              {
                config.policy = SCHED_FIFO;
              }
            else if (strcmp(optarg, "rr") == 0)
              {
                config.policy = SCHED_RR;
              }
            else
              {
                return false;
              }
            break;
          case '?':
            return false;
          default:
            break;
        }
    }

  if (optind < argc)
    {
      return false;
    }

  return true;
}