14 #include "itrace_utils.h" 15 #ifndef DISABLE_ITRACE 251 #ifndef DISABLE_ITRACE_EVENTS 289 #endif // DISABLE_ITRACE_EVENTS 359 #ifndef DISABLE_ITRACE_EVENTS 410 #else // DISABLE_ITRACE_EVENTS 429 #endif // DISABLE_ITRACE_EVENTS 443 #ifndef DISABLE_ITRACE_MARKERS 454 #endif // DISABLE_ITRACE_MARKERS 660 void itrace_merge_csv_files(
char *file_name,
int num_files);
673 #define ITRACE_START_SECTION_WITH_CONTEXT_NO_EVENTS(itrace_section_id_param) \ 674 itrace_section_no_events_context_t itrace_section_no_events_context; \ 675 itrace_section_id_t itrace_section_id = itrace_section_id_param; \ 676 itrace_start_section_with_context_no_events(&itrace_section_no_events_context); 681 #define ITRACE_END_SECTION_WITH_CONTEXT_NO_EVENTS() itrace_end_section_with_context_no_events(itrace_section_id, &itrace_section_no_events_context); 683 #ifndef DISABLE_ITRACE_EVENTS 688 #define ITRACE_START_SECTION_WITH_CONTEXT(itrace_section_id_param) \ 689 itrace_section_context_t itrace_section_context; \ 690 itrace_section_id_t itrace_section_id = itrace_section_id_param; \ 691 itrace_start_section_with_context(&itrace_section_context); 696 #define ITRACE_END_SECTION_WITH_CONTEXT() itrace_end_section_with_context(itrace_section_id, &itrace_section_context); 698 #endif // DISABLE_ITRACE_EVENTS 705 #define ITRACE_START_SECTION_WITH_CONTEXT_NO_EVENTS_MSPS(itrace_section_id_param) \ 706 itrace_section_no_events_context_t itrace_section_no_events_context_##itrace_section_id_param; \ 707 itrace_section_id_t itrace_section_id_##itrace_section_id_param = itrace_section_id_param; \ 708 itrace_start_section_with_context_no_events(&itrace_section_no_events_context_##itrace_section_id_param); 715 #define ITRACE_END_SECTION_WITH_CONTEXT_NO_EVENTS_MSPS(itrace_section_id_param) itrace_end_section_with_context_no_events(itrace_section_id_##itrace_section_id_param, &itrace_section_no_events_context_##itrace_section_id_param); 717 #ifndef DISABLE_ITRACE_EVENTS 724 #define ITRACE_START_SECTION_WITH_CONTEXT_MSPS(itrace_section_id_param) \ 725 itrace_section_context_t itrace_section_context_##itrace_section_id_param; \ 726 itrace_section_id_t itrace_section_id_##itrace_section_id_param = itrace_section_id_param; \ 727 itrace_start_section_with_context(&itrace_section_context_##itrace_section_id_param); 734 #define ITRACE_END_SECTION_WITH_CONTEXT_MSPS(itrace_section_id_param) itrace_end_section_with_context(itrace_section_id_##itrace_section_id_param, &itrace_section_context_##itrace_section_id_param); 736 #endif // DISABLE_ITRACE_EVENTS 763 #define ITRACE_MONITOR_FUNCTION_NO_EVENTS_CPP(...) \ 764 static bool itrace_is_first_function_occurrence = true; \ 765 itrace_section_id_t itrace_function_section_id = (itrace_section_id_t) &itrace_is_first_function_occurrence; \ 766 auto itrace_function_profiler = itrace_is_message_registration_needed(itrace_function_section_id) ? make_itrace_function_profiler<false>(itrace_function_section_id, __FUNCSIG__, ## __VA_ARGS__) : make_itrace_function_profiler<false>(itrace_function_section_id, ## __VA_ARGS__); \ 767 itrace_is_first_function_occurrence = false; 787 #define ITRACE_MONITOR_FUNCTION_CPP(...) \ 788 static bool itrace_is_first_function_occurrence = true; \ 789 itrace_section_id_t itrace_function_section_id = (itrace_section_id_t) &itrace_is_first_function_occurrence; \ 790 auto itrace_function_profiler = itrace_is_message_registration_needed(itrace_function_section_id) ? make_itrace_function_profiler<true>(itrace_function_section_id, __FUNCSIG__, ## __VA_ARGS__) : make_itrace_function_profiler<true>(itrace_function_section_id, ## __VA_ARGS__); \ 791 itrace_is_first_function_occurrence = false; 811 #define ITRACE_MONITOR_SCOPE_NO_EVENTS_CPP(name, ...) \ 812 static bool itrace_is_first_scope_occurrence = true; \ 813 itrace_section_id_t itrace_scope_section_id = (itrace_section_id_t) &itrace_is_first_scope_occurrence; \ 814 auto itrace_scope_profiler = itrace_is_message_registration_needed(itrace_scope_section_id) ? make_itrace_function_profiler<false>(itrace_scope_section_id, #name, ## __VA_ARGS__) : make_itrace_function_profiler<false>(itrace_scope_section_id, ## __VA_ARGS__); \ 815 itrace_is_first_scope_occurrence = false; 834 #define ITRACE_MONITOR_SCOPE_CPP(name, ...) \ 835 static bool itrace_is_first_scope_occurrence = true; \ 836 itrace_section_id_t itrace_scope_section_id = (itrace_section_id_t) &itrace_is_first_scope_occurrence; \ 837 auto itrace_scope_profiler = itrace_is_message_registration_needed(itrace_scope_section_id) ? make_itrace_function_profiler<true>(itrace_scope_section_id, #name, ## __VA_ARGS__) : make_itrace_function_profiler<true>(itrace_scope_section_id, ## __VA_ARGS__); \ 838 itrace_is_first_scope_occurrence = false; 860 #define ITRACE_START_SECTION_CPP(name, ...) \ 861 static bool itrace_is_first_section_occurrence = true; \ 862 itrace_section_id_t itrace_section_id = (itrace_section_id_t) &itrace_is_first_section_occurrence; \ 863 auto itrace_section_profiler = itrace_is_message_registration_needed(itrace_section_id) ? make_itrace_function_profiler<true>(itrace_section_id, #name, ## __VA_ARGS__) : make_itrace_function_profiler<true>(itrace_section_id, ## __VA_ARGS__); \ 864 itrace_is_first_section_occurrence = false; 872 #define ITRACE_END_SECTION_CPP() \ 873 itrace_section_profiler.reset(); 893 #define ITRACE_START_SECTION_MSPS_CPP(name, ...) \ 894 static bool itrace_is_first_section_occurrence_##name = true; \ 895 itrace_section_id_t itrace_section_id_##name = (itrace_section_id_t) &itrace_is_first_section_occurrence_##name; \ 896 auto itrace_section_profiler_##name = itrace_is_message_registration_needed(itrace_section_id_##name) ? make_itrace_function_profiler<true>(itrace_section_id_##name, #name, ## __VA_ARGS__) : make_itrace_function_profiler<true>(itrace_section_id_##name, ## __VA_ARGS__); \ 897 itrace_is_first_section_occurrence_##name = false; 907 #define ITRACE_END_SECTION_MSPS_CPP(name) \ 908 itrace_section_profiler_##name.reset(); 910 #ifndef DISABLE_ITRACE_MARKERS 928 #define ITRACE_ADD_MARKER_WITH_VARIABLES_CPP(table_name, ...) \ 930 static bool itrace_is_first_variable_dump = true; \ 931 itrace_add_marker_with_variables(itrace_is_first_variable_dump, #table_name, ## __VA_ARGS__); \ 933 #endif // DISABLE_ITRACE_MARKERS 935 #endif // __cplusplus 937 #endif // DISABLE_ITRACE itrace_return_t itrace_get_num_events_left_to_register(itrace_profiler_handle_t profiler_handle, int *num_events_left_to_register)
Return the number of events that are still to be registered.
itrace_return_t itrace_end_periodic_events_reader(itrace_profiler_handle_t profiler_handle)
End the periodic event reader.
itrace_return_t itrace_start_section(itrace_profiler_handle_t profiler_handle, const char *section_name, itrace_measured_events_t *measured_events)
Define the start of a section for which all registered events will be monitored.
itrace_return_t itrace_end_section(itrace_profiler_handle_t profiler_handle, itrace_measured_events_t *measured_events)
Define the end of a section for which all registered events will be monitored.
itrace_return_t itrace_remove_all_events(itrace_profiler_handle_t profiler_handle)
Remove all events to be registered.
itrace_return_t itrace_add_marker(itrace_profiler_handle_t profiler_handle, const char *marker_name)
Add a marker.
itrace_return_t itrace_set_stid(itrace_profiler_handle_t profiler_handle, itrace_stid_t *stid)
Filter all PMU events by STID.
itrace_return_t itrace_open_profiler(itrace_logger_handle_t logger_handle, uint32_t domain, size_t log_size, itrace_profiler_handle_t *profiler_handle_ptr)
Open profiler instance.
itrace_return_t itrace_open_logger(int domain, itrace_logger_handle_t *logger_handle_ptr)
Open logger instance.
itrace_return_t itrace_set_target_files(itrace_logger_handle_t logger_handle, uint32_t file_types)
Specify the types of files generated by the logger.
uint32_t itrace_processing_mode_t
Definition: itrace_types.h:270
itrace_return_t itrace_add_event_by_id(itrace_profiler_handle_t profiler_handle, uint32_t event_id)
Add an event to be registered by specifying only its id.
itrace_return_t itrace_register_thread(itrace_profiler_handle_t profiler_handle, const char *thread_name)
Assign a name to a software thread and attempt to identify its parent thread id.
itrace_return_t itrace_close_files(itrace_logger_handle_t logger_handle)
Close the logger output files.
Definition: itrace_types.h:153
itrace_return_t itrace_start_periodic_events_reader(itrace_profiler_handle_t profiler_handle, uint32_t events_reader_period_us, uint32_t thread_priority)
Start a periodic event reader measuring registered events at regular intervals.
itrace_return_t itrace_register_events(itrace_profiler_handle_t profiler_handle, itrace_event_t *attempted_to_register_events, int *num_attempted_to_register_events)
Register new events.
itrace_return_t itrace_configure_pmu_policy(itrace_profiler_handle_t profiler_handle, uint32_t min_num_pmu_events_to_register, uint32_t max_num_pmu_events_to_register, uint32_t pmu_registration_timeout_us)
Configure PMU arbitration policy.
itrace_return_t itrace_set_processing_mode(itrace_profiler_handle_t profiler_handle, itrace_processing_mode_t processing_mode)
Set processing mode to use for all events at registration time.
void * itrace_logger_handle_t
Definition: itrace_types.h:199
itrace_return_t itrace_set_default_profiler(itrace_profiler_handle_t profiler_handle)
Set the specified profiler instance as default.
Definition: itrace_types.h:323
void itrace_end_section_no_events(void)
Define the end of a section without monitoring registered events.
itrace_return_t itrace_get_domain(itrace_profiler_handle_t profiler_handle, uint32_t *domain_id)
Get the domain id of the profiler.
itrace_return_t itrace_set_root_filename(itrace_logger_handle_t logger_handle, const char *root_filename)
Specify the root name of the files created by the logger.
itrace_return_t itrace_deregister_events(itrace_profiler_handle_t profiler_handle)
Deregister all events currently registered with this profiler instance.
itrace_return_t itrace_add_event(itrace_profiler_handle_t profiler_handle, itrace_event_t *event)
Add an event to be registered.
uint64_t itrace_section_id_t
Definition: itrace_types.h:119
itrace_return_t itrace_close_logger(itrace_logger_handle_t logger_handle)
Close logger instance.
itrace_return_t itrace_setup_from_file(itrace_logger_handle_t *logger_handle_ptr, const char *setup_filename)
Setup itrace from a configuration file or using defaults.
itrace_return_t itrace_get_registered_events(itrace_profiler_handle_t profiler_handle, itrace_event_t *registered_events, int *num_registered_events)
Return the events currently registered.
itrace_return_t itrace_start_periodic_logs_flusher(itrace_logger_handle_t logger_handle, uint32_t flushing_period_us)
Create a background thread to periodically flush and parse the log buffers for each active profiler...
itrace_return_t
Definition: itrace_types.h:152
itrace_return_t itrace_teardown(itrace_logger_handle_t logger_handle)
Close itrace when utilizing CPU and/or DSP automation.
itrace_return_t itrace_get_root_filename(itrace_logger_handle_t logger_handle, char *root_filename)
Return the current root name being used by the logger.
itrace_return_t itrace_add_events_from_file(itrace_profiler_handle_t profiler_handle, const char *events_filename)
Add events to be registered from a file.
itrace_return_t itrace_close_profiler(itrace_profiler_handle_t profiler_handle)
Close profiler instance.
itrace_return_t itrace_add_events(itrace_profiler_handle_t profiler_handle, itrace_event_t *events, int num_events)
Add multiple events to be registered.
itrace_return_t itrace_flush_logs(itrace_logger_handle_t logger_handle)
Flush the logs of all opened profilers.
itrace_return_t itrace_get_itrace_version(itrace_profiler_handle_t profiler_handle, uint32_t *version)
Return the itrace library version running on the specified domain.
uint32_t itrace_stid_t
Definition: itrace_types.h:294
void itrace_start_section_no_events(itrace_section_id_t section_id)
Define the start of a section without monitoring registered events.
itrace_return_t itrace_end_periodic_logs_flusher(itrace_logger_handle_t logger_handle)
Destroy the thread that is flushing and parsing the log buffers for each active profiler.
itrace_return_t itrace_read_events(itrace_profiler_handle_t profiler_handle, itrace_measured_events_t *measured_events)
Read events.
itrace_return_t itrace_remote_open(itrace_logger_handle_t *logger_handle_ptr, int is_blocking_call)
Enable client to control itrace remotely.
itrace_return_t itrace_add_all_pmu_events(itrace_profiler_handle_t profiler_handle)
Add all published PMU events supported on the current domain.
itrace_return_t itrace_start_section_with_section_id(itrace_profiler_handle_t profiler_handle, itrace_section_id_t section_id, itrace_measured_events_t *measured_events)
Define the start of a section for which all registered events will be monitored. This section is iden...
Definition: itrace_types.h:311
itrace_return_t itrace_flush_log(itrace_profiler_handle_t profiler_handle)
Flush the log of the current profiler.
itrace_return_t itrace_remote_close(void)
Disable client from controlling itrace remotely.
void * itrace_profiler_handle_t
Definition: itrace_types.h:205
itrace_return_t itrace_get_dsp_version(itrace_profiler_handle_t profiler_handle, char *dsp_version)
Get the DSP Version index of the profiler.