-
-/** The model_main function contains the main model checking loop. */
-static void model_main()
-{
- snapshot_record(0);
- model->run();
- delete model;
-
- DEBUG("Exiting\n");
-}
-
-/**
- * Main function. Just initializes snapshotting library and the
- * snapshotting library calls the model_main function.
- */
-int main(int argc, char **argv)
-{
- main_argc = argc;
- main_argv = argv;
-
- /*
- * If this printf statement is removed, CDSChecker will fail on an
- * assert on some versions of glibc. The first time printf is
- * called, it allocated internal buffers. We can't easily snapshot
- * libc since we also use it.
- */
-
- printf("CDSChecker\n"
- "Copyright (c) 2013 Regents of the University of California. All rights reserved.\n"
- "Distributed under the GPLv2\n"
- "Written by Brian Norris and Brian Demsky\n\n");
-
- /* Configure output redirection for the model-checker */
- redirect_output();
-
- //Initialize snapshotting library
- if (!model)
- snapshot_system_init(10000, 1024, 1024, 40000);
-
- struct model_params params;
-
- param_defaults(¶ms);
- register_plugins();
- parse_options(¶ms, main_argc, main_argv);
-
- //Initialize race detector
- initRaceDetector();
-
- snapshot_stack_init();
-
- if (!model)
- model = new ModelChecker();
- model->setParams(params);
- install_trace_analyses(model->get_execution());
-
- startExecution(&model_main);
-}