Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull perf updates from Ingo Molnar: "The main changes in this cycle on the kernel side: - rework kprobes blacklist handling (Masami Hiramatsu) - misc cleanups on the tooling side these areas were the main focus: - 'perf trace' enhancements (Arnaldo Carvalho de Melo) - 'perf bench' enhancements (Davidlohr Bueso) - 'perf record' enhancements (Alexey Budankov) - 'perf annotate' enhancements (Jin Yao) - 'perf top' enhancements (Jiri Olsa) - Intel hw tracing enhancements (Adrian Hunter) - ARM hw tracing enhancements (Leo Yan, Mathieu Poirier) - ... plus lots of other enhancements, cleanups and fixes" * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (171 commits) tools uapi asm: Update asm-generic/unistd.h copy perf symbols: Relax checks on perf-PID.map ownership perf trace: Wire up the fadvise 'advice' table generator perf beauty: Add generator for fadvise64's 'advice' arg constants tools headers uapi: Grab a copy of fadvise.h perf beauty mmap: Print mmap's 'offset' arg in hexadecimal perf beauty mmap: Print PROT_READ before PROT_EXEC to match strace output perf trace beauty: Beautify arch_prctl()'s arguments perf trace: When showing string prefixes show prefix + ??? for unknown entries perf trace: Move strarrays to beauty.h for further reuse perf beauty: Wire up the x86_arch prctl code table generator perf beauty: Add a string table generator for x86's 'arch_prctl' codes tools include arch: Grab a copy of x86's prctl.h perf trace: Show NULL when syscall pointer args are 0 perf trace: Enclose the errno strings with () perf augmented_raw_syscalls: Copy 'access' arg as well perf trace: Add alignment spaces after the closing parens perf trace beauty: Print O_RDONLY when (flags & O_ACCMODE) == 0 perf trace: Allow asking for not suppressing common string prefixes perf trace: Add a prefix member to the strarray class ...
This commit is contained in:
@@ -36,8 +36,6 @@ endif
|
||||
CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
|
||||
|
||||
CFLAGS += -I$(srctree)/tools/include/
|
||||
CFLAGS += -I$(srctree)/include/uapi
|
||||
CFLAGS += -I$(srctree)/include
|
||||
|
||||
SUBCMD_IN := $(OUTPUT)libsubcmd-in.o
|
||||
|
||||
|
@@ -71,7 +71,7 @@ typedef int parse_opt_cb(const struct option *, const char *arg, int unset);
|
||||
*
|
||||
* `argh`::
|
||||
* token to explain the kind of argument this option wants. Keep it
|
||||
* homogenous across the repository.
|
||||
* homogeneous across the repository.
|
||||
*
|
||||
* `help`::
|
||||
* the short help associated to what the option does.
|
||||
@@ -80,7 +80,7 @@ typedef int parse_opt_cb(const struct option *, const char *arg, int unset);
|
||||
*
|
||||
* `flags`::
|
||||
* mask of parse_opt_option_flags.
|
||||
* PARSE_OPT_OPTARG: says that the argument is optionnal (not for BOOLEANs)
|
||||
* PARSE_OPT_OPTARG: says that the argument is optional (not for BOOLEANs)
|
||||
* PARSE_OPT_NOARG: says that this option takes no argument, for CALLBACKs
|
||||
* PARSE_OPT_NONEG: says that this option cannot be negated
|
||||
* PARSE_OPT_HIDDEN this option is skipped in the default usage, showed in
|
||||
|
@@ -25,6 +25,7 @@ endef
|
||||
$(call allow-override,CC,$(CROSS_COMPILE)gcc)
|
||||
$(call allow-override,AR,$(CROSS_COMPILE)ar)
|
||||
$(call allow-override,NM,$(CROSS_COMPILE)nm)
|
||||
$(call allow-override,PKG_CONFIG,pkg-config)
|
||||
|
||||
EXT = -std=gnu99
|
||||
INSTALL = install
|
||||
@@ -47,6 +48,8 @@ prefix ?= /usr/local
|
||||
libdir = $(prefix)/$(libdir_relative)
|
||||
man_dir = $(prefix)/share/man
|
||||
man_dir_SQ = '$(subst ','\'',$(man_dir))'
|
||||
pkgconfig_dir ?= $(word 1,$(shell $(PKG_CONFIG) \
|
||||
--variable pc_path pkg-config | tr ":" " "))
|
||||
|
||||
export man_dir man_dir_SQ INSTALL
|
||||
export DESTDIR DESTDIR_SQ
|
||||
@@ -174,7 +177,7 @@ $(TE_IN): force
|
||||
$(Q)$(MAKE) $(build)=libtraceevent
|
||||
|
||||
$(OUTPUT)libtraceevent.so.$(EVENT_PARSE_VERSION): $(TE_IN)
|
||||
$(QUIET_LINK)$(CC) --shared $^ -Wl,-soname,libtraceevent.so.$(EP_VERSION) -o $@
|
||||
$(QUIET_LINK)$(CC) --shared $(LDFLAGS) $^ -Wl,-soname,libtraceevent.so.$(EP_VERSION) -o $@
|
||||
@ln -sf $(@F) $(OUTPUT)libtraceevent.so
|
||||
@ln -sf $(@F) $(OUTPUT)libtraceevent.so.$(EP_VERSION)
|
||||
|
||||
@@ -193,7 +196,7 @@ $(PLUGINS_IN): force
|
||||
$(Q)$(MAKE) $(build)=$(plugin_obj)
|
||||
|
||||
$(OUTPUT)%.so: $(OUTPUT)%-in.o
|
||||
$(QUIET_LINK)$(CC) $(CFLAGS) -shared -nostartfiles -o $@ $^
|
||||
$(QUIET_LINK)$(CC) $(CFLAGS) -shared $(LDFLAGS) -nostartfiles -o $@ $^
|
||||
|
||||
define make_version.h
|
||||
(echo '/* This file is automatically generated. Do not modify. */'; \
|
||||
@@ -270,7 +273,19 @@ define do_generate_dynamic_list_file
|
||||
fi
|
||||
endef
|
||||
|
||||
install_lib: all_cmd install_plugins
|
||||
PKG_CONFIG_FILE = libtraceevent.pc
|
||||
define do_install_pkgconfig_file
|
||||
if [ -n "${pkgconfig_dir}" ]; then \
|
||||
cp -f ${PKG_CONFIG_FILE}.template ${PKG_CONFIG_FILE}; \
|
||||
sed -i "s|INSTALL_PREFIX|${1}|g" ${PKG_CONFIG_FILE}; \
|
||||
sed -i "s|LIB_VERSION|${EVENT_PARSE_VERSION}|g" ${PKG_CONFIG_FILE}; \
|
||||
$(call do_install,$(PKG_CONFIG_FILE),$(pkgconfig_dir),644); \
|
||||
else \
|
||||
(echo Failed to locate pkg-config directory) 1>&2; \
|
||||
fi
|
||||
endef
|
||||
|
||||
install_lib: all_cmd install_plugins install_headers install_pkgconfig
|
||||
$(call QUIET_INSTALL, $(LIB_TARGET)) \
|
||||
$(call do_install_mkdir,$(libdir_SQ)); \
|
||||
cp -fpR $(LIB_INSTALL) $(DESTDIR)$(libdir_SQ)
|
||||
@@ -279,18 +294,24 @@ install_plugins: $(PLUGINS)
|
||||
$(call QUIET_INSTALL, trace_plugins) \
|
||||
$(call do_install_plugins, $(PLUGINS))
|
||||
|
||||
install_pkgconfig:
|
||||
$(call QUIET_INSTALL, $(PKG_CONFIG_FILE)) \
|
||||
$(call do_install_pkgconfig_file,$(prefix))
|
||||
|
||||
install_headers:
|
||||
$(call QUIET_INSTALL, headers) \
|
||||
$(call do_install,event-parse.h,$(prefix)/include/traceevent,644); \
|
||||
$(call do_install,event-utils.h,$(prefix)/include/traceevent,644); \
|
||||
$(call do_install,trace-seq.h,$(prefix)/include/traceevent,644); \
|
||||
$(call do_install,kbuffer.h,$(prefix)/include/traceevent,644)
|
||||
|
||||
install: install_lib
|
||||
|
||||
clean:
|
||||
$(call QUIET_CLEAN, libtraceevent) \
|
||||
$(RM) *.o *~ $(TARGETS) *.a *.so $(VERSION_FILES) .*.d .*.cmd \
|
||||
$(RM) TRACEEVENT-CFLAGS tags TAGS
|
||||
$(RM) *.o *~ $(TARGETS) *.a *.so $(VERSION_FILES) .*.d .*.cmd; \
|
||||
$(RM) TRACEEVENT-CFLAGS tags TAGS; \
|
||||
$(RM) $(PKG_CONFIG_FILE)
|
||||
|
||||
PHONY += force plugins
|
||||
force:
|
||||
|
@@ -15,7 +15,7 @@
|
||||
* This returns pointer to the first element of the events array
|
||||
* If @tep is NULL, NULL is returned.
|
||||
*/
|
||||
struct tep_event_format *tep_get_first_event(struct tep_handle *tep)
|
||||
struct tep_event *tep_get_first_event(struct tep_handle *tep)
|
||||
{
|
||||
if (tep && tep->events)
|
||||
return tep->events[0];
|
||||
@@ -51,7 +51,7 @@ void tep_set_flag(struct tep_handle *tep, int flag)
|
||||
tep->flags |= flag;
|
||||
}
|
||||
|
||||
unsigned short __tep_data2host2(struct tep_handle *pevent, unsigned short data)
|
||||
unsigned short tep_data2host2(struct tep_handle *pevent, unsigned short data)
|
||||
{
|
||||
unsigned short swap;
|
||||
|
||||
@@ -64,7 +64,7 @@ unsigned short __tep_data2host2(struct tep_handle *pevent, unsigned short data)
|
||||
return swap;
|
||||
}
|
||||
|
||||
unsigned int __tep_data2host4(struct tep_handle *pevent, unsigned int data)
|
||||
unsigned int tep_data2host4(struct tep_handle *pevent, unsigned int data)
|
||||
{
|
||||
unsigned int swap;
|
||||
|
||||
@@ -80,7 +80,7 @@ unsigned int __tep_data2host4(struct tep_handle *pevent, unsigned int data)
|
||||
}
|
||||
|
||||
unsigned long long
|
||||
__tep_data2host8(struct tep_handle *pevent, unsigned long long data)
|
||||
tep_data2host8(struct tep_handle *pevent, unsigned long long data)
|
||||
{
|
||||
unsigned long long swap;
|
||||
|
||||
|
@@ -50,9 +50,9 @@ struct tep_handle {
|
||||
unsigned int printk_count;
|
||||
|
||||
|
||||
struct tep_event_format **events;
|
||||
struct tep_event **events;
|
||||
int nr_events;
|
||||
struct tep_event_format **sort_events;
|
||||
struct tep_event **sort_events;
|
||||
enum tep_event_sort_type last_type;
|
||||
|
||||
int type_offset;
|
||||
@@ -84,9 +84,16 @@ struct tep_handle {
|
||||
struct tep_function_handler *func_handlers;
|
||||
|
||||
/* cache */
|
||||
struct tep_event_format *last_event;
|
||||
struct tep_event *last_event;
|
||||
|
||||
char *trace_clock;
|
||||
};
|
||||
|
||||
void tep_free_event(struct tep_event *event);
|
||||
void tep_free_format_field(struct tep_format_field *field);
|
||||
|
||||
unsigned short tep_data2host2(struct tep_handle *pevent, unsigned short data);
|
||||
unsigned int tep_data2host4(struct tep_handle *pevent, unsigned int data);
|
||||
unsigned long long tep_data2host8(struct tep_handle *pevent, unsigned long long data);
|
||||
|
||||
#endif /* _PARSE_EVENTS_INT_H */
|
||||
|
@@ -96,7 +96,7 @@ struct tep_function_handler {
|
||||
|
||||
static unsigned long long
|
||||
process_defined_func(struct trace_seq *s, void *data, int size,
|
||||
struct tep_event_format *event, struct tep_print_arg *arg);
|
||||
struct tep_event *event, struct tep_print_arg *arg);
|
||||
|
||||
static void free_func_handle(struct tep_function_handler *func);
|
||||
|
||||
@@ -739,16 +739,16 @@ void tep_print_printk(struct tep_handle *pevent)
|
||||
}
|
||||
}
|
||||
|
||||
static struct tep_event_format *alloc_event(void)
|
||||
static struct tep_event *alloc_event(void)
|
||||
{
|
||||
return calloc(1, sizeof(struct tep_event_format));
|
||||
return calloc(1, sizeof(struct tep_event));
|
||||
}
|
||||
|
||||
static int add_event(struct tep_handle *pevent, struct tep_event_format *event)
|
||||
static int add_event(struct tep_handle *pevent, struct tep_event *event)
|
||||
{
|
||||
int i;
|
||||
struct tep_event_format **events = realloc(pevent->events, sizeof(event) *
|
||||
(pevent->nr_events + 1));
|
||||
struct tep_event **events = realloc(pevent->events, sizeof(event) *
|
||||
(pevent->nr_events + 1));
|
||||
if (!events)
|
||||
return -1;
|
||||
|
||||
@@ -1145,7 +1145,7 @@ static enum tep_event_type read_token(char **tok)
|
||||
}
|
||||
|
||||
/**
|
||||
* tep_read_token - access to utilites to use the pevent parser
|
||||
* tep_read_token - access to utilities to use the pevent parser
|
||||
* @tok: The token to return
|
||||
*
|
||||
* This will parse tokens from the string given by
|
||||
@@ -1355,7 +1355,7 @@ static unsigned int type_size(const char *name)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int event_read_fields(struct tep_event_format *event, struct tep_format_field **fields)
|
||||
static int event_read_fields(struct tep_event *event, struct tep_format_field **fields)
|
||||
{
|
||||
struct tep_format_field *field = NULL;
|
||||
enum tep_event_type type;
|
||||
@@ -1642,7 +1642,7 @@ fail_expect:
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int event_read_format(struct tep_event_format *event)
|
||||
static int event_read_format(struct tep_event *event)
|
||||
{
|
||||
char *token;
|
||||
int ret;
|
||||
@@ -1675,11 +1675,11 @@ static int event_read_format(struct tep_event_format *event)
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_arg_token(struct tep_event_format *event, struct tep_print_arg *arg,
|
||||
process_arg_token(struct tep_event *event, struct tep_print_arg *arg,
|
||||
char **tok, enum tep_event_type type);
|
||||
|
||||
static enum tep_event_type
|
||||
process_arg(struct tep_event_format *event, struct tep_print_arg *arg, char **tok)
|
||||
process_arg(struct tep_event *event, struct tep_print_arg *arg, char **tok)
|
||||
{
|
||||
enum tep_event_type type;
|
||||
char *token;
|
||||
@@ -1691,14 +1691,14 @@ process_arg(struct tep_event_format *event, struct tep_print_arg *arg, char **to
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_op(struct tep_event_format *event, struct tep_print_arg *arg, char **tok);
|
||||
process_op(struct tep_event *event, struct tep_print_arg *arg, char **tok);
|
||||
|
||||
/*
|
||||
* For __print_symbolic() and __print_flags, we need to completely
|
||||
* evaluate the first argument, which defines what to print next.
|
||||
*/
|
||||
static enum tep_event_type
|
||||
process_field_arg(struct tep_event_format *event, struct tep_print_arg *arg, char **tok)
|
||||
process_field_arg(struct tep_event *event, struct tep_print_arg *arg, char **tok)
|
||||
{
|
||||
enum tep_event_type type;
|
||||
|
||||
@@ -1712,7 +1712,7 @@ process_field_arg(struct tep_event_format *event, struct tep_print_arg *arg, cha
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_cond(struct tep_event_format *event, struct tep_print_arg *top, char **tok)
|
||||
process_cond(struct tep_event *event, struct tep_print_arg *top, char **tok)
|
||||
{
|
||||
struct tep_print_arg *arg, *left, *right;
|
||||
enum tep_event_type type;
|
||||
@@ -1768,7 +1768,7 @@ out_free:
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_array(struct tep_event_format *event, struct tep_print_arg *top, char **tok)
|
||||
process_array(struct tep_event *event, struct tep_print_arg *top, char **tok)
|
||||
{
|
||||
struct tep_print_arg *arg;
|
||||
enum tep_event_type type;
|
||||
@@ -1870,7 +1870,7 @@ static int set_op_prio(struct tep_print_arg *arg)
|
||||
|
||||
/* Note, *tok does not get freed, but will most likely be saved */
|
||||
static enum tep_event_type
|
||||
process_op(struct tep_event_format *event, struct tep_print_arg *arg, char **tok)
|
||||
process_op(struct tep_event *event, struct tep_print_arg *arg, char **tok)
|
||||
{
|
||||
struct tep_print_arg *left, *right = NULL;
|
||||
enum tep_event_type type;
|
||||
@@ -2071,7 +2071,7 @@ out_free:
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_entry(struct tep_event_format *event __maybe_unused, struct tep_print_arg *arg,
|
||||
process_entry(struct tep_event *event __maybe_unused, struct tep_print_arg *arg,
|
||||
char **tok)
|
||||
{
|
||||
enum tep_event_type type;
|
||||
@@ -2110,7 +2110,7 @@ process_entry(struct tep_event_format *event __maybe_unused, struct tep_print_ar
|
||||
return TEP_EVENT_ERROR;
|
||||
}
|
||||
|
||||
static int alloc_and_process_delim(struct tep_event_format *event, char *next_token,
|
||||
static int alloc_and_process_delim(struct tep_event *event, char *next_token,
|
||||
struct tep_print_arg **print_arg)
|
||||
{
|
||||
struct tep_print_arg *field;
|
||||
@@ -2445,7 +2445,7 @@ static char *arg_eval (struct tep_print_arg *arg)
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_fields(struct tep_event_format *event, struct tep_print_flag_sym **list, char **tok)
|
||||
process_fields(struct tep_event *event, struct tep_print_flag_sym **list, char **tok)
|
||||
{
|
||||
enum tep_event_type type;
|
||||
struct tep_print_arg *arg = NULL;
|
||||
@@ -2526,7 +2526,7 @@ out_free:
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_flags(struct tep_event_format *event, struct tep_print_arg *arg, char **tok)
|
||||
process_flags(struct tep_event *event, struct tep_print_arg *arg, char **tok)
|
||||
{
|
||||
struct tep_print_arg *field;
|
||||
enum tep_event_type type;
|
||||
@@ -2579,7 +2579,7 @@ out_free:
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_symbols(struct tep_event_format *event, struct tep_print_arg *arg, char **tok)
|
||||
process_symbols(struct tep_event *event, struct tep_print_arg *arg, char **tok)
|
||||
{
|
||||
struct tep_print_arg *field;
|
||||
enum tep_event_type type;
|
||||
@@ -2618,7 +2618,7 @@ out_free:
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_hex_common(struct tep_event_format *event, struct tep_print_arg *arg,
|
||||
process_hex_common(struct tep_event *event, struct tep_print_arg *arg,
|
||||
char **tok, enum tep_print_arg_type type)
|
||||
{
|
||||
memset(arg, 0, sizeof(*arg));
|
||||
@@ -2641,20 +2641,20 @@ out:
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_hex(struct tep_event_format *event, struct tep_print_arg *arg, char **tok)
|
||||
process_hex(struct tep_event *event, struct tep_print_arg *arg, char **tok)
|
||||
{
|
||||
return process_hex_common(event, arg, tok, TEP_PRINT_HEX);
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_hex_str(struct tep_event_format *event, struct tep_print_arg *arg,
|
||||
process_hex_str(struct tep_event *event, struct tep_print_arg *arg,
|
||||
char **tok)
|
||||
{
|
||||
return process_hex_common(event, arg, tok, TEP_PRINT_HEX_STR);
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_int_array(struct tep_event_format *event, struct tep_print_arg *arg, char **tok)
|
||||
process_int_array(struct tep_event *event, struct tep_print_arg *arg, char **tok)
|
||||
{
|
||||
memset(arg, 0, sizeof(*arg));
|
||||
arg->type = TEP_PRINT_INT_ARRAY;
|
||||
@@ -2682,7 +2682,7 @@ out:
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_dynamic_array(struct tep_event_format *event, struct tep_print_arg *arg, char **tok)
|
||||
process_dynamic_array(struct tep_event *event, struct tep_print_arg *arg, char **tok)
|
||||
{
|
||||
struct tep_format_field *field;
|
||||
enum tep_event_type type;
|
||||
@@ -2746,7 +2746,7 @@ process_dynamic_array(struct tep_event_format *event, struct tep_print_arg *arg,
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_dynamic_array_len(struct tep_event_format *event, struct tep_print_arg *arg,
|
||||
process_dynamic_array_len(struct tep_event *event, struct tep_print_arg *arg,
|
||||
char **tok)
|
||||
{
|
||||
struct tep_format_field *field;
|
||||
@@ -2782,7 +2782,7 @@ process_dynamic_array_len(struct tep_event_format *event, struct tep_print_arg *
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_paren(struct tep_event_format *event, struct tep_print_arg *arg, char **tok)
|
||||
process_paren(struct tep_event *event, struct tep_print_arg *arg, char **tok)
|
||||
{
|
||||
struct tep_print_arg *item_arg;
|
||||
enum tep_event_type type;
|
||||
@@ -2845,7 +2845,7 @@ process_paren(struct tep_event_format *event, struct tep_print_arg *arg, char **
|
||||
|
||||
|
||||
static enum tep_event_type
|
||||
process_str(struct tep_event_format *event __maybe_unused, struct tep_print_arg *arg,
|
||||
process_str(struct tep_event *event __maybe_unused, struct tep_print_arg *arg,
|
||||
char **tok)
|
||||
{
|
||||
enum tep_event_type type;
|
||||
@@ -2874,7 +2874,7 @@ process_str(struct tep_event_format *event __maybe_unused, struct tep_print_arg
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_bitmask(struct tep_event_format *event __maybe_unused, struct tep_print_arg *arg,
|
||||
process_bitmask(struct tep_event *event __maybe_unused, struct tep_print_arg *arg,
|
||||
char **tok)
|
||||
{
|
||||
enum tep_event_type type;
|
||||
@@ -2935,7 +2935,7 @@ static void remove_func_handler(struct tep_handle *pevent, char *func_name)
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_func_handler(struct tep_event_format *event, struct tep_function_handler *func,
|
||||
process_func_handler(struct tep_event *event, struct tep_function_handler *func,
|
||||
struct tep_print_arg *arg, char **tok)
|
||||
{
|
||||
struct tep_print_arg **next_arg;
|
||||
@@ -2993,7 +2993,7 @@ err:
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_function(struct tep_event_format *event, struct tep_print_arg *arg,
|
||||
process_function(struct tep_event *event, struct tep_print_arg *arg,
|
||||
char *token, char **tok)
|
||||
{
|
||||
struct tep_function_handler *func;
|
||||
@@ -3049,7 +3049,7 @@ process_function(struct tep_event_format *event, struct tep_print_arg *arg,
|
||||
}
|
||||
|
||||
static enum tep_event_type
|
||||
process_arg_token(struct tep_event_format *event, struct tep_print_arg *arg,
|
||||
process_arg_token(struct tep_event *event, struct tep_print_arg *arg,
|
||||
char **tok, enum tep_event_type type)
|
||||
{
|
||||
char *token;
|
||||
@@ -3137,7 +3137,7 @@ process_arg_token(struct tep_event_format *event, struct tep_print_arg *arg,
|
||||
return type;
|
||||
}
|
||||
|
||||
static int event_read_print_args(struct tep_event_format *event, struct tep_print_arg **list)
|
||||
static int event_read_print_args(struct tep_event *event, struct tep_print_arg **list)
|
||||
{
|
||||
enum tep_event_type type = TEP_EVENT_ERROR;
|
||||
struct tep_print_arg *arg;
|
||||
@@ -3195,7 +3195,7 @@ static int event_read_print_args(struct tep_event_format *event, struct tep_prin
|
||||
return args;
|
||||
}
|
||||
|
||||
static int event_read_print(struct tep_event_format *event)
|
||||
static int event_read_print(struct tep_event *event)
|
||||
{
|
||||
enum tep_event_type type;
|
||||
char *token;
|
||||
@@ -3258,10 +3258,10 @@ static int event_read_print(struct tep_event_format *event)
|
||||
* @name: the name of the common field to return
|
||||
*
|
||||
* Returns a common field from the event by the given @name.
|
||||
* This only searchs the common fields and not all field.
|
||||
* This only searches the common fields and not all field.
|
||||
*/
|
||||
struct tep_format_field *
|
||||
tep_find_common_field(struct tep_event_format *event, const char *name)
|
||||
tep_find_common_field(struct tep_event *event, const char *name)
|
||||
{
|
||||
struct tep_format_field *format;
|
||||
|
||||
@@ -3283,7 +3283,7 @@ tep_find_common_field(struct tep_event_format *event, const char *name)
|
||||
* This does not search common fields.
|
||||
*/
|
||||
struct tep_format_field *
|
||||
tep_find_field(struct tep_event_format *event, const char *name)
|
||||
tep_find_field(struct tep_event *event, const char *name)
|
||||
{
|
||||
struct tep_format_field *format;
|
||||
|
||||
@@ -3302,11 +3302,11 @@ tep_find_field(struct tep_event_format *event, const char *name)
|
||||
* @name: the name of the field
|
||||
*
|
||||
* Returns a field by the given @name.
|
||||
* This searchs the common field names first, then
|
||||
* This searches the common field names first, then
|
||||
* the non-common ones if a common one was not found.
|
||||
*/
|
||||
struct tep_format_field *
|
||||
tep_find_any_field(struct tep_event_format *event, const char *name)
|
||||
tep_find_any_field(struct tep_event *event, const char *name)
|
||||
{
|
||||
struct tep_format_field *format;
|
||||
|
||||
@@ -3328,15 +3328,18 @@ tep_find_any_field(struct tep_event_format *event, const char *name)
|
||||
unsigned long long tep_read_number(struct tep_handle *pevent,
|
||||
const void *ptr, int size)
|
||||
{
|
||||
unsigned long long val;
|
||||
|
||||
switch (size) {
|
||||
case 1:
|
||||
return *(unsigned char *)ptr;
|
||||
case 2:
|
||||
return tep_data2host2(pevent, ptr);
|
||||
return tep_data2host2(pevent, *(unsigned short *)ptr);
|
||||
case 4:
|
||||
return tep_data2host4(pevent, ptr);
|
||||
return tep_data2host4(pevent, *(unsigned int *)ptr);
|
||||
case 8:
|
||||
return tep_data2host8(pevent, ptr);
|
||||
memcpy(&val, (ptr), sizeof(unsigned long long));
|
||||
return tep_data2host8(pevent, val);
|
||||
default:
|
||||
/* BUG! */
|
||||
return 0;
|
||||
@@ -3375,7 +3378,7 @@ int tep_read_number_field(struct tep_format_field *field, const void *data,
|
||||
static int get_common_info(struct tep_handle *pevent,
|
||||
const char *type, int *offset, int *size)
|
||||
{
|
||||
struct tep_event_format *event;
|
||||
struct tep_event *event;
|
||||
struct tep_format_field *field;
|
||||
|
||||
/*
|
||||
@@ -3462,11 +3465,11 @@ static int events_id_cmp(const void *a, const void *b);
|
||||
*
|
||||
* Returns an event that has a given @id.
|
||||
*/
|
||||
struct tep_event_format *tep_find_event(struct tep_handle *pevent, int id)
|
||||
struct tep_event *tep_find_event(struct tep_handle *pevent, int id)
|
||||
{
|
||||
struct tep_event_format **eventptr;
|
||||
struct tep_event_format key;
|
||||
struct tep_event_format *pkey = &key;
|
||||
struct tep_event **eventptr;
|
||||
struct tep_event key;
|
||||
struct tep_event *pkey = &key;
|
||||
|
||||
/* Check cache first */
|
||||
if (pevent->last_event && pevent->last_event->id == id)
|
||||
@@ -3494,11 +3497,11 @@ struct tep_event_format *tep_find_event(struct tep_handle *pevent, int id)
|
||||
* This returns an event with a given @name and under the system
|
||||
* @sys. If @sys is NULL the first event with @name is returned.
|
||||
*/
|
||||
struct tep_event_format *
|
||||
struct tep_event *
|
||||
tep_find_event_by_name(struct tep_handle *pevent,
|
||||
const char *sys, const char *name)
|
||||
{
|
||||
struct tep_event_format *event;
|
||||
struct tep_event *event = NULL;
|
||||
int i;
|
||||
|
||||
if (pevent->last_event &&
|
||||
@@ -3523,7 +3526,7 @@ tep_find_event_by_name(struct tep_handle *pevent,
|
||||
}
|
||||
|
||||
static unsigned long long
|
||||
eval_num_arg(void *data, int size, struct tep_event_format *event, struct tep_print_arg *arg)
|
||||
eval_num_arg(void *data, int size, struct tep_event *event, struct tep_print_arg *arg)
|
||||
{
|
||||
struct tep_handle *pevent = event->pevent;
|
||||
unsigned long long val = 0;
|
||||
@@ -3838,7 +3841,7 @@ static void print_bitmask_to_seq(struct tep_handle *pevent,
|
||||
/*
|
||||
* data points to a bit mask of size bytes.
|
||||
* In the kernel, this is an array of long words, thus
|
||||
* endianess is very important.
|
||||
* endianness is very important.
|
||||
*/
|
||||
if (pevent->file_bigendian)
|
||||
index = size - (len + 1);
|
||||
@@ -3863,7 +3866,7 @@ static void print_bitmask_to_seq(struct tep_handle *pevent,
|
||||
}
|
||||
|
||||
static void print_str_arg(struct trace_seq *s, void *data, int size,
|
||||
struct tep_event_format *event, const char *format,
|
||||
struct tep_event *event, const char *format,
|
||||
int len_arg, struct tep_print_arg *arg)
|
||||
{
|
||||
struct tep_handle *pevent = event->pevent;
|
||||
@@ -4062,7 +4065,7 @@ static void print_str_arg(struct trace_seq *s, void *data, int size,
|
||||
f = tep_find_any_field(event, arg->string.string);
|
||||
arg->string.offset = f->offset;
|
||||
}
|
||||
str_offset = tep_data2host4(pevent, data + arg->string.offset);
|
||||
str_offset = tep_data2host4(pevent, *(unsigned int *)(data + arg->string.offset));
|
||||
str_offset &= 0xffff;
|
||||
print_str_to_seq(s, format, len_arg, ((char *)data) + str_offset);
|
||||
break;
|
||||
@@ -4080,7 +4083,7 @@ static void print_str_arg(struct trace_seq *s, void *data, int size,
|
||||
f = tep_find_any_field(event, arg->bitmask.bitmask);
|
||||
arg->bitmask.offset = f->offset;
|
||||
}
|
||||
bitmask_offset = tep_data2host4(pevent, data + arg->bitmask.offset);
|
||||
bitmask_offset = tep_data2host4(pevent, *(unsigned int *)(data + arg->bitmask.offset));
|
||||
bitmask_size = bitmask_offset >> 16;
|
||||
bitmask_offset &= 0xffff;
|
||||
print_bitmask_to_seq(pevent, s, format, len_arg,
|
||||
@@ -4118,7 +4121,7 @@ out_warning_field:
|
||||
|
||||
static unsigned long long
|
||||
process_defined_func(struct trace_seq *s, void *data, int size,
|
||||
struct tep_event_format *event, struct tep_print_arg *arg)
|
||||
struct tep_event *event, struct tep_print_arg *arg)
|
||||
{
|
||||
struct tep_function_handler *func_handle = arg->func.func;
|
||||
struct func_params *param;
|
||||
@@ -4213,7 +4216,7 @@ static void free_args(struct tep_print_arg *args)
|
||||
}
|
||||
}
|
||||
|
||||
static struct tep_print_arg *make_bprint_args(char *fmt, void *data, int size, struct tep_event_format *event)
|
||||
static struct tep_print_arg *make_bprint_args(char *fmt, void *data, int size, struct tep_event *event)
|
||||
{
|
||||
struct tep_handle *pevent = event->pevent;
|
||||
struct tep_format_field *field, *ip_field;
|
||||
@@ -4221,7 +4224,7 @@ static struct tep_print_arg *make_bprint_args(char *fmt, void *data, int size, s
|
||||
unsigned long long ip, val;
|
||||
char *ptr;
|
||||
void *bptr;
|
||||
int vsize;
|
||||
int vsize = 0;
|
||||
|
||||
field = pevent->bprint_buf_field;
|
||||
ip_field = pevent->bprint_ip_field;
|
||||
@@ -4390,7 +4393,7 @@ out_free:
|
||||
|
||||
static char *
|
||||
get_bprint_format(void *data, int size __maybe_unused,
|
||||
struct tep_event_format *event)
|
||||
struct tep_event *event)
|
||||
{
|
||||
struct tep_handle *pevent = event->pevent;
|
||||
unsigned long long addr;
|
||||
@@ -4425,7 +4428,7 @@ get_bprint_format(void *data, int size __maybe_unused,
|
||||
}
|
||||
|
||||
static void print_mac_arg(struct trace_seq *s, int mac, void *data, int size,
|
||||
struct tep_event_format *event, struct tep_print_arg *arg)
|
||||
struct tep_event *event, struct tep_print_arg *arg)
|
||||
{
|
||||
unsigned char *buf;
|
||||
const char *fmt = "%.2x:%.2x:%.2x:%.2x:%.2x:%.2x";
|
||||
@@ -4578,7 +4581,7 @@ static void print_ip6_addr(struct trace_seq *s, char i, unsigned char *buf)
|
||||
* %pISpc print an IP address based on sockaddr; p adds port.
|
||||
*/
|
||||
static int print_ipv4_arg(struct trace_seq *s, const char *ptr, char i,
|
||||
void *data, int size, struct tep_event_format *event,
|
||||
void *data, int size, struct tep_event *event,
|
||||
struct tep_print_arg *arg)
|
||||
{
|
||||
unsigned char *buf;
|
||||
@@ -4615,7 +4618,7 @@ static int print_ipv4_arg(struct trace_seq *s, const char *ptr, char i,
|
||||
}
|
||||
|
||||
static int print_ipv6_arg(struct trace_seq *s, const char *ptr, char i,
|
||||
void *data, int size, struct tep_event_format *event,
|
||||
void *data, int size, struct tep_event *event,
|
||||
struct tep_print_arg *arg)
|
||||
{
|
||||
char have_c = 0;
|
||||
@@ -4665,7 +4668,7 @@ static int print_ipv6_arg(struct trace_seq *s, const char *ptr, char i,
|
||||
}
|
||||
|
||||
static int print_ipsa_arg(struct trace_seq *s, const char *ptr, char i,
|
||||
void *data, int size, struct tep_event_format *event,
|
||||
void *data, int size, struct tep_event *event,
|
||||
struct tep_print_arg *arg)
|
||||
{
|
||||
char have_c = 0, have_p = 0;
|
||||
@@ -4747,7 +4750,7 @@ static int print_ipsa_arg(struct trace_seq *s, const char *ptr, char i,
|
||||
}
|
||||
|
||||
static int print_ip_arg(struct trace_seq *s, const char *ptr,
|
||||
void *data, int size, struct tep_event_format *event,
|
||||
void *data, int size, struct tep_event *event,
|
||||
struct tep_print_arg *arg)
|
||||
{
|
||||
char i = *ptr; /* 'i' or 'I' */
|
||||
@@ -4854,7 +4857,7 @@ void tep_print_field(struct trace_seq *s, void *data,
|
||||
}
|
||||
|
||||
void tep_print_fields(struct trace_seq *s, void *data,
|
||||
int size __maybe_unused, struct tep_event_format *event)
|
||||
int size __maybe_unused, struct tep_event *event)
|
||||
{
|
||||
struct tep_format_field *field;
|
||||
|
||||
@@ -4866,7 +4869,7 @@ void tep_print_fields(struct trace_seq *s, void *data,
|
||||
}
|
||||
}
|
||||
|
||||
static void pretty_print(struct trace_seq *s, void *data, int size, struct tep_event_format *event)
|
||||
static void pretty_print(struct trace_seq *s, void *data, int size, struct tep_event *event)
|
||||
{
|
||||
struct tep_handle *pevent = event->pevent;
|
||||
struct tep_print_fmt *print_fmt = &event->print_fmt;
|
||||
@@ -4881,7 +4884,7 @@ static void pretty_print(struct trace_seq *s, void *data, int size, struct tep_e
|
||||
char format[32];
|
||||
int show_func;
|
||||
int len_as_arg;
|
||||
int len_arg;
|
||||
int len_arg = 0;
|
||||
int len;
|
||||
int ls;
|
||||
|
||||
@@ -4970,6 +4973,7 @@ static void pretty_print(struct trace_seq *s, void *data, int size, struct tep_e
|
||||
|
||||
if (arg->type == TEP_PRINT_BSTRING) {
|
||||
trace_seq_puts(s, arg->string.string);
|
||||
arg = arg->next;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -5146,8 +5150,8 @@ void tep_data_lat_fmt(struct tep_handle *pevent,
|
||||
static int migrate_disable_exists;
|
||||
unsigned int lat_flags;
|
||||
unsigned int pc;
|
||||
int lock_depth;
|
||||
int migrate_disable;
|
||||
int lock_depth = 0;
|
||||
int migrate_disable = 0;
|
||||
int hardirq;
|
||||
int softirq;
|
||||
void *data = record->data;
|
||||
@@ -5229,7 +5233,7 @@ int tep_data_type(struct tep_handle *pevent, struct tep_record *rec)
|
||||
*
|
||||
* This returns the event form a given @type;
|
||||
*/
|
||||
struct tep_event_format *tep_data_event_from_type(struct tep_handle *pevent, int type)
|
||||
struct tep_event *tep_data_event_from_type(struct tep_handle *pevent, int type)
|
||||
{
|
||||
return tep_find_event(pevent, type);
|
||||
}
|
||||
@@ -5313,9 +5317,9 @@ pid_from_cmdlist(struct tep_handle *pevent, const char *comm, struct cmdline *ne
|
||||
* This returns the cmdline structure that holds a pid for a given
|
||||
* comm, or NULL if none found. As there may be more than one pid for
|
||||
* a given comm, the result of this call can be passed back into
|
||||
* a recurring call in the @next paramater, and then it will find the
|
||||
* a recurring call in the @next parameter, and then it will find the
|
||||
* next pid.
|
||||
* Also, it does a linear seach, so it may be slow.
|
||||
* Also, it does a linear search, so it may be slow.
|
||||
*/
|
||||
struct cmdline *tep_data_pid_from_comm(struct tep_handle *pevent, const char *comm,
|
||||
struct cmdline *next)
|
||||
@@ -5387,7 +5391,7 @@ int tep_cmdline_pid(struct tep_handle *pevent, struct cmdline *cmdline)
|
||||
* This parses the raw @data using the given @event information and
|
||||
* writes the print format into the trace_seq.
|
||||
*/
|
||||
void tep_event_info(struct trace_seq *s, struct tep_event_format *event,
|
||||
void tep_event_info(struct trace_seq *s, struct tep_event *event,
|
||||
struct tep_record *record)
|
||||
{
|
||||
int print_pretty = 1;
|
||||
@@ -5409,7 +5413,7 @@ void tep_event_info(struct trace_seq *s, struct tep_event_format *event,
|
||||
|
||||
static bool is_timestamp_in_us(char *trace_clock, bool use_trace_clock)
|
||||
{
|
||||
if (!use_trace_clock)
|
||||
if (!trace_clock || !use_trace_clock)
|
||||
return true;
|
||||
|
||||
if (!strcmp(trace_clock, "local") || !strcmp(trace_clock, "global")
|
||||
@@ -5428,7 +5432,7 @@ static bool is_timestamp_in_us(char *trace_clock, bool use_trace_clock)
|
||||
* Returns the associated event for a given record, or NULL if non is
|
||||
* is found.
|
||||
*/
|
||||
struct tep_event_format *
|
||||
struct tep_event *
|
||||
tep_find_event_by_record(struct tep_handle *pevent, struct tep_record *record)
|
||||
{
|
||||
int type;
|
||||
@@ -5453,7 +5457,7 @@ tep_find_event_by_record(struct tep_handle *pevent, struct tep_record *record)
|
||||
* Writes the tasks comm, pid and CPU to @s.
|
||||
*/
|
||||
void tep_print_event_task(struct tep_handle *pevent, struct trace_seq *s,
|
||||
struct tep_event_format *event,
|
||||
struct tep_event *event,
|
||||
struct tep_record *record)
|
||||
{
|
||||
void *data = record->data;
|
||||
@@ -5481,7 +5485,7 @@ void tep_print_event_task(struct tep_handle *pevent, struct trace_seq *s,
|
||||
* Writes the timestamp of the record into @s.
|
||||
*/
|
||||
void tep_print_event_time(struct tep_handle *pevent, struct trace_seq *s,
|
||||
struct tep_event_format *event,
|
||||
struct tep_event *event,
|
||||
struct tep_record *record,
|
||||
bool use_trace_clock)
|
||||
{
|
||||
@@ -5531,7 +5535,7 @@ void tep_print_event_time(struct tep_handle *pevent, struct trace_seq *s,
|
||||
* Writes the parsing of the record's data to @s.
|
||||
*/
|
||||
void tep_print_event_data(struct tep_handle *pevent, struct trace_seq *s,
|
||||
struct tep_event_format *event,
|
||||
struct tep_event *event,
|
||||
struct tep_record *record)
|
||||
{
|
||||
static const char *spaces = " "; /* 20 spaces */
|
||||
@@ -5550,7 +5554,7 @@ void tep_print_event_data(struct tep_handle *pevent, struct trace_seq *s,
|
||||
void tep_print_event(struct tep_handle *pevent, struct trace_seq *s,
|
||||
struct tep_record *record, bool use_trace_clock)
|
||||
{
|
||||
struct tep_event_format *event;
|
||||
struct tep_event *event;
|
||||
|
||||
event = tep_find_event_by_record(pevent, record);
|
||||
if (!event) {
|
||||
@@ -5572,8 +5576,8 @@ void tep_print_event(struct tep_handle *pevent, struct trace_seq *s,
|
||||
|
||||
static int events_id_cmp(const void *a, const void *b)
|
||||
{
|
||||
struct tep_event_format * const * ea = a;
|
||||
struct tep_event_format * const * eb = b;
|
||||
struct tep_event * const * ea = a;
|
||||
struct tep_event * const * eb = b;
|
||||
|
||||
if ((*ea)->id < (*eb)->id)
|
||||
return -1;
|
||||
@@ -5586,8 +5590,8 @@ static int events_id_cmp(const void *a, const void *b)
|
||||
|
||||
static int events_name_cmp(const void *a, const void *b)
|
||||
{
|
||||
struct tep_event_format * const * ea = a;
|
||||
struct tep_event_format * const * eb = b;
|
||||
struct tep_event * const * ea = a;
|
||||
struct tep_event * const * eb = b;
|
||||
int res;
|
||||
|
||||
res = strcmp((*ea)->name, (*eb)->name);
|
||||
@@ -5603,8 +5607,8 @@ static int events_name_cmp(const void *a, const void *b)
|
||||
|
||||
static int events_system_cmp(const void *a, const void *b)
|
||||
{
|
||||
struct tep_event_format * const * ea = a;
|
||||
struct tep_event_format * const * eb = b;
|
||||
struct tep_event * const * ea = a;
|
||||
struct tep_event * const * eb = b;
|
||||
int res;
|
||||
|
||||
res = strcmp((*ea)->system, (*eb)->system);
|
||||
@@ -5618,9 +5622,9 @@ static int events_system_cmp(const void *a, const void *b)
|
||||
return events_id_cmp(a, b);
|
||||
}
|
||||
|
||||
struct tep_event_format **tep_list_events(struct tep_handle *pevent, enum tep_event_sort_type sort_type)
|
||||
struct tep_event **tep_list_events(struct tep_handle *pevent, enum tep_event_sort_type sort_type)
|
||||
{
|
||||
struct tep_event_format **events;
|
||||
struct tep_event **events;
|
||||
int (*sort)(const void *a, const void *b);
|
||||
|
||||
events = pevent->sort_events;
|
||||
@@ -5703,7 +5707,7 @@ get_event_fields(const char *type, const char *name,
|
||||
* Returns an allocated array of fields. The last item in the array is NULL.
|
||||
* The array must be freed with free().
|
||||
*/
|
||||
struct tep_format_field **tep_event_common_fields(struct tep_event_format *event)
|
||||
struct tep_format_field **tep_event_common_fields(struct tep_event *event)
|
||||
{
|
||||
return get_event_fields("common", event->name,
|
||||
event->format.nr_common,
|
||||
@@ -5717,7 +5721,7 @@ struct tep_format_field **tep_event_common_fields(struct tep_event_format *event
|
||||
* Returns an allocated array of fields. The last item in the array is NULL.
|
||||
* The array must be freed with free().
|
||||
*/
|
||||
struct tep_format_field **tep_event_fields(struct tep_event_format *event)
|
||||
struct tep_format_field **tep_event_fields(struct tep_event *event)
|
||||
{
|
||||
return get_event_fields("event", event->name,
|
||||
event->format.nr_fields,
|
||||
@@ -5959,7 +5963,7 @@ int tep_parse_header_page(struct tep_handle *pevent, char *buf, unsigned long si
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int event_matches(struct tep_event_format *event,
|
||||
static int event_matches(struct tep_event *event,
|
||||
int id, const char *sys_name,
|
||||
const char *event_name)
|
||||
{
|
||||
@@ -5982,7 +5986,7 @@ static void free_handler(struct event_handler *handle)
|
||||
free(handle);
|
||||
}
|
||||
|
||||
static int find_event_handle(struct tep_handle *pevent, struct tep_event_format *event)
|
||||
static int find_event_handle(struct tep_handle *pevent, struct tep_event *event)
|
||||
{
|
||||
struct event_handler *handle, **next;
|
||||
|
||||
@@ -6023,11 +6027,11 @@ static int find_event_handle(struct tep_handle *pevent, struct tep_event_format
|
||||
*
|
||||
* /sys/kernel/debug/tracing/events/.../.../format
|
||||
*/
|
||||
enum tep_errno __tep_parse_format(struct tep_event_format **eventp,
|
||||
enum tep_errno __tep_parse_format(struct tep_event **eventp,
|
||||
struct tep_handle *pevent, const char *buf,
|
||||
unsigned long size, const char *sys)
|
||||
{
|
||||
struct tep_event_format *event;
|
||||
struct tep_event *event;
|
||||
int ret;
|
||||
|
||||
init_input_buf(buf, size);
|
||||
@@ -6132,12 +6136,12 @@ enum tep_errno __tep_parse_format(struct tep_event_format **eventp,
|
||||
|
||||
static enum tep_errno
|
||||
__parse_event(struct tep_handle *pevent,
|
||||
struct tep_event_format **eventp,
|
||||
struct tep_event **eventp,
|
||||
const char *buf, unsigned long size,
|
||||
const char *sys)
|
||||
{
|
||||
int ret = __tep_parse_format(eventp, pevent, buf, size, sys);
|
||||
struct tep_event_format *event = *eventp;
|
||||
struct tep_event *event = *eventp;
|
||||
|
||||
if (event == NULL)
|
||||
return ret;
|
||||
@@ -6154,7 +6158,7 @@ __parse_event(struct tep_handle *pevent,
|
||||
return 0;
|
||||
|
||||
event_add_failed:
|
||||
tep_free_format(event);
|
||||
tep_free_event(event);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -6174,7 +6178,7 @@ event_add_failed:
|
||||
* /sys/kernel/debug/tracing/events/.../.../format
|
||||
*/
|
||||
enum tep_errno tep_parse_format(struct tep_handle *pevent,
|
||||
struct tep_event_format **eventp,
|
||||
struct tep_event **eventp,
|
||||
const char *buf,
|
||||
unsigned long size, const char *sys)
|
||||
{
|
||||
@@ -6198,7 +6202,7 @@ enum tep_errno tep_parse_format(struct tep_handle *pevent,
|
||||
enum tep_errno tep_parse_event(struct tep_handle *pevent, const char *buf,
|
||||
unsigned long size, const char *sys)
|
||||
{
|
||||
struct tep_event_format *event = NULL;
|
||||
struct tep_event *event = NULL;
|
||||
return __parse_event(pevent, &event, buf, size, sys);
|
||||
}
|
||||
|
||||
@@ -6235,7 +6239,7 @@ int get_field_val(struct trace_seq *s, struct tep_format_field *field,
|
||||
*
|
||||
* On failure, it returns NULL.
|
||||
*/
|
||||
void *tep_get_field_raw(struct trace_seq *s, struct tep_event_format *event,
|
||||
void *tep_get_field_raw(struct trace_seq *s, struct tep_event *event,
|
||||
const char *name, struct tep_record *record,
|
||||
int *len, int err)
|
||||
{
|
||||
@@ -6282,7 +6286,7 @@ void *tep_get_field_raw(struct trace_seq *s, struct tep_event_format *event,
|
||||
*
|
||||
* Returns 0 on success -1 on field not found.
|
||||
*/
|
||||
int tep_get_field_val(struct trace_seq *s, struct tep_event_format *event,
|
||||
int tep_get_field_val(struct trace_seq *s, struct tep_event *event,
|
||||
const char *name, struct tep_record *record,
|
||||
unsigned long long *val, int err)
|
||||
{
|
||||
@@ -6307,7 +6311,7 @@ int tep_get_field_val(struct trace_seq *s, struct tep_event_format *event,
|
||||
*
|
||||
* Returns 0 on success -1 on field not found.
|
||||
*/
|
||||
int tep_get_common_field_val(struct trace_seq *s, struct tep_event_format *event,
|
||||
int tep_get_common_field_val(struct trace_seq *s, struct tep_event *event,
|
||||
const char *name, struct tep_record *record,
|
||||
unsigned long long *val, int err)
|
||||
{
|
||||
@@ -6332,7 +6336,7 @@ int tep_get_common_field_val(struct trace_seq *s, struct tep_event_format *event
|
||||
*
|
||||
* Returns 0 on success -1 on field not found.
|
||||
*/
|
||||
int tep_get_any_field_val(struct trace_seq *s, struct tep_event_format *event,
|
||||
int tep_get_any_field_val(struct trace_seq *s, struct tep_event *event,
|
||||
const char *name, struct tep_record *record,
|
||||
unsigned long long *val, int err)
|
||||
{
|
||||
@@ -6358,7 +6362,7 @@ int tep_get_any_field_val(struct trace_seq *s, struct tep_event_format *event,
|
||||
* Returns: 0 on success, -1 field not found, or 1 if buffer is full.
|
||||
*/
|
||||
int tep_print_num_field(struct trace_seq *s, const char *fmt,
|
||||
struct tep_event_format *event, const char *name,
|
||||
struct tep_event *event, const char *name,
|
||||
struct tep_record *record, int err)
|
||||
{
|
||||
struct tep_format_field *field = tep_find_field(event, name);
|
||||
@@ -6390,7 +6394,7 @@ int tep_print_num_field(struct trace_seq *s, const char *fmt,
|
||||
* Returns: 0 on success, -1 field not found, or 1 if buffer is full.
|
||||
*/
|
||||
int tep_print_func_field(struct trace_seq *s, const char *fmt,
|
||||
struct tep_event_format *event, const char *name,
|
||||
struct tep_event *event, const char *name,
|
||||
struct tep_record *record, int err)
|
||||
{
|
||||
struct tep_format_field *field = tep_find_field(event, name);
|
||||
@@ -6550,11 +6554,11 @@ int tep_unregister_print_function(struct tep_handle *pevent,
|
||||
return -1;
|
||||
}
|
||||
|
||||
static struct tep_event_format *search_event(struct tep_handle *pevent, int id,
|
||||
const char *sys_name,
|
||||
const char *event_name)
|
||||
static struct tep_event *search_event(struct tep_handle *pevent, int id,
|
||||
const char *sys_name,
|
||||
const char *event_name)
|
||||
{
|
||||
struct tep_event_format *event;
|
||||
struct tep_event *event;
|
||||
|
||||
if (id >= 0) {
|
||||
/* search by id */
|
||||
@@ -6594,7 +6598,7 @@ int tep_register_event_handler(struct tep_handle *pevent, int id,
|
||||
const char *sys_name, const char *event_name,
|
||||
tep_event_handler_func func, void *context)
|
||||
{
|
||||
struct tep_event_format *event;
|
||||
struct tep_event *event;
|
||||
struct event_handler *handle;
|
||||
|
||||
event = search_event(pevent, id, sys_name, event_name);
|
||||
@@ -6678,7 +6682,7 @@ int tep_unregister_event_handler(struct tep_handle *pevent, int id,
|
||||
const char *sys_name, const char *event_name,
|
||||
tep_event_handler_func func, void *context)
|
||||
{
|
||||
struct tep_event_format *event;
|
||||
struct tep_event *event;
|
||||
struct event_handler *handle;
|
||||
struct event_handler **next;
|
||||
|
||||
@@ -6730,6 +6734,13 @@ void tep_ref(struct tep_handle *pevent)
|
||||
pevent->ref_count++;
|
||||
}
|
||||
|
||||
int tep_get_ref(struct tep_handle *tep)
|
||||
{
|
||||
if (tep)
|
||||
return tep->ref_count;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void tep_free_format_field(struct tep_format_field *field)
|
||||
{
|
||||
free(field->type);
|
||||
@@ -6756,7 +6767,7 @@ static void free_formats(struct tep_format *format)
|
||||
free_format_fields(format->fields);
|
||||
}
|
||||
|
||||
void tep_free_format(struct tep_event_format *event)
|
||||
void tep_free_event(struct tep_event *event)
|
||||
{
|
||||
free(event->name);
|
||||
free(event->system);
|
||||
@@ -6842,7 +6853,7 @@ void tep_free(struct tep_handle *pevent)
|
||||
}
|
||||
|
||||
for (i = 0; i < pevent->nr_events; i++)
|
||||
tep_free_format(pevent->events[i]);
|
||||
tep_free_event(pevent->events[i]);
|
||||
|
||||
while (pevent->handlers) {
|
||||
handle = pevent->handlers;
|
||||
|
@@ -57,11 +57,11 @@ struct tep_record {
|
||||
/* ----------------------- tep ----------------------- */
|
||||
|
||||
struct tep_handle;
|
||||
struct tep_event_format;
|
||||
struct tep_event;
|
||||
|
||||
typedef int (*tep_event_handler_func)(struct trace_seq *s,
|
||||
struct tep_record *record,
|
||||
struct tep_event_format *event,
|
||||
struct tep_event *event,
|
||||
void *context);
|
||||
|
||||
typedef int (*tep_plugin_load_func)(struct tep_handle *pevent);
|
||||
@@ -143,7 +143,7 @@ enum tep_format_flags {
|
||||
|
||||
struct tep_format_field {
|
||||
struct tep_format_field *next;
|
||||
struct tep_event_format *event;
|
||||
struct tep_event *event;
|
||||
char *type;
|
||||
char *name;
|
||||
char *alias;
|
||||
@@ -277,7 +277,7 @@ struct tep_print_fmt {
|
||||
struct tep_print_arg *args;
|
||||
};
|
||||
|
||||
struct tep_event_format {
|
||||
struct tep_event {
|
||||
struct tep_handle *pevent;
|
||||
char *name;
|
||||
int id;
|
||||
@@ -409,20 +409,6 @@ void tep_print_plugins(struct trace_seq *s,
|
||||
typedef char *(tep_func_resolver_t)(void *priv,
|
||||
unsigned long long *addrp, char **modp);
|
||||
void tep_set_flag(struct tep_handle *tep, int flag);
|
||||
unsigned short __tep_data2host2(struct tep_handle *pevent, unsigned short data);
|
||||
unsigned int __tep_data2host4(struct tep_handle *pevent, unsigned int data);
|
||||
unsigned long long
|
||||
__tep_data2host8(struct tep_handle *pevent, unsigned long long data);
|
||||
|
||||
#define tep_data2host2(pevent, ptr) __tep_data2host2(pevent, *(unsigned short *)(ptr))
|
||||
#define tep_data2host4(pevent, ptr) __tep_data2host4(pevent, *(unsigned int *)(ptr))
|
||||
#define tep_data2host8(pevent, ptr) \
|
||||
({ \
|
||||
unsigned long long __val; \
|
||||
\
|
||||
memcpy(&__val, (ptr), sizeof(unsigned long long)); \
|
||||
__tep_data2host8(pevent, __val); \
|
||||
})
|
||||
|
||||
static inline int tep_host_bigendian(void)
|
||||
{
|
||||
@@ -454,14 +440,14 @@ int tep_register_print_string(struct tep_handle *pevent, const char *fmt,
|
||||
int tep_pid_is_registered(struct tep_handle *pevent, int pid);
|
||||
|
||||
void tep_print_event_task(struct tep_handle *pevent, struct trace_seq *s,
|
||||
struct tep_event_format *event,
|
||||
struct tep_event *event,
|
||||
struct tep_record *record);
|
||||
void tep_print_event_time(struct tep_handle *pevent, struct trace_seq *s,
|
||||
struct tep_event_format *event,
|
||||
struct tep_event *event,
|
||||
struct tep_record *record,
|
||||
bool use_trace_clock);
|
||||
void tep_print_event_data(struct tep_handle *pevent, struct trace_seq *s,
|
||||
struct tep_event_format *event,
|
||||
struct tep_event *event,
|
||||
struct tep_record *record);
|
||||
void tep_print_event(struct tep_handle *pevent, struct trace_seq *s,
|
||||
struct tep_record *record, bool use_trace_clock);
|
||||
@@ -472,32 +458,30 @@ int tep_parse_header_page(struct tep_handle *pevent, char *buf, unsigned long si
|
||||
enum tep_errno tep_parse_event(struct tep_handle *pevent, const char *buf,
|
||||
unsigned long size, const char *sys);
|
||||
enum tep_errno tep_parse_format(struct tep_handle *pevent,
|
||||
struct tep_event_format **eventp,
|
||||
struct tep_event **eventp,
|
||||
const char *buf,
|
||||
unsigned long size, const char *sys);
|
||||
void tep_free_format(struct tep_event_format *event);
|
||||
void tep_free_format_field(struct tep_format_field *field);
|
||||
|
||||
void *tep_get_field_raw(struct trace_seq *s, struct tep_event_format *event,
|
||||
void *tep_get_field_raw(struct trace_seq *s, struct tep_event *event,
|
||||
const char *name, struct tep_record *record,
|
||||
int *len, int err);
|
||||
|
||||
int tep_get_field_val(struct trace_seq *s, struct tep_event_format *event,
|
||||
int tep_get_field_val(struct trace_seq *s, struct tep_event *event,
|
||||
const char *name, struct tep_record *record,
|
||||
unsigned long long *val, int err);
|
||||
int tep_get_common_field_val(struct trace_seq *s, struct tep_event_format *event,
|
||||
int tep_get_common_field_val(struct trace_seq *s, struct tep_event *event,
|
||||
const char *name, struct tep_record *record,
|
||||
unsigned long long *val, int err);
|
||||
int tep_get_any_field_val(struct trace_seq *s, struct tep_event_format *event,
|
||||
int tep_get_any_field_val(struct trace_seq *s, struct tep_event *event,
|
||||
const char *name, struct tep_record *record,
|
||||
unsigned long long *val, int err);
|
||||
|
||||
int tep_print_num_field(struct trace_seq *s, const char *fmt,
|
||||
struct tep_event_format *event, const char *name,
|
||||
struct tep_event *event, const char *name,
|
||||
struct tep_record *record, int err);
|
||||
|
||||
int tep_print_func_field(struct trace_seq *s, const char *fmt,
|
||||
struct tep_event_format *event, const char *name,
|
||||
struct tep_event *event, const char *name,
|
||||
struct tep_record *record, int err);
|
||||
|
||||
int tep_register_event_handler(struct tep_handle *pevent, int id,
|
||||
@@ -513,9 +497,9 @@ int tep_register_print_function(struct tep_handle *pevent,
|
||||
int tep_unregister_print_function(struct tep_handle *pevent,
|
||||
tep_func_handler func, char *name);
|
||||
|
||||
struct tep_format_field *tep_find_common_field(struct tep_event_format *event, const char *name);
|
||||
struct tep_format_field *tep_find_field(struct tep_event_format *event, const char *name);
|
||||
struct tep_format_field *tep_find_any_field(struct tep_event_format *event, const char *name);
|
||||
struct tep_format_field *tep_find_common_field(struct tep_event *event, const char *name);
|
||||
struct tep_format_field *tep_find_field(struct tep_event *event, const char *name);
|
||||
struct tep_format_field *tep_find_any_field(struct tep_event *event, const char *name);
|
||||
|
||||
const char *tep_find_function(struct tep_handle *pevent, unsigned long long addr);
|
||||
unsigned long long
|
||||
@@ -524,19 +508,19 @@ unsigned long long tep_read_number(struct tep_handle *pevent, const void *ptr, i
|
||||
int tep_read_number_field(struct tep_format_field *field, const void *data,
|
||||
unsigned long long *value);
|
||||
|
||||
struct tep_event_format *tep_get_first_event(struct tep_handle *tep);
|
||||
struct tep_event *tep_get_first_event(struct tep_handle *tep);
|
||||
int tep_get_events_count(struct tep_handle *tep);
|
||||
struct tep_event_format *tep_find_event(struct tep_handle *pevent, int id);
|
||||
struct tep_event *tep_find_event(struct tep_handle *pevent, int id);
|
||||
|
||||
struct tep_event_format *
|
||||
struct tep_event *
|
||||
tep_find_event_by_name(struct tep_handle *pevent, const char *sys, const char *name);
|
||||
struct tep_event_format *
|
||||
struct tep_event *
|
||||
tep_find_event_by_record(struct tep_handle *pevent, struct tep_record *record);
|
||||
|
||||
void tep_data_lat_fmt(struct tep_handle *pevent,
|
||||
struct trace_seq *s, struct tep_record *record);
|
||||
int tep_data_type(struct tep_handle *pevent, struct tep_record *rec);
|
||||
struct tep_event_format *tep_data_event_from_type(struct tep_handle *pevent, int type);
|
||||
struct tep_event *tep_data_event_from_type(struct tep_handle *pevent, int type);
|
||||
int tep_data_pid(struct tep_handle *pevent, struct tep_record *rec);
|
||||
int tep_data_preempt_count(struct tep_handle *pevent, struct tep_record *rec);
|
||||
int tep_data_flags(struct tep_handle *pevent, struct tep_record *rec);
|
||||
@@ -549,15 +533,15 @@ int tep_cmdline_pid(struct tep_handle *pevent, struct cmdline *cmdline);
|
||||
void tep_print_field(struct trace_seq *s, void *data,
|
||||
struct tep_format_field *field);
|
||||
void tep_print_fields(struct trace_seq *s, void *data,
|
||||
int size __maybe_unused, struct tep_event_format *event);
|
||||
void tep_event_info(struct trace_seq *s, struct tep_event_format *event,
|
||||
struct tep_record *record);
|
||||
int size __maybe_unused, struct tep_event *event);
|
||||
void tep_event_info(struct trace_seq *s, struct tep_event *event,
|
||||
struct tep_record *record);
|
||||
int tep_strerror(struct tep_handle *pevent, enum tep_errno errnum,
|
||||
char *buf, size_t buflen);
|
||||
char *buf, size_t buflen);
|
||||
|
||||
struct tep_event_format **tep_list_events(struct tep_handle *pevent, enum tep_event_sort_type);
|
||||
struct tep_format_field **tep_event_common_fields(struct tep_event_format *event);
|
||||
struct tep_format_field **tep_event_fields(struct tep_event_format *event);
|
||||
struct tep_event **tep_list_events(struct tep_handle *pevent, enum tep_event_sort_type);
|
||||
struct tep_format_field **tep_event_common_fields(struct tep_event *event);
|
||||
struct tep_format_field **tep_event_fields(struct tep_event *event);
|
||||
|
||||
enum tep_endian {
|
||||
TEP_LITTLE_ENDIAN = 0,
|
||||
@@ -581,6 +565,7 @@ struct tep_handle *tep_alloc(void);
|
||||
void tep_free(struct tep_handle *pevent);
|
||||
void tep_ref(struct tep_handle *pevent);
|
||||
void tep_unref(struct tep_handle *pevent);
|
||||
int tep_get_ref(struct tep_handle *tep);
|
||||
|
||||
/* access to the internal parser */
|
||||
void tep_buffer_init(const char *buf, unsigned long long size);
|
||||
@@ -712,7 +697,7 @@ struct tep_filter_arg {
|
||||
|
||||
struct tep_filter_type {
|
||||
int event_id;
|
||||
struct tep_event_format *event;
|
||||
struct tep_event *event;
|
||||
struct tep_filter_arg *filter;
|
||||
};
|
||||
|
||||
|
10
tools/lib/traceevent/libtraceevent.pc.template
Normal file
10
tools/lib/traceevent/libtraceevent.pc.template
Normal file
@@ -0,0 +1,10 @@
|
||||
prefix=INSTALL_PREFIX
|
||||
libdir=${prefix}/lib64
|
||||
includedir=${prefix}/include/traceevent
|
||||
|
||||
Name: libtraceevent
|
||||
URL: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
|
||||
Description: Linux kernel trace event library
|
||||
Version: LIB_VERSION
|
||||
Cflags: -I${includedir}
|
||||
Libs: -L${libdir} -ltraceevent
|
@@ -27,7 +27,7 @@ static struct tep_format_field cpu = {
|
||||
|
||||
struct event_list {
|
||||
struct event_list *next;
|
||||
struct tep_event_format *event;
|
||||
struct tep_event *event;
|
||||
};
|
||||
|
||||
static void show_error(char *error_buf, const char *fmt, ...)
|
||||
@@ -229,7 +229,7 @@ static void free_arg(struct tep_filter_arg *arg)
|
||||
}
|
||||
|
||||
static int add_event(struct event_list **events,
|
||||
struct tep_event_format *event)
|
||||
struct tep_event *event)
|
||||
{
|
||||
struct event_list *list;
|
||||
|
||||
@@ -243,7 +243,7 @@ static int add_event(struct event_list **events,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int event_match(struct tep_event_format *event,
|
||||
static int event_match(struct tep_event *event,
|
||||
regex_t *sreg, regex_t *ereg)
|
||||
{
|
||||
if (sreg) {
|
||||
@@ -259,7 +259,7 @@ static enum tep_errno
|
||||
find_event(struct tep_handle *pevent, struct event_list **events,
|
||||
char *sys_name, char *event_name)
|
||||
{
|
||||
struct tep_event_format *event;
|
||||
struct tep_event *event;
|
||||
regex_t ereg;
|
||||
regex_t sreg;
|
||||
int match = 0;
|
||||
@@ -334,7 +334,7 @@ static void free_events(struct event_list *events)
|
||||
}
|
||||
|
||||
static enum tep_errno
|
||||
create_arg_item(struct tep_event_format *event, const char *token,
|
||||
create_arg_item(struct tep_event *event, const char *token,
|
||||
enum tep_event_type type, struct tep_filter_arg **parg, char *error_str)
|
||||
{
|
||||
struct tep_format_field *field;
|
||||
@@ -940,7 +940,7 @@ static int collapse_tree(struct tep_filter_arg *arg,
|
||||
}
|
||||
|
||||
static enum tep_errno
|
||||
process_filter(struct tep_event_format *event, struct tep_filter_arg **parg,
|
||||
process_filter(struct tep_event *event, struct tep_filter_arg **parg,
|
||||
char *error_str, int not)
|
||||
{
|
||||
enum tep_event_type type;
|
||||
@@ -1180,7 +1180,7 @@ process_filter(struct tep_event_format *event, struct tep_filter_arg **parg,
|
||||
}
|
||||
|
||||
static enum tep_errno
|
||||
process_event(struct tep_event_format *event, const char *filter_str,
|
||||
process_event(struct tep_event *event, const char *filter_str,
|
||||
struct tep_filter_arg **parg, char *error_str)
|
||||
{
|
||||
int ret;
|
||||
@@ -1205,7 +1205,7 @@ process_event(struct tep_event_format *event, const char *filter_str,
|
||||
}
|
||||
|
||||
static enum tep_errno
|
||||
filter_event(struct tep_event_filter *filter, struct tep_event_format *event,
|
||||
filter_event(struct tep_event_filter *filter, struct tep_event *event,
|
||||
const char *filter_str, char *error_str)
|
||||
{
|
||||
struct tep_filter_type *filter_type;
|
||||
@@ -1457,7 +1457,7 @@ static int copy_filter_type(struct tep_event_filter *filter,
|
||||
struct tep_filter_type *filter_type)
|
||||
{
|
||||
struct tep_filter_arg *arg;
|
||||
struct tep_event_format *event;
|
||||
struct tep_event *event;
|
||||
const char *sys;
|
||||
const char *name;
|
||||
char *str;
|
||||
@@ -1539,7 +1539,7 @@ int tep_update_trivial(struct tep_event_filter *dest, struct tep_event_filter *s
|
||||
{
|
||||
struct tep_handle *src_pevent;
|
||||
struct tep_handle *dest_pevent;
|
||||
struct tep_event_format *event;
|
||||
struct tep_event *event;
|
||||
struct tep_filter_type *filter_type;
|
||||
struct tep_filter_arg *arg;
|
||||
char *str;
|
||||
@@ -1683,11 +1683,11 @@ int tep_filter_event_has_trivial(struct tep_event_filter *filter,
|
||||
}
|
||||
}
|
||||
|
||||
static int test_filter(struct tep_event_format *event, struct tep_filter_arg *arg,
|
||||
static int test_filter(struct tep_event *event, struct tep_filter_arg *arg,
|
||||
struct tep_record *record, enum tep_errno *err);
|
||||
|
||||
static const char *
|
||||
get_comm(struct tep_event_format *event, struct tep_record *record)
|
||||
get_comm(struct tep_event *event, struct tep_record *record)
|
||||
{
|
||||
const char *comm;
|
||||
int pid;
|
||||
@@ -1698,7 +1698,7 @@ get_comm(struct tep_event_format *event, struct tep_record *record)
|
||||
}
|
||||
|
||||
static unsigned long long
|
||||
get_value(struct tep_event_format *event,
|
||||
get_value(struct tep_event *event,
|
||||
struct tep_format_field *field, struct tep_record *record)
|
||||
{
|
||||
unsigned long long val;
|
||||
@@ -1734,11 +1734,11 @@ get_value(struct tep_event_format *event,
|
||||
}
|
||||
|
||||
static unsigned long long
|
||||
get_arg_value(struct tep_event_format *event, struct tep_filter_arg *arg,
|
||||
get_arg_value(struct tep_event *event, struct tep_filter_arg *arg,
|
||||
struct tep_record *record, enum tep_errno *err);
|
||||
|
||||
static unsigned long long
|
||||
get_exp_value(struct tep_event_format *event, struct tep_filter_arg *arg,
|
||||
get_exp_value(struct tep_event *event, struct tep_filter_arg *arg,
|
||||
struct tep_record *record, enum tep_errno *err)
|
||||
{
|
||||
unsigned long long lval, rval;
|
||||
@@ -1793,7 +1793,7 @@ get_exp_value(struct tep_event_format *event, struct tep_filter_arg *arg,
|
||||
}
|
||||
|
||||
static unsigned long long
|
||||
get_arg_value(struct tep_event_format *event, struct tep_filter_arg *arg,
|
||||
get_arg_value(struct tep_event *event, struct tep_filter_arg *arg,
|
||||
struct tep_record *record, enum tep_errno *err)
|
||||
{
|
||||
switch (arg->type) {
|
||||
@@ -1817,7 +1817,7 @@ get_arg_value(struct tep_event_format *event, struct tep_filter_arg *arg,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int test_num(struct tep_event_format *event, struct tep_filter_arg *arg,
|
||||
static int test_num(struct tep_event *event, struct tep_filter_arg *arg,
|
||||
struct tep_record *record, enum tep_errno *err)
|
||||
{
|
||||
unsigned long long lval, rval;
|
||||
@@ -1860,7 +1860,7 @@ static int test_num(struct tep_event_format *event, struct tep_filter_arg *arg,
|
||||
|
||||
static const char *get_field_str(struct tep_filter_arg *arg, struct tep_record *record)
|
||||
{
|
||||
struct tep_event_format *event;
|
||||
struct tep_event *event;
|
||||
struct tep_handle *pevent;
|
||||
unsigned long long addr;
|
||||
const char *val = NULL;
|
||||
@@ -1908,7 +1908,7 @@ static const char *get_field_str(struct tep_filter_arg *arg, struct tep_record *
|
||||
return val;
|
||||
}
|
||||
|
||||
static int test_str(struct tep_event_format *event, struct tep_filter_arg *arg,
|
||||
static int test_str(struct tep_event *event, struct tep_filter_arg *arg,
|
||||
struct tep_record *record, enum tep_errno *err)
|
||||
{
|
||||
const char *val;
|
||||
@@ -1939,7 +1939,7 @@ static int test_str(struct tep_event_format *event, struct tep_filter_arg *arg,
|
||||
}
|
||||
}
|
||||
|
||||
static int test_op(struct tep_event_format *event, struct tep_filter_arg *arg,
|
||||
static int test_op(struct tep_event *event, struct tep_filter_arg *arg,
|
||||
struct tep_record *record, enum tep_errno *err)
|
||||
{
|
||||
switch (arg->op.type) {
|
||||
@@ -1961,7 +1961,7 @@ static int test_op(struct tep_event_format *event, struct tep_filter_arg *arg,
|
||||
}
|
||||
}
|
||||
|
||||
static int test_filter(struct tep_event_format *event, struct tep_filter_arg *arg,
|
||||
static int test_filter(struct tep_event *event, struct tep_filter_arg *arg,
|
||||
struct tep_record *record, enum tep_errno *err)
|
||||
{
|
||||
if (*err) {
|
||||
|
@@ -124,7 +124,7 @@ static int add_and_get_index(const char *parent, const char *child, int cpu)
|
||||
}
|
||||
|
||||
static int function_handler(struct trace_seq *s, struct tep_record *record,
|
||||
struct tep_event_format *event, void *context)
|
||||
struct tep_event *event, void *context)
|
||||
{
|
||||
struct tep_handle *pevent = event->pevent;
|
||||
unsigned long long function;
|
||||
|
@@ -27,7 +27,7 @@
|
||||
|
||||
static int timer_expire_handler(struct trace_seq *s,
|
||||
struct tep_record *record,
|
||||
struct tep_event_format *event, void *context)
|
||||
struct tep_event *event, void *context)
|
||||
{
|
||||
trace_seq_printf(s, "hrtimer=");
|
||||
|
||||
@@ -47,7 +47,7 @@ static int timer_expire_handler(struct trace_seq *s,
|
||||
|
||||
static int timer_start_handler(struct trace_seq *s,
|
||||
struct tep_record *record,
|
||||
struct tep_event_format *event, void *context)
|
||||
struct tep_event *event, void *context)
|
||||
{
|
||||
trace_seq_printf(s, "hrtimer=");
|
||||
|
||||
|
@@ -25,7 +25,7 @@
|
||||
#include "trace-seq.h"
|
||||
|
||||
static int call_site_handler(struct trace_seq *s, struct tep_record *record,
|
||||
struct tep_event_format *event, void *context)
|
||||
struct tep_event *event, void *context)
|
||||
{
|
||||
struct tep_format_field *field;
|
||||
unsigned long long val, addr;
|
||||
|
@@ -249,7 +249,7 @@ static const char *find_exit_reason(unsigned isa, int val)
|
||||
}
|
||||
|
||||
static int print_exit_reason(struct trace_seq *s, struct tep_record *record,
|
||||
struct tep_event_format *event, const char *field)
|
||||
struct tep_event *event, const char *field)
|
||||
{
|
||||
unsigned long long isa;
|
||||
unsigned long long val;
|
||||
@@ -270,7 +270,7 @@ static int print_exit_reason(struct trace_seq *s, struct tep_record *record,
|
||||
}
|
||||
|
||||
static int kvm_exit_handler(struct trace_seq *s, struct tep_record *record,
|
||||
struct tep_event_format *event, void *context)
|
||||
struct tep_event *event, void *context)
|
||||
{
|
||||
unsigned long long info1 = 0, info2 = 0;
|
||||
|
||||
@@ -293,7 +293,7 @@ static int kvm_exit_handler(struct trace_seq *s, struct tep_record *record,
|
||||
|
||||
static int kvm_emulate_insn_handler(struct trace_seq *s,
|
||||
struct tep_record *record,
|
||||
struct tep_event_format *event, void *context)
|
||||
struct tep_event *event, void *context)
|
||||
{
|
||||
unsigned long long rip, csbase, len, flags, failed;
|
||||
int llen;
|
||||
@@ -332,7 +332,7 @@ static int kvm_emulate_insn_handler(struct trace_seq *s,
|
||||
|
||||
|
||||
static int kvm_nested_vmexit_inject_handler(struct trace_seq *s, struct tep_record *record,
|
||||
struct tep_event_format *event, void *context)
|
||||
struct tep_event *event, void *context)
|
||||
{
|
||||
if (print_exit_reason(s, record, event, "exit_code") < 0)
|
||||
return -1;
|
||||
@@ -346,7 +346,7 @@ static int kvm_nested_vmexit_inject_handler(struct trace_seq *s, struct tep_reco
|
||||
}
|
||||
|
||||
static int kvm_nested_vmexit_handler(struct trace_seq *s, struct tep_record *record,
|
||||
struct tep_event_format *event, void *context)
|
||||
struct tep_event *event, void *context)
|
||||
{
|
||||
tep_print_num_field(s, "rip %llx ", event, "rip", record, 1);
|
||||
|
||||
@@ -372,7 +372,7 @@ union kvm_mmu_page_role {
|
||||
};
|
||||
|
||||
static int kvm_mmu_print_role(struct trace_seq *s, struct tep_record *record,
|
||||
struct tep_event_format *event, void *context)
|
||||
struct tep_event *event, void *context)
|
||||
{
|
||||
unsigned long long val;
|
||||
static const char *access_str[] = {
|
||||
@@ -387,7 +387,7 @@ static int kvm_mmu_print_role(struct trace_seq *s, struct tep_record *record,
|
||||
|
||||
/*
|
||||
* We can only use the structure if file is of the same
|
||||
* endianess.
|
||||
* endianness.
|
||||
*/
|
||||
if (tep_is_file_bigendian(event->pevent) ==
|
||||
tep_is_host_bigendian(event->pevent)) {
|
||||
@@ -419,7 +419,7 @@ static int kvm_mmu_print_role(struct trace_seq *s, struct tep_record *record,
|
||||
|
||||
static int kvm_mmu_get_page_handler(struct trace_seq *s,
|
||||
struct tep_record *record,
|
||||
struct tep_event_format *event, void *context)
|
||||
struct tep_event *event, void *context)
|
||||
{
|
||||
unsigned long long val;
|
||||
|
||||
|
@@ -26,7 +26,7 @@
|
||||
|
||||
#define INDENT 65
|
||||
|
||||
static void print_string(struct trace_seq *s, struct tep_event_format *event,
|
||||
static void print_string(struct trace_seq *s, struct tep_event *event,
|
||||
const char *name, const void *data)
|
||||
{
|
||||
struct tep_format_field *f = tep_find_field(event, name);
|
||||
@@ -60,7 +60,7 @@ static void print_string(struct trace_seq *s, struct tep_event_format *event,
|
||||
|
||||
static int drv_bss_info_changed(struct trace_seq *s,
|
||||
struct tep_record *record,
|
||||
struct tep_event_format *event, void *context)
|
||||
struct tep_event *event, void *context)
|
||||
{
|
||||
void *data = record->data;
|
||||
|
||||
|
@@ -67,7 +67,7 @@ static void write_and_save_comm(struct tep_format_field *field,
|
||||
|
||||
static int sched_wakeup_handler(struct trace_seq *s,
|
||||
struct tep_record *record,
|
||||
struct tep_event_format *event, void *context)
|
||||
struct tep_event *event, void *context)
|
||||
{
|
||||
struct tep_format_field *field;
|
||||
unsigned long long val;
|
||||
@@ -96,7 +96,7 @@ static int sched_wakeup_handler(struct trace_seq *s,
|
||||
|
||||
static int sched_switch_handler(struct trace_seq *s,
|
||||
struct tep_record *record,
|
||||
struct tep_event_format *event, void *context)
|
||||
struct tep_event *event, void *context)
|
||||
{
|
||||
struct tep_format_field *field;
|
||||
unsigned long long val;
|
||||
|
Reference in New Issue
Block a user