From 6405f91a3847312815ffaa8407787b7d3e30a21b Mon Sep 17 00:00:00 2001 From: Brian Norris Date: Tue, 11 Sep 2012 10:10:39 -0700 Subject: [PATCH] main: add "maxreads" parameter --- main.cc | 25 +++++++++++++++++++------ model.h | 1 + 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/main.cc b/main.cc index f58f304..215a219 100644 --- a/main.cc +++ b/main.cc @@ -14,30 +14,41 @@ #include "model.h" #include "snapshot-interface.h" +static void param_defaults(struct model_params * params) { + params->maxreads = 0; +} + static void print_usage() { printf( -"Usage: [OPTIONS]\n" +"Usage: [MC_OPTIONS] -- [PROGRAM ARGUMENTS]\n" "\n" "Options:\n" "-h Display this help message and exit\n" -); +"-m Maximum times a thread can read from the same write while other writes exist\n" +"-- Program arguments follow.\n\n"); exit(EXIT_SUCCESS); } -static void parse_options(struct model_params *params, int argc, char **argv) { - const char *shortopts = "h"; +static void parse_options(struct model_params *params, int *argc, char ***argv) { + const char *shortopts = "hm:"; int opt; bool error = false; - while (!error && (opt = getopt(argc, argv, shortopts)) != -1) { + while (!error && (opt = getopt(*argc, *argv, shortopts)) != -1) { switch (opt) { case 'h': print_usage(); break; + case 'm': + params->maxreads = atoi(optarg); + break; default: /* '?' */ error = true; break; } } + (*argc) -= optind; + (*argv) += optind; + if (error) print_usage(); } @@ -50,7 +61,9 @@ static void real_main() { thrd_t user_thread; struct model_params params; - parse_options(¶ms, main_argc, main_argv); + param_defaults(¶ms); + + parse_options(¶ms, &main_argc, &main_argv); //Initialize race detector initRaceDetector(); diff --git a/model.h b/model.h index b2f7897..990f559 100644 --- a/model.h +++ b/model.h @@ -28,6 +28,7 @@ class Promise; * the model checker. */ struct model_params { + int maxreads; }; /** -- 2.34.1