DR_EXPORT void dr_init(client_id_t id) { dr_register_exit_event(event_exit); dr_register_trace_event(event_trace); /* this optimization is only worthwhile on the Pentium 4, where * an add of 1 is faster than an inc */ enable = (proc_get_family() == FAMILY_PENTIUM_4); /* make it easy to tell, by looking at log file, which client executed */ dr_log(NULL, LOG_ALL, 1, "Client 'inc2add' initializing\n"); #ifdef SHOW_RESULTS /* also give notification to stderr */ if (dr_is_notify_on()) { # ifdef WINDOWS /* ask for best-effort printing to cmd window. must be called in dr_init(). */ dr_enable_console_printing(); # endif dr_fprintf(STDERR, "Client inc2add is running\n"); } #endif /* initialize our global variables */ num_examined = 0; num_converted = 0; }
DR_EXPORT void dr_init(client_id_t id) { dr_fprintf(STDERR, "info: starting dtrace, &dr_init=%p..\n", &dr_init); trace_file = dr_open_file(TRACE_FILE_NAME, DR_FILE_ALLOW_LARGE | DR_FILE_WRITE_OVERWRITE); if(trace_file == INVALID_FILE) { dr_fprintf(STDERR, "fatal: dr_open_file() failed\n"); dr_exit_process(1); } trace_file_lock = dr_mutex_create(); trace_buffer = tb_create(-1); trace_buffer_lock = dr_mutex_create(); hashtable_init_ex(&tags, 16, HASH_INTPTR, false, false, &tag_info_free_raw, NULL, NULL); tags_lock = dr_mutex_create(); dr_register_exit_event(&dr_exit); dr_register_thread_init_event(&handle_thread_init); dr_register_thread_exit_event(&handle_thread_exit); dr_register_bb_event(&handle_bb); dr_register_trace_event(&handle_trace); dr_register_delete_event(&handle_delete); dr_register_signal_event(&handle_signal); dr_register_restore_state_event(&handle_restore_state); }
DR_EXPORT void dr_init(client_id_t id) { const char *options = dr_get_options(id); dr_fprintf(STDERR, "options = %s\n", options); if (options != NULL && strstr(options, "use_unlink") != NULL) { use_unlink = true; } #ifdef WINDOWS dr_register_module_load_event(module_load_event); #endif dr_register_exit_event(exit_event); dr_register_trace_event(trace_event); dr_register_delete_event(deleted_event); dr_register_bb_event(bb_event); dr_register_kernel_xfer_event(kernel_xfer_event); }