mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 08:58:07 +00:00
a9a5776380
Multiple events may use the same method to print their data. Instead of having all events have a pointer to their print funtions, the trace_event structure now points to a trace_event_functions structure that will hold the way to print ouf the event. The event itself is now passed to the print function to let the print function know what kind of event it should print. This opens the door to consolidating the way several events print their output. text data bss dec hex filename 4913961 1088356 861512 6863829 68bbd5 vmlinux.orig 4900382 1048964 861512 6810858 67ecea vmlinux.init 4900446 1049028 861512 6810986 67ed6a vmlinux.preprint This change slightly increases the size but is needed for the next change. v3: Fix the branch tracer events to handle this change. v2: Fix the new function graph tracer event calls to handle this change. Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Acked-by: Masami Hiramatsu <mhiramat@redhat.com> Acked-by: Frederic Weisbecker <fweisbec@gmail.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
53 lines
1.6 KiB
C
53 lines
1.6 KiB
C
#ifndef __TRACE_EVENTS_H
|
|
#define __TRACE_EVENTS_H
|
|
|
|
#include <linux/trace_seq.h>
|
|
#include "trace.h"
|
|
|
|
extern enum print_line_t
|
|
trace_print_bprintk_msg_only(struct trace_iterator *iter);
|
|
extern enum print_line_t
|
|
trace_print_printk_msg_only(struct trace_iterator *iter);
|
|
|
|
extern int
|
|
seq_print_ip_sym(struct trace_seq *s, unsigned long ip,
|
|
unsigned long sym_flags);
|
|
extern int seq_print_userip_objs(const struct userstack_entry *entry,
|
|
struct trace_seq *s, unsigned long sym_flags);
|
|
extern int seq_print_user_ip(struct trace_seq *s, struct mm_struct *mm,
|
|
unsigned long ip, unsigned long sym_flags);
|
|
|
|
extern int trace_print_context(struct trace_iterator *iter);
|
|
extern int trace_print_lat_context(struct trace_iterator *iter);
|
|
|
|
extern void trace_event_read_lock(void);
|
|
extern void trace_event_read_unlock(void);
|
|
extern struct trace_event *ftrace_find_event(int type);
|
|
|
|
extern enum print_line_t trace_nop_print(struct trace_iterator *iter,
|
|
int flags, struct trace_event *event);
|
|
extern int
|
|
trace_print_lat_fmt(struct trace_seq *s, struct trace_entry *entry);
|
|
|
|
/* used by module unregistering */
|
|
extern int __unregister_ftrace_event(struct trace_event *event);
|
|
extern struct rw_semaphore trace_event_mutex;
|
|
|
|
#define MAX_MEMHEX_BYTES 8
|
|
#define HEX_CHARS (MAX_MEMHEX_BYTES*2 + 1)
|
|
|
|
#define SEQ_PUT_FIELD_RET(s, x) \
|
|
do { \
|
|
if (!trace_seq_putmem(s, &(x), sizeof(x))) \
|
|
return TRACE_TYPE_PARTIAL_LINE; \
|
|
} while (0)
|
|
|
|
#define SEQ_PUT_HEX_FIELD_RET(s, x) \
|
|
do { \
|
|
BUILD_BUG_ON(sizeof(x) > MAX_MEMHEX_BYTES); \
|
|
if (!trace_seq_putmem_hex(s, &(x), sizeof(x))) \
|
|
return TRACE_TYPE_PARTIAL_LINE; \
|
|
} while (0)
|
|
|
|
#endif
|
|
|