mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-02 17:26:42 +09:00
Merge branch 'tip/perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace into perf/core
This commit is contained in:
@@ -178,9 +178,9 @@ struct dyn_ftrace {
|
||||
};
|
||||
|
||||
int ftrace_force_update(void);
|
||||
void ftrace_set_filter(struct ftrace_ops *ops, unsigned char *buf,
|
||||
int ftrace_set_filter(struct ftrace_ops *ops, unsigned char *buf,
|
||||
int len, int reset);
|
||||
void ftrace_set_notrace(struct ftrace_ops *ops, unsigned char *buf,
|
||||
int ftrace_set_notrace(struct ftrace_ops *ops, unsigned char *buf,
|
||||
int len, int reset);
|
||||
void ftrace_set_global_filter(unsigned char *buf, int len, int reset);
|
||||
void ftrace_set_global_notrace(unsigned char *buf, int len, int reset);
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
#include <linux/atomic.h>
|
||||
#include <asm/ptrace.h>
|
||||
#include <asm/system.h>
|
||||
#include <trace/events/irq.h>
|
||||
|
||||
/*
|
||||
* These correspond to the IORESOURCE_IRQ_* defines in
|
||||
@@ -456,11 +455,7 @@ asmlinkage void do_softirq(void);
|
||||
asmlinkage void __do_softirq(void);
|
||||
extern void open_softirq(int nr, void (*action)(struct softirq_action *));
|
||||
extern void softirq_init(void);
|
||||
static inline void __raise_softirq_irqoff(unsigned int nr)
|
||||
{
|
||||
trace_softirq_raise(nr);
|
||||
or_softirq_pending(1UL << nr);
|
||||
}
|
||||
extern void __raise_softirq_irqoff(unsigned int nr);
|
||||
|
||||
extern void raise_softirq_irqoff(unsigned int nr);
|
||||
extern void raise_softirq(unsigned int nr);
|
||||
|
||||
@@ -114,7 +114,7 @@ static inline void tracepoint_synchronize_unregister(void)
|
||||
* as "(void *, void)". The DECLARE_TRACE_NOARGS() will pass in just
|
||||
* "void *data", where as the DECLARE_TRACE() will pass in "void *data, proto".
|
||||
*/
|
||||
#define __DO_TRACE(tp, proto, args, cond) \
|
||||
#define __DO_TRACE(tp, proto, args, cond, prercu, postrcu) \
|
||||
do { \
|
||||
struct tracepoint_func *it_func_ptr; \
|
||||
void *it_func; \
|
||||
@@ -122,6 +122,7 @@ static inline void tracepoint_synchronize_unregister(void)
|
||||
\
|
||||
if (!(cond)) \
|
||||
return; \
|
||||
prercu; \
|
||||
rcu_read_lock_sched_notrace(); \
|
||||
it_func_ptr = rcu_dereference_sched((tp)->funcs); \
|
||||
if (it_func_ptr) { \
|
||||
@@ -132,6 +133,7 @@ static inline void tracepoint_synchronize_unregister(void)
|
||||
} while ((++it_func_ptr)->func); \
|
||||
} \
|
||||
rcu_read_unlock_sched_notrace(); \
|
||||
postrcu; \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
@@ -139,7 +141,7 @@ static inline void tracepoint_synchronize_unregister(void)
|
||||
* not add unwanted padding between the beginning of the section and the
|
||||
* structure. Force alignment to the same alignment as the section start.
|
||||
*/
|
||||
#define __DECLARE_TRACE(name, proto, args, cond, data_proto, data_args) \
|
||||
#define __DECLARE_TRACE(name, proto, args, cond, data_proto, data_args) \
|
||||
extern struct tracepoint __tracepoint_##name; \
|
||||
static inline void trace_##name(proto) \
|
||||
{ \
|
||||
@@ -147,7 +149,17 @@ static inline void tracepoint_synchronize_unregister(void)
|
||||
__DO_TRACE(&__tracepoint_##name, \
|
||||
TP_PROTO(data_proto), \
|
||||
TP_ARGS(data_args), \
|
||||
TP_CONDITION(cond)); \
|
||||
TP_CONDITION(cond),,); \
|
||||
} \
|
||||
static inline void trace_##name##_rcuidle(proto) \
|
||||
{ \
|
||||
if (static_branch(&__tracepoint_##name.key)) \
|
||||
__DO_TRACE(&__tracepoint_##name, \
|
||||
TP_PROTO(data_proto), \
|
||||
TP_ARGS(data_args), \
|
||||
TP_CONDITION(cond), \
|
||||
rcu_idle_exit(), \
|
||||
rcu_idle_enter()); \
|
||||
} \
|
||||
static inline int \
|
||||
register_trace_##name(void (*probe)(data_proto), void *data) \
|
||||
@@ -190,9 +202,11 @@ static inline void tracepoint_synchronize_unregister(void)
|
||||
EXPORT_SYMBOL(__tracepoint_##name)
|
||||
|
||||
#else /* !CONFIG_TRACEPOINTS */
|
||||
#define __DECLARE_TRACE(name, proto, args, cond, data_proto, data_args) \
|
||||
#define __DECLARE_TRACE(name, proto, args, cond, data_proto, data_args) \
|
||||
static inline void trace_##name(proto) \
|
||||
{ } \
|
||||
static inline void trace_##name##_rcuidle(proto) \
|
||||
{ } \
|
||||
static inline int \
|
||||
register_trace_##name(void (*probe)(data_proto), \
|
||||
void *data) \
|
||||
|
||||
@@ -151,6 +151,8 @@ enum {
|
||||
events get removed */
|
||||
static inline void trace_power_start(u64 type, u64 state, u64 cpuid) {};
|
||||
static inline void trace_power_end(u64 cpuid) {};
|
||||
static inline void trace_power_start_rcuidle(u64 type, u64 state, u64 cpuid) {};
|
||||
static inline void trace_power_end_rcuidle(u64 cpuid) {};
|
||||
static inline void trace_power_frequency(u64 type, u64 state, u64 cpuid) {};
|
||||
#endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */
|
||||
|
||||
|
||||
41
include/trace/events/printk.h
Normal file
41
include/trace/events/printk.h
Normal file
@@ -0,0 +1,41 @@
|
||||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM printk
|
||||
|
||||
#if !defined(_TRACE_PRINTK_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define _TRACE_PRINTK_H
|
||||
|
||||
#include <linux/tracepoint.h>
|
||||
|
||||
TRACE_EVENT_CONDITION(console,
|
||||
TP_PROTO(const char *log_buf, unsigned start, unsigned end,
|
||||
unsigned log_buf_len),
|
||||
|
||||
TP_ARGS(log_buf, start, end, log_buf_len),
|
||||
|
||||
TP_CONDITION(start != end),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__dynamic_array(char, msg, end - start + 1)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
if ((start & (log_buf_len - 1)) > (end & (log_buf_len - 1))) {
|
||||
memcpy(__get_dynamic_array(msg),
|
||||
log_buf + (start & (log_buf_len - 1)),
|
||||
log_buf_len - (start & (log_buf_len - 1)));
|
||||
memcpy((char *)__get_dynamic_array(msg) +
|
||||
log_buf_len - (start & (log_buf_len - 1)),
|
||||
log_buf, end & (log_buf_len - 1));
|
||||
} else
|
||||
memcpy(__get_dynamic_array(msg),
|
||||
log_buf + (start & (log_buf_len - 1)),
|
||||
end - start);
|
||||
((char *)__get_dynamic_array(msg))[end - start] = 0;
|
||||
),
|
||||
|
||||
TP_printk("%s", __get_str(msg))
|
||||
);
|
||||
#endif /* _TRACE_PRINTK_H */
|
||||
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
||||
Reference in New Issue
Block a user