#ifndef TAUDB_API_H #define TAUDB_API_H 1 #include "taudb_structs.h" /* when a "get" function is called, this global has the number of top-level objects that are returned. */ extern int taudb_numItems; /* the database version */ extern enum taudb_database_schema_version taudb_version; /* to connect to the database */ extern TAUDB_CONNECTION* taudb_connect_config(char* config_name); extern TAUDB_CONNECTION* taudb_connect_config_file(char* config_file_name); /* test the connection status */ extern int taudb_check_connection(TAUDB_CONNECTION* connection); /* disconnect from the database */ extern int taudb_disconnect(TAUDB_CONNECTION* connection); /************************************************/ /* query functions */ /************************************************/ /* functions to support the old database schema - avoid these if you can */ extern PERFDMF_APPLICATION* perfdmf_query_applications(TAUDB_CONNECTION* connection); extern PERFDMF_EXPERIMENT* perfdmf_query_experiments(TAUDB_CONNECTION* connection, PERFDMF_APPLICATION* application); extern PERFDMF_APPLICATION* perfdmf_query_application(TAUDB_CONNECTION* connection, char* name); extern PERFDMF_EXPERIMENT* perfdmf_query_experiment(TAUDB_CONNECTION* connection, PERFDMF_APPLICATION* application, char* name); extern TAUDB_TRIAL* perfdmf_query_trials(TAUDB_CONNECTION* connection, PERFDMF_EXPERIMENT* experiment); /* get the data sources */ extern TAUDB_DATA_SOURCE* taudb_query_data_sources(TAUDB_CONNECTION* connection); extern TAUDB_DATA_SOURCE* taudb_get_data_source_by_id(TAUDB_DATA_SOURCE* data_sources, const int id); extern TAUDB_DATA_SOURCE* taudb_get_data_source_by_name(TAUDB_DATA_SOURCE* data_sources, const char* name); /* using the properties set in the filter, find a set of trials */ extern TAUDB_TRIAL* taudb_query_trials(TAUDB_CONNECTION* connection, boolean complete, TAUDB_TRIAL* filter); extern TAUDB_PRIMARY_METADATA* taudb_query_primary_metadata(TAUDB_CONNECTION* connection, TAUDB_TRIAL* filter); extern TAUDB_PRIMARY_METADATA* taudb_get_primary_metadata_by_name(TAUDB_PRIMARY_METADATA* primary_metadata, const char* name); extern TAUDB_SECONDARY_METADATA* taudb_query_secondary_metadata(TAUDB_CONNECTION* connection, TAUDB_TRIAL* filter); /* get the threads for a trial */ extern TAUDB_THREAD* taudb_query_threads(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial); extern TAUDB_THREAD* taudb_query_derived_threads(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial); extern TAUDB_THREAD* taudb_get_thread(TAUDB_THREAD* threads, int thread_index); extern int taudb_get_total_threads(TAUDB_THREAD* threads); /* get the metrics for a trial */ extern TAUDB_METRIC* taudb_query_metrics(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial); extern TAUDB_METRIC* taudb_get_metric_by_name(TAUDB_METRIC* metrics, const char* name); extern TAUDB_METRIC* taudb_get_metric_by_id(TAUDB_METRIC* metrics, const int id); /* get the time_ranges for a trial */ extern TAUDB_TIME_RANGE* taudb_query_time_range(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial); extern TAUDB_TIME_RANGE* taudb_get_time_range(TAUDB_TIME_RANGE* time_ranges, const int id); /* get the timers for a trial */ extern TAUDB_TIMER* taudb_query_timers(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial); extern TAUDB_TIMER* taudb_get_timer_by_id(TAUDB_TIMER* timers, int id); extern TAUDB_TIMER* taudb_get_trial_timer_by_name(TAUDB_TIMER* timers, const char* id); extern TAUDB_TIMER* taudb_get_trial_timer_by_name(TAUDB_TIMER* timers, const char* id); extern TAUDB_TIMER_GROUP* taudb_query_timer_groups(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial); extern void taudb_parse_timer_group_names(TAUDB_TRIAL* trial, TAUDB_TIMER* timer, char* group_names); extern TAUDB_TIMER_GROUP* taudb_get_timer_group_from_trial_by_name(TAUDB_TIMER_GROUP* timers, const char* name); extern TAUDB_TIMER_GROUP* taudb_get_timer_group_from_timer_by_name(TAUDB_TIMER_GROUP* timers, const char* name); extern TAUDB_TIMER_CALLPATH* taudb_query_timer_callpaths(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, TAUDB_TIMER* timer); extern TAUDB_TIMER_CALLPATH* taudb_get_timer_callpath_by_id(TAUDB_TIMER_CALLPATH* timers, int id); extern TAUDB_TIMER_CALLPATH* taudb_get_timer_callpath_by_name(TAUDB_TIMER_CALLPATH* timers, const char* id); extern TAUDB_TIMER_CALLPATH* taudb_query_all_timer_callpaths(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial); extern char* taudb_get_callpath_string(TAUDB_TIMER_CALLPATH* timer_callpath); /* get the counters for a trial */ extern TAUDB_COUNTER* taudb_query_counters(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial); extern TAUDB_COUNTER* taudb_get_counter_by_id(TAUDB_COUNTER* counters, int id); extern TAUDB_COUNTER* taudb_get_counter_by_name(TAUDB_COUNTER* counters, const char* id); extern TAUDB_COUNTER_VALUE* taudb_query_counter_values(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial); TAUDB_COUNTER_VALUE* taudb_get_counter_value(TAUDB_COUNTER_VALUE* counter_values, TAUDB_COUNTER* counter, TAUDB_THREAD* thread, TAUDB_TIMER_CALLPATH* context, char* timestamp); /* get the timer call data for a trial */ extern TAUDB_TIMER_CALL_DATA* taudb_query_timer_call_data(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, TAUDB_TIMER_CALLPATH* timer_callpath, TAUDB_THREAD* thread); extern TAUDB_TIMER_CALL_DATA* taudb_query_all_timer_call_data(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial); extern TAUDB_TIMER_CALL_DATA* taudb_query_timer_call_data_stats(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, TAUDB_TIMER_CALLPATH* timer_callpath, TAUDB_THREAD* thread); extern TAUDB_TIMER_CALL_DATA* taudb_query_all_timer_call_data_stats(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial); extern TAUDB_TIMER_CALL_DATA* taudb_get_timer_call_data_by_id(TAUDB_TIMER_CALL_DATA* timer_call_data, int id); extern TAUDB_TIMER_CALL_DATA* taudb_get_timer_call_data_by_key(TAUDB_TIMER_CALL_DATA* timer_call_data, TAUDB_TIMER_CALLPATH* callpath, TAUDB_THREAD* thread, char* timestamp); /* get the timer values for a trial */ extern TAUDB_TIMER_VALUE* taudb_query_timer_values(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, TAUDB_TIMER_CALLPATH* timer_callpath, TAUDB_THREAD* thread, TAUDB_METRIC* metric); extern TAUDB_TIMER_VALUE* taudb_query_timer_stats(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, TAUDB_TIMER_CALLPATH* timer_callpath, TAUDB_THREAD* thread, TAUDB_METRIC* metric); extern TAUDB_TIMER_VALUE* taudb_query_all_timer_values(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial); extern TAUDB_TIMER_VALUE* taudb_query_all_timer_stats(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial); extern TAUDB_TIMER_VALUE* taudb_get_timer_value(TAUDB_TIMER_CALL_DATA* timer_call_data, TAUDB_METRIC* metric); /* find main */ extern TAUDB_TIMER* taudb_query_main_timer(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial); /* save everything */ extern void taudb_save_trial(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, boolean update, boolean cascade); extern void taudb_save_threads(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, boolean update); extern void taudb_save_metrics(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, boolean update); extern void taudb_save_timers(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, boolean update); extern void taudb_save_time_ranges(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, boolean update); extern void taudb_save_timer_groups(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, boolean update); extern void taudb_save_timer_parameters(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, boolean update); extern void taudb_save_timer_callpaths(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, boolean update); extern void taudb_save_timer_call_data(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, boolean update); extern void taudb_save_timer_values(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, boolean update); extern void taudb_save_counters(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, boolean update); extern void taudb_save_counter_values(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, boolean update); extern void taudb_save_primary_metadata(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, boolean update); extern void taudb_save_secondary_metadata(TAUDB_CONNECTION* connection, TAUDB_TRIAL* trial, boolean update); /************************************************/ /* memory functions */ /************************************************/ extern char* taudb_strdup(const char* in_string); extern TAUDB_TRIAL* taudb_create_trials(int count); extern TAUDB_METRIC* taudb_create_metrics(int count); extern TAUDB_TIME_RANGE* taudb_create_time_ranges(int count); extern TAUDB_THREAD* taudb_create_threads(int count); extern TAUDB_SECONDARY_METADATA* taudb_create_secondary_metadata(int count); extern TAUDB_PRIMARY_METADATA* taudb_create_primary_metadata(int count); extern TAUDB_PRIMARY_METADATA* taudb_resize_primary_metadata(int count, TAUDB_PRIMARY_METADATA* old_primary_metadata); extern TAUDB_COUNTER* taudb_create_counters(int count); extern TAUDB_COUNTER_VALUE* taudb_create_counter_values(int count); extern TAUDB_TIMER* taudb_create_timers(int count); extern TAUDB_TIMER_PARAMETER* taudb_create_timer_parameters(int count); extern TAUDB_TIMER_GROUP* taudb_create_timer_groups(int count); extern TAUDB_TIMER_GROUP* taudb_resize_timer_groups(int count, TAUDB_TIMER_GROUP* old_groups); extern TAUDB_TIMER_CALLPATH* taudb_create_timer_callpaths(int count); extern TAUDB_TIMER_CALL_DATA* taudb_create_timer_call_data(int count); extern TAUDB_TIMER_VALUE* taudb_create_timer_values(int count); extern void taudb_delete_trials(TAUDB_TRIAL* trials, int count); /************************************************/ /* Adding objects to the hierarchy */ /************************************************/ extern void taudb_add_metric_to_trial(TAUDB_TRIAL* trial, TAUDB_METRIC* metric); extern void taudb_add_time_range_to_trial(TAUDB_TRIAL* trial, TAUDB_TIME_RANGE* time_range); extern void taudb_add_thread_to_trial(TAUDB_TRIAL* trial, TAUDB_THREAD* thread); extern void taudb_add_secondary_metadata_to_trial(TAUDB_TRIAL* trial, TAUDB_SECONDARY_METADATA* secondary_metadata); extern void taudb_add_secondary_metadata_to_secondary_metadata (TAUDB_SECONDARY_METADATA* parent, TAUDB_SECONDARY_METADATA* child); extern void taudb_add_primary_metadata_to_trial(TAUDB_TRIAL* trial, TAUDB_PRIMARY_METADATA* primary_metadata); extern void taudb_add_counter_to_trial(TAUDB_TRIAL* trial, TAUDB_COUNTER* counter); extern void taudb_add_counter_value_to_trial(TAUDB_TRIAL* trial, TAUDB_COUNTER_VALUE* counter_value); extern void taudb_add_timer_to_trial(TAUDB_TRIAL* trial, TAUDB_TIMER* timer); extern void taudb_add_timer_parameter_to_trial(TAUDB_TRIAL* trial, TAUDB_TIMER_PARAMETER* timer_parameter); extern void taudb_add_timer_group_to_trial(TAUDB_TRIAL* trial, TAUDB_TIMER_GROUP* timer_group); extern void taudb_add_timer_to_timer_group(TAUDB_TIMER_GROUP* timer_group, TAUDB_TIMER* timer); extern void taudb_add_timer_callpath_to_trial(TAUDB_TRIAL* trial, TAUDB_TIMER_CALLPATH* timer_callpath); extern void taudb_add_timer_call_data_to_trial(TAUDB_TRIAL* trial, TAUDB_TIMER_CALL_DATA* timer_call_data); extern void taudb_add_timer_value_to_timer_call_data (TAUDB_TIMER_CALL_DATA* timer_call_data, TAUDB_TIMER_VALUE* timer_value); /* Profile parsers */ extern TAUDB_TRIAL* taudb_parse_tau_profiles(const char* directory_name); /* Analysis routines */ extern void taudb_compute_statistics(TAUDB_TRIAL* trial); /* iterators */ extern TAUDB_DATA_SOURCE* taudb_next_data_source_by_name_from_connection (TAUDB_DATA_SOURCE* current); extern TAUDB_DATA_SOURCE* taudb_next_data_source_by_id_from_connection (TAUDB_DATA_SOURCE* current); extern TAUDB_THREAD* taudb_next_thread_by_index_from_trial(TAUDB_THREAD* current); extern TAUDB_METRIC* taudb_next_metric_by_name_from_trial(TAUDB_METRIC* current); extern TAUDB_METRIC* taudb_next_metric_by_id_from_trial(TAUDB_METRIC* current); extern TAUDB_TIME_RANGE* taudb_next_time_range_by_id_from_trial(TAUDB_TIME_RANGE* current); extern TAUDB_TIMER* taudb_next_timer_by_name_from_trial(TAUDB_TIMER* current); extern TAUDB_TIMER* taudb_next_timer_by_id_from_trial(TAUDB_TIMER* current); extern TAUDB_TIMER* taudb_next_timer_by_name_from_group(TAUDB_TIMER* current); extern TAUDB_TIMER_GROUP* taudb_next_timer_group_by_name_from_trial (TAUDB_TIMER_GROUP* current); extern TAUDB_TIMER_GROUP* taudb_next_timer_group_by_name_from_timer (TAUDB_TIMER_GROUP* current); extern TAUDB_TIMER_PARAMETER* taudb_next_timer_parameter_by_name_from_timer (TAUDB_TIMER_PARAMETER* current); extern TAUDB_TIMER_CALLPATH* taudb_next_timer_callpath_by_name_from_trial (TAUDB_TIMER_CALLPATH* current); extern TAUDB_TIMER_CALLPATH* taudb_next_timer_callpath_by_id_from_trial (TAUDB_TIMER_CALLPATH* current); extern TAUDB_TIMER_CALL_DATA* taudb_next_timer_call_data_by_key_from_trial (TAUDB_TIMER_CALL_DATA* current); extern TAUDB_TIMER_CALL_DATA* taudb_next_timer_call_data_by_id_from_trial (TAUDB_TIMER_CALL_DATA* current); extern TAUDB_TIMER_VALUE* taudb_next_timer_value_by_metric_from_timer_call_data (TAUDB_TIMER_VALUE* current); extern TAUDB_COUNTER* taudb_next_counter_by_name_from_trial(TAUDB_COUNTER* current); extern TAUDB_COUNTER* taudb_next_counter_by_id_from_trial(TAUDB_COUNTER* current); extern TAUDB_COUNTER_VALUE* taudb_next_counter_value_by_key_from_trial(TAUDB_COUNTER_VALUE* current); extern TAUDB_PRIMARY_METADATA* taudb_next_primary_metadata_by_name_from_trial (TAUDB_PRIMARY_METADATA* current); extern TAUDB_SECONDARY_METADATA* taudb_next_secondary_metadata_by_key_from_trial (TAUDB_SECONDARY_METADATA* current); extern TAUDB_SECONDARY_METADATA* taudb_next_secondary_metadata_by_id_from_trial (TAUDB_SECONDARY_METADATA* current); #endif /* TAUDB_API_H */