/* platform specific initialization */ void vt_pform_init() { int pid = getpid(); char exec_proc[512]; int hostid_retries; #if TIMER == TIMER_SWITCH_CLOCK int i; for (i=0; i<NUMRETRY; i++) { if ( (vt_swclk = swclockInit()) != 0 ) break; } #elif TIMER == TIMER_POWER_REALTIME timebasestruct_t t; read_real_time(&t, TIMEBASE_SZ); time_base_to_time(&t, TIMEBASE_SZ); vt_time_base = t.tb_high - (t.tb_high & 0xFFFF); #elif TIMER == TIMER_PAPI_REAL_USEC vt_time_base = vt_metric_real_usec(); #endif /* get full path of executable */ snprintf(exec_proc, sizeof (exec_proc), VT_PROCDIR"%d/object/a.out", pid); vt_exec = strdup(exec_proc); /* get unique numeric SMP-node identifier */ hostid_retries = 0; while( !vt_node_id && (hostid_retries++ < VT_MAX_GETHOSTID_RETRIES) ) { vt_node_id = gethostid(); } if (!vt_node_id) vt_error_msg("Maximum retries (%i) for gethostid exceeded!", VT_MAX_GETHOSTID_RETRIES); }
/* platform specific initialization */ void elg_pform_init() { #ifdef USE_SWITCH_CLOCK int i; for (i=0; i<NUMRETRY; i++) { if ( (elg_swclk = swclockInit()) != 0 ) break; } #else timebasestruct_t t; read_real_time(&t, TIMEBASE_SZ); time_base_to_time(&t, TIMEBASE_SZ); elg_time_base = t.tb_high - (t.tb_high & 0xFFFF); #endif }