int main(int argc, char *argv[]) { int ret = EXIT_FAILURE; virConnectPtr conn = NULL; const char *uri = NULL; const char *dom_name = NULL; unsigned int milliseconds = 500; /* Sleep this long between two API calls */ const int connect_flags = 0; /* No connect flags for now */ parse_argv(argc, argv, &uri, &dom_name, &milliseconds); DEBUG("Proceeding with uri=%s dom_name=%s milliseconds=%u", uri, dom_name, milliseconds); if (!(conn = virConnectOpenAuth(uri, virConnectAuthPtrDefault, connect_flags))) { ERROR("Failed to connect to hypervisor"); goto cleanup; } DEBUG("Successfully connected"); if (!dom_name) { if (fetch_domains(conn) == 0) ret = EXIT_SUCCESS; goto cleanup; } if (do_top(conn, dom_name, milliseconds) < 0) goto cleanup; ret = EXIT_SUCCESS; cleanup: if (conn) { int tmp; tmp = virConnectClose(conn); if (tmp < 0) { ERROR("Failed to disconnect from the hypervisor"); ret = EXIT_FAILURE; } else if (tmp > 0) { ERROR("One or more references were leaked after " "disconnect from the hypervisor"); ret = EXIT_FAILURE; } else { DEBUG("Connection successfully closed"); } } return ret; }
static void new_status(char *topfile,char *topppfile,char *confin, t_gromppopts *opts,t_inputrec *ir,bool bZero, bool bGenVel,bool bVerbose,t_state *state, gpp_atomtype_t atype,gmx_mtop_t *sys, int *nmi,t_molinfo **mi,t_params plist[], int *comb,double *reppow,real *fudgeQQ, bool bMorse, int *nerror) { t_molinfo *molinfo=NULL; int nmolblock; gmx_molblock_t *molblock,*molbs; t_atoms *confat; int mb,mbs,i,nrmols,nmismatch; char buf[STRLEN]; bool bGB=FALSE; init_mtop(sys); /* Set boolean for GB */ if(ir->implicit_solvent) bGB=TRUE; /* TOPOLOGY processing */ sys->name = do_top(bVerbose,topfile,topppfile,opts,bZero,&(sys->symtab), plist,comb,reppow,fudgeQQ, atype,&nrmols,&molinfo,ir, &nmolblock,&molblock,bGB); sys->nmolblock = 0; snew(sys->molblock,nmolblock); mbs; sys->natoms = 0; for(mb=0; mb<nmolblock; mb++) { if (sys->nmolblock > 0 && molblock[mb].type == sys->molblock[sys->nmolblock-1].type) { /* Merge consecutive blocks with the same molecule type */ sys->molblock[sys->nmolblock-1].nmol += molblock[mb].nmol; sys->natoms += molblock[mb].nmol*sys->molblock[sys->nmolblock-1].natoms_mol; } else if (molblock[mb].nmol > 0) { /* Add a new molblock to the topology */ molbs = &sys->molblock[sys->nmolblock]; *molbs = molblock[mb]; molbs->natoms_mol = molinfo[molbs->type].atoms.nr; molbs->nposres_xA = 0; molbs->nposres_xB = 0; sys->natoms += molbs->nmol*molbs->natoms_mol; sys->nmolblock++; } } if (sys->nmolblock == 0) { gmx_fatal(FARGS,"No molecules were defined in the system"); } renumber_moltypes(sys,&nrmols,&molinfo); if (bMorse) convert_harmonics(nrmols,molinfo,atype); if (ir->eDisre == edrNone) { i = rm_interactions(F_DISRES,nrmols,molinfo); if (i > 0) { set_warning_line("unknown",-1); sprintf(warn_buf,"disre = no, removed %d distance restraints",i); warning_note(NULL); } } if (opts->bOrire == FALSE) { i = rm_interactions(F_ORIRES,nrmols,molinfo); if (i > 0) { set_warning_line("unknown",-1); sprintf(warn_buf,"orire = no, removed %d orientation restraints",i); warning_note(NULL); } } if (opts->bDihre == FALSE) { i = rm_interactions(F_DIHRES,nrmols,molinfo); if (i > 0) { set_warning_line("unknown",-1); sprintf(warn_buf,"dihre = no, removed %d dihedral restraints",i); warning_note(NULL); } } /* Copy structures from msys to sys */ molinfo2mtop(nrmols,molinfo,sys); /* COORDINATE file processing */ if (bVerbose) fprintf(stderr,"processing coordinates...\n"); get_stx_coordnum(confin,&state->natoms); if (state->natoms != sys->natoms) gmx_fatal(FARGS,"number of coordinates in coordinate file (%s, %d)\n" " does not match topology (%s, %d)", confin,state->natoms,topfile,sys->natoms); else { /* make space for coordinates and velocities */ char title[STRLEN]; snew(confat,1); init_t_atoms(confat,state->natoms,FALSE); init_state(state,state->natoms,0); read_stx_conf(confin,title,confat,state->x,state->v,NULL,state->box); /* This call fixes the box shape for runs with pressure scaling */ set_box_rel(ir,state); nmismatch = check_atom_names(topfile, confin, sys, confat); free_t_atoms(confat,TRUE); sfree(confat); if (nmismatch) { sprintf(buf,"%d non-matching atom name%s\n" "atom names from %s will be used\n" "atom names from %s will be ignored\n", nmismatch,(nmismatch == 1) ? "" : "s",topfile,confin); warning(buf); } if (bVerbose) fprintf(stderr,"double-checking input for internal consistency...\n"); double_check(ir,state->box,nint_ftype(sys,molinfo,F_CONSTR),nerror); } if (bGenVel) { real *mass; gmx_mtop_atomloop_all_t aloop; t_atom *atom; snew(mass,state->natoms); aloop = gmx_mtop_atomloop_all_init(sys); while (gmx_mtop_atomloop_all_next(aloop,&i,&atom)) { mass[i] = atom->m; } if (opts->seed == -1) { opts->seed = make_seed(); fprintf(stderr,"Setting gen_seed to %d\n",opts->seed); } maxwell_speed(opts->tempi,opts->seed,sys,state->v); stop_cm(stdout,state->natoms,mass,state->x,state->v); sfree(mass); } *nmi = nrmols; *mi = molinfo; }