diff options
| author | Bjoern Brandenburg <bbb@mpi-sws.org> | 2016-07-25 12:50:59 -0400 |
|---|---|---|
| committer | Bjoern Brandenburg <bbb@mpi-sws.org> | 2017-03-10 10:36:43 -0500 |
| commit | 7e2cfc39e4014d0465d52dfb7eaf0c2b20aba13b (patch) | |
| tree | 4addd1feaad13013ff6386a9d322afaa040f092b | |
| parent | 9a3de35bbd507cd58e9116a9f8e214a0ed5fce36 (diff) | |
rtspin: improve argument handling
| -rw-r--r-- | bin/rtspin.c | 43 |
1 files changed, 17 insertions, 26 deletions
diff --git a/bin/rtspin.c b/bin/rtspin.c index 924a2c9..f647ff9 100644 --- a/bin/rtspin.c +++ b/bin/rtspin.c | |||
| @@ -339,18 +339,18 @@ int main(int argc, char** argv) | |||
| 339 | wait = 1; | 339 | wait = 1; |
| 340 | break; | 340 | break; |
| 341 | case 'p': | 341 | case 'p': |
| 342 | cluster = atoi(optarg); | 342 | cluster = want_non_negative_int(optarg, "-p"); |
| 343 | migrate = 1; | 343 | migrate = 1; |
| 344 | break; | 344 | break; |
| 345 | case 'r': | 345 | case 'r': |
| 346 | reservation = atoi(optarg); | 346 | reservation = want_non_negative_int(optarg, "-r"); |
| 347 | break; | 347 | break; |
| 348 | case 'R': | 348 | case 'R': |
| 349 | create_reservation = 1; | 349 | create_reservation = 1; |
| 350 | reservation = getpid(); | 350 | reservation = getpid(); |
| 351 | break; | 351 | break; |
| 352 | case 'q': | 352 | case 'q': |
| 353 | priority = atoi(optarg); | 353 | priority = want_non_negative_int(optarg, "-q"); |
| 354 | if (!litmus_is_valid_fixed_prio(priority)) | 354 | if (!litmus_is_valid_fixed_prio(priority)) |
| 355 | usage("Invalid priority."); | 355 | usage("Invalid priority."); |
| 356 | break; | 356 | break; |
| @@ -369,7 +369,7 @@ int main(int argc, char** argv) | |||
| 369 | background_loop = 1; | 369 | background_loop = 1; |
| 370 | break; | 370 | break; |
| 371 | case 'C': | 371 | case 'C': |
| 372 | column = atoi(optarg); | 372 | column = want_non_negative_int(optarg, "-C"); |
| 373 | break; | 373 | break; |
| 374 | case 'F': | 374 | case 'F': |
| 375 | file = optarg; | 375 | file = optarg; |
| @@ -391,29 +391,23 @@ int main(int argc, char** argv) | |||
| 391 | linux_sleep = 1; | 391 | linux_sleep = 1; |
| 392 | break; | 392 | break; |
| 393 | case 'm': | 393 | case 'm': |
| 394 | nr_of_pages = atoi(optarg); | 394 | nr_of_pages = want_non_negative_int(optarg, "-m"); |
| 395 | break; | 395 | break; |
| 396 | case 's': | 396 | case 's': |
| 397 | scale = atof(optarg); | 397 | scale = want_non_negative_double(optarg, "-s"); |
| 398 | break; | 398 | break; |
| 399 | case 'o': | 399 | case 'o': |
| 400 | offset_ms = atof(optarg); | 400 | offset_ms = want_non_negative_double(optarg, "-o"); |
| 401 | break; | 401 | break; |
| 402 | case 'd': | 402 | case 'd': |
| 403 | deadline_ms = atof(optarg); | 403 | deadline_ms = want_non_negative_double(optarg, "-d"); |
| 404 | if (!deadline_ms || deadline_ms < 0) { | ||
| 405 | usage("The relative deadline must be a positive" | ||
| 406 | " number."); | ||
| 407 | } | ||
| 408 | break; | 404 | break; |
| 409 | case 'u': | 405 | case 'u': |
| 410 | underrun_ms = atof(optarg); | 406 | underrun_ms = want_positive_double(optarg, "-u"); |
| 411 | if (underrun_ms <= 0) | ||
| 412 | usage("-u: positive argument needed."); | ||
| 413 | break; | 407 | break; |
| 414 | case 'U': | 408 | case 'U': |
| 415 | underrun_frac = atof(optarg); | 409 | underrun_frac = want_positive_double(optarg, "-U"); |
| 416 | if (underrun_frac <= 0 || underrun_frac > 1) | 410 | if (underrun_frac > 1) |
| 417 | usage("-U: argument must be in the range (0, 1]"); | 411 | usage("-U: argument must be in the range (0, 1]"); |
| 418 | break; | 412 | break; |
| 419 | case 'X': | 413 | case 'X': |
| @@ -422,14 +416,11 @@ int main(int argc, char** argv) | |||
| 422 | usage("Unknown locking protocol specified."); | 416 | usage("Unknown locking protocol specified."); |
| 423 | break; | 417 | break; |
| 424 | case 'L': | 418 | case 'L': |
| 425 | cs_length = atof(optarg); | 419 | cs_length = want_positive_double(optarg, "-L"); |
| 426 | if (cs_length <= 0) | ||
| 427 | usage("Invalid critical section length."); | ||
| 428 | break; | 420 | break; |
| 429 | case 'Q': | 421 | case 'Q': |
| 430 | resource_id = atoi(optarg); | 422 | resource_id = want_non_negative_int(optarg, "-Q"); |
| 431 | if (resource_id <= 0 && strcmp(optarg, "0")) | 423 | |
| 432 | usage("Invalid resource ID."); | ||
| 433 | break; | 424 | break; |
| 434 | case 'v': | 425 | case 'v': |
| 435 | verbose = 1; | 426 | verbose = 1; |
| @@ -491,8 +482,8 @@ int main(int argc, char** argv) | |||
| 491 | if (argc - optind < 3 || (argc - optind < 2 && !file)) | 482 | if (argc - optind < 3 || (argc - optind < 2 && !file)) |
| 492 | usage("Arguments missing."); | 483 | usage("Arguments missing."); |
| 493 | 484 | ||
| 494 | wcet_ms = atof(argv[optind + 0]); | 485 | wcet_ms = want_positive_double(argv[optind + 0], "WCET"); |
| 495 | period_ms = atof(argv[optind + 1]); | 486 | period_ms = want_positive_double(argv[optind + 1], "PERIOD"); |
| 496 | 487 | ||
| 497 | wcet = ms2ns(wcet_ms); | 488 | wcet = ms2ns(wcet_ms); |
| 498 | period = ms2ns(period_ms); | 489 | period = ms2ns(period_ms); |
| @@ -520,7 +511,7 @@ int main(int argc, char** argv) | |||
| 520 | * take duration from file. */ | 511 | * take duration from file. */ |
| 521 | duration = num_jobs * period_ms * 0.001; | 512 | duration = num_jobs * period_ms * 0.001; |
| 522 | else | 513 | else |
| 523 | duration = atof(argv[optind + 2]); | 514 | duration = want_positive_double(argv[optind + 2], "DURATION"); |
| 524 | 515 | ||
| 525 | if (underrun_frac) { | 516 | if (underrun_frac) { |
| 526 | underrun_ms = underrun_frac * wcet_ms; | 517 | underrun_ms = underrun_frac * wcet_ms; |
