Lines Matching refs:dbe
35 static int db_export__deferred(struct db_export *dbe) in db_export__deferred() argument
40 while (!list_empty(&dbe->deferred)) { in db_export__deferred()
41 de = list_entry(dbe->deferred.next, struct deferred_export, in db_export__deferred()
43 err = dbe->export_comm(dbe, de->comm); in db_export__deferred()
53 static void db_export__free_deferred(struct db_export *dbe) in db_export__free_deferred() argument
57 while (!list_empty(&dbe->deferred)) { in db_export__free_deferred()
58 de = list_entry(dbe->deferred.next, struct deferred_export, in db_export__free_deferred()
65 static int db_export__defer_comm(struct db_export *dbe, struct comm *comm) in db_export__defer_comm() argument
74 list_add_tail(&de->node, &dbe->deferred); in db_export__defer_comm()
79 int db_export__init(struct db_export *dbe) in db_export__init() argument
81 memset(dbe, 0, sizeof(struct db_export)); in db_export__init()
82 INIT_LIST_HEAD(&dbe->deferred); in db_export__init()
86 int db_export__flush(struct db_export *dbe) in db_export__flush() argument
88 return db_export__deferred(dbe); in db_export__flush()
91 void db_export__exit(struct db_export *dbe) in db_export__exit() argument
93 db_export__free_deferred(dbe); in db_export__exit()
94 call_return_processor__free(dbe->crp); in db_export__exit()
95 dbe->crp = NULL; in db_export__exit()
98 int db_export__evsel(struct db_export *dbe, struct perf_evsel *evsel) in db_export__evsel() argument
103 evsel->db_id = ++dbe->evsel_last_db_id; in db_export__evsel()
105 if (dbe->export_evsel) in db_export__evsel()
106 return dbe->export_evsel(dbe, evsel); in db_export__evsel()
111 int db_export__machine(struct db_export *dbe, struct machine *machine) in db_export__machine() argument
116 machine->db_id = ++dbe->machine_last_db_id; in db_export__machine()
118 if (dbe->export_machine) in db_export__machine()
119 return dbe->export_machine(dbe, machine); in db_export__machine()
124 int db_export__thread(struct db_export *dbe, struct thread *thread, in db_export__thread() argument
134 thread->db_id = ++dbe->thread_last_db_id; in db_export__thread()
145 err = db_export__thread(dbe, main_thread, machine, in db_export__thread()
150 err = db_export__comm_thread(dbe, comm, thread); in db_export__thread()
160 if (dbe->export_thread) in db_export__thread()
161 return dbe->export_thread(dbe, thread, main_thread_db_id, in db_export__thread()
171 int db_export__comm(struct db_export *dbe, struct comm *comm, in db_export__comm() argument
179 comm->db_id = ++dbe->comm_last_db_id; in db_export__comm()
181 if (dbe->export_comm) { in db_export__comm()
183 err = dbe->export_comm(dbe, comm); in db_export__comm()
185 err = db_export__defer_comm(dbe, comm); in db_export__comm()
190 return db_export__comm_thread(dbe, comm, main_thread); in db_export__comm()
193 int db_export__comm_thread(struct db_export *dbe, struct comm *comm, in db_export__comm_thread() argument
198 db_id = ++dbe->comm_thread_last_db_id; in db_export__comm_thread()
200 if (dbe->export_comm_thread) in db_export__comm_thread()
201 return dbe->export_comm_thread(dbe, db_id, comm, thread); in db_export__comm_thread()
206 int db_export__dso(struct db_export *dbe, struct dso *dso, in db_export__dso() argument
212 dso->db_id = ++dbe->dso_last_db_id; in db_export__dso()
214 if (dbe->export_dso) in db_export__dso()
215 return dbe->export_dso(dbe, dso, machine); in db_export__dso()
220 int db_export__symbol(struct db_export *dbe, struct symbol *sym, in db_export__symbol() argument
228 *sym_db_id = ++dbe->symbol_last_db_id; in db_export__symbol()
230 if (dbe->export_symbol) in db_export__symbol()
231 return dbe->export_symbol(dbe, sym, dso); in db_export__symbol()
236 static int db_ids_from_al(struct db_export *dbe, struct addr_location *al, in db_ids_from_al() argument
244 err = db_export__dso(dbe, dso, al->machine); in db_ids_from_al()
258 err = db_export__symbol(dbe, al->sym, dso); in db_ids_from_al()
269 static struct call_path *call_path_from_sample(struct db_export *dbe, in call_path_from_sample() argument
276 struct call_path *current = &dbe->cpr->call_path; in call_path_from_sample()
320 db_ids_from_al(dbe, &al, &dso_db_id, &sym_db_id, &offset); in call_path_from_sample()
323 current = call_path__findnew(dbe->cpr, current, in call_path_from_sample()
333 if (current == &dbe->cpr->call_path) { in call_path_from_sample()
341 int db_export__branch_type(struct db_export *dbe, u32 branch_type, in db_export__branch_type() argument
344 if (dbe->export_branch_type) in db_export__branch_type()
345 return dbe->export_branch_type(dbe, branch_type, name); in db_export__branch_type()
350 int db_export__sample(struct db_export *dbe, union perf_event *event, in db_export__sample() argument
365 err = db_export__evsel(dbe, evsel); in db_export__sample()
369 err = db_export__machine(dbe, al->machine); in db_export__sample()
377 err = db_export__thread(dbe, thread, al->machine, comm); in db_export__sample()
382 err = db_export__comm(dbe, comm, main_thread); in db_export__sample()
388 es.db_id = ++dbe->sample_last_db_id; in db_export__sample()
390 err = db_ids_from_al(dbe, al, &es.dso_db_id, &es.sym_db_id, &es.offset); in db_export__sample()
394 if (dbe->cpr) { in db_export__sample()
395 struct call_path *cp = call_path_from_sample(dbe, al->machine, in db_export__sample()
399 db_export__call_path(dbe, cp); in db_export__sample()
409 err = db_ids_from_al(dbe, &addr_al, &es.addr_dso_db_id, in db_export__sample()
413 if (dbe->crp) { in db_export__sample()
416 dbe->crp); in db_export__sample()
422 if (dbe->export_sample) in db_export__sample()
423 err = dbe->export_sample(dbe, &es); in db_export__sample()
456 int db_export__branch_types(struct db_export *dbe) in db_export__branch_types() argument
461 err = db_export__branch_type(dbe, branch_types[i].branch_type, in db_export__branch_types()
469 int db_export__call_path(struct db_export *dbe, struct call_path *cp) in db_export__call_path() argument
477 err = db_export__call_path(dbe, cp->parent); in db_export__call_path()
482 cp->db_id = ++dbe->call_path_last_db_id; in db_export__call_path()
484 if (dbe->export_call_path) in db_export__call_path()
485 return dbe->export_call_path(dbe, cp); in db_export__call_path()
490 int db_export__call_return(struct db_export *dbe, struct call_return *cr) in db_export__call_return() argument
497 err = db_export__call_path(dbe, cr->cp); in db_export__call_return()
501 cr->db_id = ++dbe->call_return_last_db_id; in db_export__call_return()
503 if (dbe->export_call_return) in db_export__call_return()
504 return dbe->export_call_return(dbe, cr); in db_export__call_return()