void ExcDlgPowerTotal::DispExcDate() { int x, y; DISPLAY_STRING(41, 45, m_AmrDisplay.gExcDate.power_count); DISPLAY_STRING(41, 63, m_AmrDisplay.gExcDate.rower_count); DISPLAY_STRING(41, 81, m_AmrDisplay.gExcDate.re_power_count); DISPLAY_STRING(41, 99, m_AmrDisplay.gExcDate.re_rower_count); DISPLAY_STRING(20, 125, m_AmrDisplay.m_ExcCapTime); }
static void event_exit(void) { file_t f; /* Display the results! */ char msg[512]; int len; len = dr_snprintf(msg, sizeof(msg)/sizeof(msg[0]), "Instrumentation results:\n" " saw %" STAT_FORMAT_CODE " flops\n", stats->num_flops); DR_ASSERT(len > 0); msg[sizeof(msg)/sizeof(msg[0])-1] = '\0'; #ifdef SHOW_RESULTS DISPLAY_STRING(msg); #endif /* SHOW_RESULTS */ /* On Windows we need an absolute path so we place it in * the same directory as our library. */ f = log_file_open(my_id, NULL, NULL /* client lib path */, "stats", 0); DR_ASSERT(f != INVALID_FILE); dr_fprintf(f, "%s\n", msg); dr_close_file(f); shared_memory_exit(); drx_exit(); if (!drmgr_unregister_bb_instrumentation_event(event_analyze_bb)) DR_ASSERT(false); drmgr_exit(); }
static void event_exit() { #ifdef SHOW_RESULTS char msg[512]; int len; len = dr_snprintf(msg, sizeof(msg)/sizeof(msg[0]), "Instrumentation results:\n" " saw %llu memory references\n", num_refs); DR_ASSERT(len > 0); NULL_TERMINATE_BUFFER(msg); DISPLAY_STRING(msg); #endif /* SHOW_RESULTS */ code_cache_exit(); if (!drmgr_unregister_tls_field(tls_index) || !drmgr_unregister_thread_init_event(event_thread_init) || !drmgr_unregister_thread_exit_event(event_thread_exit) || !drmgr_unregister_bb_insertion_event(event_bb_insert) || drreg_exit() != DRREG_SUCCESS) DR_ASSERT(false); dr_mutex_destroy(mutex); drmgr_exit(); }
static void event_exit(void) { #ifdef SHOW_RESULTS char msg[512]; int len; uint64 total_count = app_count + lib_count; /* We only instrument indirect calls/jmps, and assume that * there would be a return paired with indirect calls/jmps. */ uint64 total_xfer = (app2lib + lib2app); len = dr_snprintf(msg, sizeof(msg)/sizeof(msg[0]), "Instrumentation results:\n" "\t%10llu instructions executed\n" "\t%10llu (%2.3f%%) in app\n" "\t%10llu (%2.3f%%) in lib,\n" "\t%10llu (%2.3f%%) call/jmp between app and lib\n" "\t%10u app call/jmp to lib\n" "\t%10u lib call/jmp to app\n", total_count, app_count, 100*(float)app_count/total_count, lib_count, 100*(float)lib_count/total_count, total_xfer, 100*(float)total_xfer/total_count, app2lib, lib2app); DR_ASSERT(len > 0); NULL_TERMINATE(msg); DISPLAY_STRING(msg); #endif /* SHOW_RESULTS */ }
static void exit_event(void) { #ifdef SHOW_RESULTS char msg[512]; int len; len = dr_snprintf(msg, sizeof(msg)/sizeof(msg[0]), "Instrumentation results:\n" "Processed %d instructions\n" ,fp_count); DR_ASSERT(len > 0); NULL_TERMINATE(msg); DISPLAY_STRING(msg); #endif /* SHOW_RESULTS */ dr_mutex_destroy(count_mutex); #ifdef SHOW_SYMBOLS if (drsym_exit() != DRSYM_SUCCESS) { dr_log(NULL, LOG_ALL, 1, "WARNING: error cleaning up symbol library\n"); } #endif printht(); __wrap_free(testarr); }
static void event_exit(void) { char msg[512]; int len; len = dr_snprintf(msg, sizeof(msg)/sizeof(msg[0]), "Instrumentation results: %llu instructions executed\n", global_count); DR_ASSERT(len > 0); NULL_TERMINATE(msg); DISPLAY_STRING(msg); }
static void event_exit() { char msg[512]; int len; len = snprintf(msg, sizeof(msg) / sizeof(msg[0]), "Number of basi blocks built : %"UINT64_FORMAT_CODE"\n" " Average size : %5.2lf instructions\n", counts_as_built.blocks, counts_as_built.total_size / (double)counts_as_built.blocks); DR_ASSERT(len > 0); msg[sizeof(msg)/sizeof(msg[0])-1] = '\0'; /*NULL Terminate */ DISPLAY_STRING(msg); /* Free mutex */ dr_mutex_destroy(as_built_lock); }
static void show_results(void) { #ifdef SHOW_RESULTS char msg[512]; int len; /* Note that using %f with dr_printf or dr_fprintf on Windows will print * garbage as they use ntdll._vsnprintf, so we must use dr_snprintf. */ len = dr_snprintf(msg, sizeof(msg)/sizeof(msg[0]), "<Number of system calls seen: %d>", num_syscalls); DR_ASSERT(len > 0); msg[sizeof(msg)/sizeof(msg[0])-1] = '\0'; DISPLAY_STRING(msg); #endif /* SHOW_RESULTS */ }
static void event_exit(void) { #ifdef SHOW_RESULTS char msg[256]; int len; len = dr_snprintf(msg, sizeof(msg)/sizeof(msg[0]), "<Largest malloc request: %d>\n<OOM simulations: %d>\n", max_malloc, malloc_oom); DR_ASSERT(len > 0); NULL_TERMINATE(msg); DISPLAY_STRING(msg); #endif /* SHOW_RESULTS */ dr_mutex_destroy(max_lock); drwrap_exit(); }
static void exit_event(void) { #ifdef SHOW_RESULTS char msg[512]; int len; len = dr_snprintf(msg, sizeof(msg)/sizeof(msg[0]), "Instrumentation results:\n" " saw %d div instructions\n" " of which %d were powers of 2\n", div_count, div_p2_count); DR_ASSERT(len > 0); NULL_TERMINATE(msg); DISPLAY_STRING(msg); #endif /* SHOW_RESULTS */ dr_mutex_destroy(count_mutex); }
static void display_results(per_thread_t *data, char *thread_note) { #ifdef SHOW_RESULTS char msg[512]; int len; len = dr_snprintf(msg, sizeof(msg)/sizeof(msg[0]), "%sInstrumentation results:\n" " saw %d direct calls\n" " saw %d indirect calls\n" " saw %d returns\n", thread_note, data->num_direct_calls, data->num_indirect_calls, data->num_returns); DR_ASSERT(len > 0); NULL_TERMINATE(msg); DISPLAY_STRING(msg); #endif /* SHOW_RESULTS */ }
static void event_exit(void) { #ifdef SHOW_RESULTS char msg[512]; int len; len = dr_snprintf(msg, sizeof(msg)/sizeof(msg[0]), "Instrumentation results:\n" "%10d basic block executions\n" "%10d basic blocks needed flag saving\n" "%10d basic blocks did not\n", global_count, bbs_eflags_saved, bbs_no_eflags_saved); DR_ASSERT(len > 0); NULL_TERMINATE(msg); DISPLAY_STRING(msg); #endif /* SHOW_RESULTS */ drreg_exit(); drmgr_exit(); }
static void event_exit(void) { #ifdef SHOW_RESULTS char msg[256]; int len; if (enable) { len = dr_snprintf(msg, sizeof(msg)/sizeof(msg[0]), "converted %d out of %d inc/dec to add/sub\n", num_converted, num_examined); } else { len = dr_snprintf(msg, sizeof(msg)/sizeof(msg[0]), "decided to keep all original inc/dec\n"); } DR_ASSERT(len > 0); msg[sizeof(msg)/sizeof(msg[0])-1] = '\0'; DISPLAY_STRING(msg); #endif /* SHOW_RESULTS */ }
static void event_exit(void) { #ifdef SHOW_RESULTS /* Display the results! */ char msg[512]; int len = dr_snprintf(msg, sizeof(msg)/sizeof(msg[0]), "Inlining results:\n" " Number of traces: %d\n" " Number of complete inlines: %d\n", num_traces, num_complete_inlines); DR_ASSERT(len > 0); msg[sizeof(msg)/sizeof(msg[0])-1] = '\0'; DISPLAY_STRING(msg); #endif hashtable_delete(&head_table); if (!drmgr_unregister_bb_instrumentation_event(event_analyze_bb)) DR_ASSERT(false); drmgr_exit(); }
static void event_exit(void) { #ifdef SHOW_RESULTS char msg[512]; int len; /* Note that using %f with dr_printf or dr_fprintf on Windows will print * garbage as they use ntdll._vsnprintf, so we must use dr_snprintf. */ len = dr_snprintf(msg, sizeof(msg)/sizeof(msg[0]), "Number of basic blocks seen: %d\n" " Maximum size: %d instructions\n" " Average size: %5.1f instructions\n", num_bb, max_size, ave_size); DR_ASSERT(len > 0); msg[sizeof(msg)/sizeof(msg[0])-1] = '\0'; DISPLAY_STRING(msg); #endif /* SHOW_RESULTS */ dr_mutex_destroy(stats_mutex); }
void inscount_exit_event(void) { #ifdef SHOW_RESULTS char msg[512]; int len; len = dr_snprintf(msg, sizeof(msg)/sizeof(msg[0]), "process name - %s\nInstrumentation results: %llu instructions executed - %d bbcount\n" ,dr_get_application_name(),global_count,bbcount); DR_ASSERT(len > 0); NULL_TERMINATE(msg); DISPLAY_STRING(msg); #endif /* SHOW_RESULTS */ md_delete_list(head,false); dr_global_free(client_arg, sizeof(client_arg_t)); if (log_mode){ dr_close_file(logfile); } drmgr_exit(); }
static void event_exit(void) { int i; char msg[512]; int len; int j; uint64 xmod_xfer = 0; uint64 self_xfer = 0; for (i = 0; i < num_mods; i++) { dr_fprintf(logfile, "module %3d: %s\n", i, dr_module_preferred_name(mod_array[i].info) == NULL ? "<unknown>" : dr_module_preferred_name(mod_array[i].info)); dr_fprintf(logfile, "%20llu instruction executed\n", mod_cnt[i]); } if (mod_cnt[UNKNOW_MODULE_IDX] != 0) { dr_fprintf(logfile, "unknown modules:\n%20llu instruction executed\n", mod_cnt[UNKNOW_MODULE_IDX]); } for (i = 0; i < MAX_NUM_MODULES; i++) { for (j = 0; j < num_mods; j++) { if (xfer_cnt[i][j] != 0) { dr_fprintf(logfile, "mod %3d => mod %3d: %8u\n", i, j, xfer_cnt[i][j]); if (i == j) self_xfer += xfer_cnt[i][j]; else xmod_xfer += xfer_cnt[i][j]; } } } len = dr_snprintf(msg, sizeof(msg)/sizeof(msg[0]), "Instrumentation results:\n" "\t%10llu instructions executed\n" "\t%10llu (%2.3f%%) cross module indirect branches\n" "\t%10llu (%2.3f%%) intra-module indirect branches\n", ins_count, xmod_xfer, 100*(float)xmod_xfer/ins_count, self_xfer, 100*(float)self_xfer/ins_count); DR_ASSERT(len > 0); NULL_TERMINATE_BUFFER(msg); #ifdef SHOW_RESULTS DISPLAY_STRING(msg); #endif /* SHOW_RESULTS */ dr_fprintf(logfile, "%s\n", msg); dr_mutex_lock(mod_lock); for (i = 0; i < num_mods; i++) { DR_ASSERT(mod_array[i].info != NULL); dr_free_module_data(mod_array[i].info); } dr_mutex_unlock(mod_lock); dr_mutex_destroy(mod_lock); log_file_close(logfile); drx_exit(); if (!drmgr_unregister_bb_instrumentation_event(event_analyze_bb) || !drmgr_unregister_module_load_event(event_module_load) || !drmgr_unregister_module_unload_event(event_module_unload) || drreg_exit() != DRREG_SUCCESS) DR_ASSERT(false); drmgr_exit(); }