![Adrian Hunter](/assets/img/avatar_default.png)
This patch introduces an abstraction for exporting sample data in a database-friendly way. The abstraction does not implement the actual output. A subsequent patch takes this facility into use for extending the script interface. The abstraction is needed because static data like symbols, dsos, comms etc need to be exported only once. That means allocating them a unique identifier and recording it on each structure. The member 'db_id' is used for that. 'db_id' is just a 64-bit sequence number. Exporting centres around the db_export__sample() function which exports the associated data structures if they have not yet been allocated a db_id. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Namhyung Kim <namhyung@gmail.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/r/1414061124-26830-6-git-send-email-adrian.hunter@intel.com [ committer note: Stash db_id using symbol_conf.priv_size + symbol__priv() and foo->priv areas ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
28 lines
561 B
C
28 lines
561 B
C
#ifndef __PERF_COMM_H
|
|
#define __PERF_COMM_H
|
|
|
|
#include "../perf.h"
|
|
#include <linux/rbtree.h>
|
|
#include <linux/list.h>
|
|
|
|
struct comm_str;
|
|
|
|
struct comm {
|
|
struct comm_str *comm_str;
|
|
u64 start;
|
|
struct list_head list;
|
|
bool exec;
|
|
union { /* Tool specific area */
|
|
void *priv;
|
|
u64 db_id;
|
|
};
|
|
};
|
|
|
|
void comm__free(struct comm *comm);
|
|
struct comm *comm__new(const char *str, u64 timestamp, bool exec);
|
|
const char *comm__str(const struct comm *comm);
|
|
int comm__override(struct comm *comm, const char *str, u64 timestamp,
|
|
bool exec);
|
|
|
|
#endif /* __PERF_COMM_H */
|