model_snapshot_space = create_mspace(numheappages * PAGESIZE, 1);
}
+volatile int modellock = 0;
+
static void fork_loop() {
/* switch back here when takesnapshot is called */
snapshotid = fork_snap->currSnapShotID;
if (model->params.nofork) {
setcontext(&fork_snap->shared_ctxt);
- exit(EXIT_SUCCESS);
+ _Exit(EXIT_SUCCESS);
}
while (true) {
pid_t forkedID;
fork_snap->currSnapShotID = snapshotid + 1;
+
+ modellock = 1;
forkedID = fork();
+ modellock = 0;
if (0 == forkedID) {
setcontext(&fork_snap->shared_ctxt);
}
if (fork_snap->mIDToRollback != snapshotid)
- exit(EXIT_SUCCESS);
+ _Exit(EXIT_SUCCESS);
}
}
}