Exemple #1
0
int main() {
    int dmtcp_enabled = dmtcp_is_enabled();
    if ( ! dmtcp_enabled ) {
      printf("\n *** dmtcp_is_enabled: executable seems to not be running"
             " under dmtcp_launch.\n\n");
    }

    int original_generation;
    if ( dmtcp_enabled ) {
      original_generation = dmtcp_get_generation();
    }


    int retval = dmtcp_checkpoint();
    if (retval == DMTCP_AFTER_CHECKPOINT) {
      // Wait long enough for checkpoint request to be written out.
      while (dmtcp_get_generation() == original_generation) {
        sleep(1);
    }

      printf("*** dmtcp_checkpoint: This program has now invoked a checkpoint.\n"
             "      It will resume its execution next.\n");
    } else if (retval == DMTCP_AFTER_RESTART) {
      printf("*** dmtcp_checkpoint: This program is now restarting.\n");
    } else if (retval == DMTCP_NOT_PRESENT) {
      printf(" *** dmtcp_checkpoint: DMTCP is not running."
             "  Skipping checkpoint.\n");
    }

    printf("\n*** Process done executing.  Successfully exiting.\n");
    if (retval == DMTCP_AFTER_CHECKPOINT) {
        printf("*** Execute ./dmtcp_restart_script.sh to restart.\n");
    }
    return 0;
}
Exemple #2
0
int
main()
{
  if (!dmtcp_is_enabled()) {
    printf("\n *** dmtcp_is_enabled: executable seems to not be running"
           " under dmtcp_launch.\n");
  }

  int retval = dmtcp_disable_ckpt();
  if (retval == DMTCP_NOT_PRESENT) {
    printf("\n *** dmtcp_disable_ckpt: DMTCP_NOT_PRESENT."
           "  Will exit.\n");
    exit(0);
  }

  // This assumes that DMTCP is present.
  int original_generation = dmtcp_get_generation();

  printf("*** dmtcp_disable_ckpt: Checkpoints are blocked.\n");
  printf("      But a checkpoint was requested every two seconds: '-i 2'\n");
  printf("*** sleep: sleeping 3 seconds.\n\n");
  sleep(3);
  printf("*** dmtcp_enable_ckpt: Will now unblock checkpointing\n"
         "      and write ./dmtcp_restart_script.sh.\n");
  printf("*** Execute ./dmtcp_restart_script.sh to restart from here.\n");
  dmtcp_enable_ckpt();

  // Wait long enough for checkpoint to be written.
  while (dmtcp_get_generation() == original_generation) {
    sleep(1);
  }

  printf("\n*** Process done executing.  Successfully exiting.\n");
  return 0;
}
Exemple #3
0
void dmtcp_event_hook(DmtcpEvent_t event, DmtcpEventData_t *data)
{
  switch (event) {
  case DMTCP_EVENT_WRITE_CKPT:
    if (dmtcp_get_generation() == 1) {
      baseCkptDir = (char *)dmtcp_get_ckpt_dir();
      gethostname(hostname, MAX_HOST_NAME_LENTGH - 1);
    }
    snprintf(newCkptDir, MAX_CKPT_DIR_LENGTH - 1, "%s/%s/%05"PRIu32"", baseCkptDir,
        hostname, dmtcp_get_generation());

    dmtcp_set_ckpt_dir(newCkptDir);
    dmtcp_set_coord_ckpt_dir(newCkptDir);
    break;
  case DMTCP_EVENT_RESUME:
    break;
  default:
    ;
  }

  /* Call this next line in order to pass DMTCP events to later plugins. */
  DMTCP_NEXT_EVENT_HOOK(event, data);
}