2019-05-29 17:18:02 +03:00
/* SPDX-License-Identifier: GPL-2.0-only */
2014-10-23 14:45:13 +04:00
/*
* db - export . h : Support for exporting data suitable for import to a database
* Copyright ( c ) 2014 , Intel Corporation .
*/
# ifndef __PERF_DB_EXPORT_H
# define __PERF_DB_EXPORT_H
# include <linux/types.h>
2014-10-30 17:09:48 +03:00
# include <linux/list.h>
2014-10-23 14:45:13 +04:00
2019-07-21 14:23:51 +03:00
struct evsel ;
2014-10-23 14:45:13 +04:00
struct machine ;
struct thread ;
struct comm ;
struct dso ;
struct perf_sample ;
struct addr_location ;
2014-10-30 17:09:46 +03:00
struct call_return_processor ;
2016-04-28 11:19:08 +03:00
struct call_path_root ;
2014-10-30 17:09:46 +03:00
struct call_path ;
struct call_return ;
2014-10-23 14:45:13 +04:00
struct export_sample {
union perf_event * event ;
struct perf_sample * sample ;
2019-07-21 14:23:51 +03:00
struct evsel * evsel ;
2014-10-23 14:45:13 +04:00
struct addr_location * al ;
u64 db_id ;
u64 comm_db_id ;
u64 dso_db_id ;
u64 sym_db_id ;
u64 offset ; /* ip offset from symbol start */
u64 addr_dso_db_id ;
u64 addr_sym_db_id ;
u64 addr_offset ; /* addr offset from symbol start */
2016-04-28 11:19:09 +03:00
u64 call_path_id ;
2014-10-23 14:45:13 +04:00
} ;
struct db_export {
2019-07-21 14:23:51 +03:00
int ( * export_evsel ) ( struct db_export * dbe , struct evsel * evsel ) ;
2014-10-23 14:45:13 +04:00
int ( * export_machine ) ( struct db_export * dbe , struct machine * machine ) ;
int ( * export_thread ) ( struct db_export * dbe , struct thread * thread ,
u64 main_thread_db_id , struct machine * machine ) ;
2019-07-10 11:57:57 +03:00
int ( * export_comm ) ( struct db_export * dbe , struct comm * comm ,
struct thread * thread ) ;
2014-10-23 14:45:13 +04:00
int ( * export_comm_thread ) ( struct db_export * dbe , u64 db_id ,
struct comm * comm , struct thread * thread ) ;
int ( * export_dso ) ( struct db_export * dbe , struct dso * dso ,
struct machine * machine ) ;
int ( * export_symbol ) ( struct db_export * dbe , struct symbol * sym ,
struct dso * dso ) ;
2014-10-30 17:09:43 +03:00
int ( * export_branch_type ) ( struct db_export * dbe , u32 branch_type ,
const char * name ) ;
2014-10-23 14:45:13 +04:00
int ( * export_sample ) ( struct db_export * dbe , struct export_sample * es ) ;
2014-10-30 17:09:46 +03:00
int ( * export_call_path ) ( struct db_export * dbe , struct call_path * cp ) ;
int ( * export_call_return ) ( struct db_export * dbe ,
struct call_return * cr ) ;
2019-07-10 11:58:08 +03:00
int ( * export_context_switch ) ( struct db_export * dbe , u64 db_id ,
struct machine * machine ,
struct perf_sample * sample ,
u64 th_out_id , u64 comm_out_id ,
u64 th_in_id , u64 comm_in_id , int flags ) ;
2014-10-30 17:09:46 +03:00
struct call_return_processor * crp ;
2016-04-28 11:19:08 +03:00
struct call_path_root * cpr ;
2014-10-23 14:45:13 +04:00
u64 evsel_last_db_id ;
u64 machine_last_db_id ;
u64 thread_last_db_id ;
u64 comm_last_db_id ;
u64 comm_thread_last_db_id ;
u64 dso_last_db_id ;
u64 symbol_last_db_id ;
u64 sample_last_db_id ;
2014-10-30 17:09:46 +03:00
u64 call_path_last_db_id ;
u64 call_return_last_db_id ;
2019-07-10 11:58:08 +03:00
u64 context_switch_last_db_id ;
2014-10-23 14:45:13 +04:00
} ;
int db_export__init ( struct db_export * dbe ) ;
void db_export__exit ( struct db_export * dbe ) ;
2019-07-21 14:23:51 +03:00
int db_export__evsel ( struct db_export * dbe , struct evsel * evsel ) ;
2014-10-23 14:45:13 +04:00
int db_export__machine ( struct db_export * dbe , struct machine * machine ) ;
int db_export__thread ( struct db_export * dbe , struct thread * thread ,
2019-07-10 11:57:55 +03:00
struct machine * machine , struct thread * main_thread ) ;
2019-07-10 11:58:00 +03:00
int db_export__comm ( struct db_export * dbe , struct comm * comm ,
struct thread * thread ) ;
2019-07-10 11:57:51 +03:00
int db_export__exec_comm ( struct db_export * dbe , struct comm * comm ,
struct thread * main_thread ) ;
2014-10-23 14:45:13 +04:00
int db_export__comm_thread ( struct db_export * dbe , struct comm * comm ,
struct thread * thread ) ;
int db_export__dso ( struct db_export * dbe , struct dso * dso ,
struct machine * machine ) ;
int db_export__symbol ( struct db_export * dbe , struct symbol * sym ,
struct dso * dso ) ;
2014-10-30 17:09:43 +03:00
int db_export__branch_type ( struct db_export * dbe , u32 branch_type ,
const char * name ) ;
2014-10-23 14:45:13 +04:00
int db_export__sample ( struct db_export * dbe , union perf_event * event ,
2019-07-21 14:23:51 +03:00
struct perf_sample * sample , struct evsel * evsel ,
2015-04-02 17:08:30 +03:00
struct addr_location * al ) ;
2014-10-23 14:45:13 +04:00
2014-10-30 17:09:43 +03:00
int db_export__branch_types ( struct db_export * dbe ) ;
2014-10-30 17:09:46 +03:00
int db_export__call_path ( struct db_export * dbe , struct call_path * cp ) ;
2019-02-28 16:00:24 +03:00
int db_export__call_return ( struct db_export * dbe , struct call_return * cr ,
u64 * parent_db_id ) ;
2019-07-10 11:58:08 +03:00
int db_export__switch ( struct db_export * dbe , union perf_event * event ,
struct perf_sample * sample , struct machine * machine ) ;
2014-10-30 17:09:46 +03:00
2014-10-23 14:45:13 +04:00
# endif