static void event_thread_exit(void *drcontext) { per_thread_t *data = drmgr_get_tls_field(drcontext, tls_idx); log_stream_close(data->logf); dr_thread_free(drcontext, data, sizeof(per_thread_t)); }
static void event_thread_exit(void *drcontext) { per_thread_t *data; memtrace(drcontext); /* dump any remaining buffer entries */ data = drmgr_get_tls_field(drcontext, tls_idx); dr_mutex_lock(mutex); num_refs += data->num_refs; dr_mutex_unlock(mutex); log_stream_close(data->logf); /* closes fd too */ dr_raw_mem_free(data->buf_base, MEM_BUF_SIZE); dr_thread_free(drcontext, data, sizeof(per_thread_t)); }
static void event_thread_exit(void *drcontext) { per_thread_t *data; instrace(drcontext); data = drmgr_get_tls_field(drcontext, tls_index); dr_mutex_lock(mutex); num_refs += data->num_refs; dr_mutex_unlock(mutex); #ifdef OUTPUT_TEXT log_stream_close(data->logf); /* closes fd too */ #else log_file_close(data->log); #endif dr_thread_free(drcontext, data->buf_base, MEM_BUF_SIZE); dr_thread_free(drcontext, data, sizeof(per_thread_t)); }