void NewRelicProfiler::beginFrameEx(const char *symbol) { NewRelicProfilerFrame *frame = dynamic_cast<NewRelicProfilerFrame *>(m_stack); if (m_stack->m_parent) { NewRelicProfilerFrame *p = dynamic_cast<NewRelicProfilerFrame *>(frame->m_parent); frame->m_nr_depth = p->m_nr_depth + 1; } else { frame->m_nr_depth = 0; } frame->m_nr_segement_code = 0; if (frame->m_nr_depth < max_depth) { frame->m_nr_segement_code = newrelic_segment_generic_begin(NEWRELIC_AUTOSCOPE, NEWRELIC_AUTOSCOPE, frame->m_name); } }
int process_lists_of_files(const char* tmp_file, long newrelic_transaction, long* max_exec_size_found, char* max_exec_fname) { long newr_segm_internal_proc = 0; if (newrelic_transaction >= 0) { newr_segm_internal_proc = newrelic_segment_generic_begin(newrelic_transaction, NEWRELIC_ROOT_SEGMENT, "processing_list_execs"); if (newr_segm_internal_proc < 0) fprintf(stderr, "ERROR: newrelic_segment_external_begin() " "returned %ld\n", newr_segm_internal_proc); } long curr_max_fsize = -1; char curr_max_fname[PATH_MAX]; FILE *f; f = fopen(tmp_file, "r"); if (f) { char line[PATH_MAX+32]; long fsize; char fname[PATH_MAX]; long numb_lines = 0; while (fgets(line, sizeof line, f) != NULL) { sscanf (line, "%ld %s", &fsize, fname); if (fsize > curr_max_fsize) { curr_max_fsize = fsize; strncpy(curr_max_fname, fname, sizeof curr_max_fname); } numb_lines++; /* one line per file, as per output of `find` */ } fclose(f); if (newrelic_transaction >= 0) { char total_numb_executables[32]; snprintf(total_numb_executables, sizeof total_numb_executables, "%ld", numb_lines); int ret_code = newrelic_transaction_add_attribute(newrelic_transaction, "Custom/ct_NUMBER_EXECUTABLES", total_numb_executables); if (ret_code < 0) fprintf(stderr, "ERROR: newrelic_transaction_add_attribute() " "returned %d\n", ret_code); } } else curr_max_fname[0] = '\0'; *max_exec_size_found = curr_max_fsize; strncpy(max_exec_fname, curr_max_fname, sizeof curr_max_fname); if (newrelic_transaction >= 0 && newr_segm_internal_proc >= 0) { int ret_code = newrelic_segment_end(newrelic_transaction, newr_segm_internal_proc); if (ret_code < 0) fprintf(stderr, "ERROR: newrelic_segment_end() returned %d\n", ret_code); } return (curr_max_fname[0] != 0) ? 0: -1 ; }