Example #1
0
extern "C" void *qemuesesc_main_bootstrap(void *threadargs) {

  static bool qemuStarted = false;
  if (!qemuStarted)
  {
    qemuStarted = true;
    QEMUArgs *qdata = (struct QEMUArgs *) threadargs;

    int    qargc = qdata->qargc;
    char **qargv = qdata->qargv;

    MSG("Starting qemu with");
    for(int i = 0; i < qargc; i++)
      MSG("arg[%d] is: %s",i,qargv[i]);

    qemuesesc_main(qargc,qargv,NULL);

    MSG("qemu done");

    exit(0);
  }else{
    MSG("QEMU already started! Ignoring the new start.");
  }

  return 0;
}
Example #2
0
//This function is used to initialize the emulator in order to fork checkpoints
void create_checkpoints (int64_t argc, char **argv) {
    char **qargv = (char **) malloc(argc*sizeof(char **));
    qargv = (char **)malloc(argc*sizeof(char*));
    qargv[0] = (char *) "live";
    for(int64_t j = 1; j < argc; j++) {
        qargv[j] = strdup(argv[j]);
    }

    nchecks = ncheckpoints;
    load_rabbit();
    child_id = 0;
    qemuesesc_main(argc,qargv,0);
}