454c407ec1
Currently, perf 'live mode' writes build-ids at the end of the session, which isn't actually useful for processing live mode events. What would be better would be to have the build-ids sent before any of the samples that reference them, which can be done by processing the event stream and retrieving the build-ids on the first hit. Doing that in perf-record itself, however, is off-limits. This patch introduces perf-inject, which does the same job while leaving perf-record untouched. Normal mode perf still records the build-ids at the end of the session as it should, but for live mode, perf-inject can be injected in between the record and report steps e.g.: perf record -o - ./hackbench 10 | perf inject -v -b | perf report -v -i - perf-inject reads a perf-record event stream and repipes it to stdout. At any point the processing code can inject other events into the event stream - in this case build-ids (-b option) are read and injected as needed into the event stream. Build-ids are just the first user of perf-inject - potentially anything that needs userspace processing to augment the trace stream with additional information could make use of this facility. Cc: Ingo Molnar <mingo@elte.hu> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Frédéric Weisbecker <fweisbec@gmail.com> LKML-Reference: <1272696080-16435-3-git-send-email-tzanussi@gmail.com> Signed-off-by: Tom Zanussi <tzanussi@gmail.com> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
40 lines
1.9 KiB
C
40 lines
1.9 KiB
C
#ifndef BUILTIN_H
|
|
#define BUILTIN_H
|
|
|
|
#include "util/util.h"
|
|
#include "util/strbuf.h"
|
|
|
|
extern const char perf_version_string[];
|
|
extern const char perf_usage_string[];
|
|
extern const char perf_more_info_string[];
|
|
|
|
extern void list_common_cmds_help(void);
|
|
extern const char *help_unknown_cmd(const char *cmd);
|
|
extern void prune_packed_objects(int);
|
|
extern int read_line_with_nul(char *buf, int size, FILE *file);
|
|
extern int check_pager_config(const char *cmd);
|
|
|
|
extern int cmd_annotate(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_bench(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_buildid_cache(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_buildid_list(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_diff(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_help(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_sched(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_list(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_record(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_report(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_stat(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_timechart(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_top(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_trace(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_version(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_probe(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_kmem(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_lock(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_kvm(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_test(int argc, const char **argv, const char *prefix);
|
|
extern int cmd_inject(int argc, const char **argv, const char *prefix);
|
|
|
|
#endif
|