unsigned long *start, unsigned long *end) { }
#endif
+++ enum {
+++ POWER_NONE = 0,
+++ POWER_CSTATE = 1,
+++ POWER_PSTATE = 2,
+++ };
+++
+++ struct power_trace {
+++ #ifdef CONFIG_POWER_TRACER
+++ ktime_t stamp;
+++ ktime_t end;
+++ int type;
+++ int state;
+++ #endif
+++ };
+++
+++ #ifdef CONFIG_POWER_TRACER
+++ extern void trace_power_start(struct power_trace *it, unsigned int type,
+++ unsigned int state);
+++ extern void trace_power_mark(struct power_trace *it, unsigned int type,
+++ unsigned int state);
+++ extern void trace_power_end(struct power_trace *it);
+++ #else
+++ static inline void trace_power_start(struct power_trace *it, unsigned int type,
+++ unsigned int state) { }
+++ static inline void trace_power_mark(struct power_trace *it, unsigned int type,
+++ unsigned int state) { }
+++ static inline void trace_power_end(struct power_trace *it) { }
+++ #endif
+++
++
++ +/*
++ + * Structure that defines an entry function trace.
++ + */
++ +struct ftrace_graph_ent {
++ + unsigned long func; /* Current function */
++ + int depth;
++ +};
+
/*
* Structure that defines a return function trace.
*/
obj-$(CONFIG_STACK_TRACER) += trace_stack.o
obj-$(CONFIG_MMIOTRACE) += trace_mmiotrace.o
obj-$(CONFIG_BOOT_TRACER) += trace_boot.o
-- -obj-$(CONFIG_FUNCTION_RET_TRACER) += trace_functions_return.o
++ +obj-$(CONFIG_FUNCTION_GRAPH_TRACER) += trace_functions_graph.o
obj-$(CONFIG_TRACE_BRANCH_PROFILING) += trace_branch.o
obj-$(CONFIG_BTS_TRACER) += trace_bts.o
+++ obj-$(CONFIG_POWER_TRACER) += trace_power.o
libftrace-y := ftrace.o
TRACE_BRANCH,
TRACE_BOOT_CALL,
TRACE_BOOT_RET,
-- - TRACE_FN_RET,
++ + TRACE_GRAPH_RET,
++ + TRACE_GRAPH_ENT,
TRACE_USER_STACK,
TRACE_BTS,
+++ TRACE_POWER,
__TRACE_LAST_TYPE
};
IF_ASSIGN(var, ent, struct trace_boot_call, TRACE_BOOT_CALL);\
IF_ASSIGN(var, ent, struct trace_boot_ret, TRACE_BOOT_RET);\
IF_ASSIGN(var, ent, struct trace_branch, TRACE_BRANCH); \
-- - IF_ASSIGN(var, ent, struct ftrace_ret_entry, TRACE_FN_RET);\
++ + IF_ASSIGN(var, ent, struct ftrace_graph_ent_entry, \
++ + TRACE_GRAPH_ENT); \
++ + IF_ASSIGN(var, ent, struct ftrace_graph_ret_entry, \
++ + TRACE_GRAPH_RET); \
IF_ASSIGN(var, ent, struct bts_entry, TRACE_BTS);\
+++ IF_ASSIGN(var, ent, struct trace_power, TRACE_POWER); \
__ftrace_bad_type(); \
} while (0)