68bf21aa15
This is the infrastructure to the converting the mcount call sites recorded by the __mcount_loc section into nops on boot. It also allows for using these sites to enable tracing as normal. When the __mcount_loc section is used, the "ftraced" kernel thread is disabled. This uses the current infrastructure to record the mcount call sites as well as convert them to nops. The mcount function is kept as a stub on boot up and not converted to the ftrace_record_ip function. We use the ftrace_record_ip to only record from the table. This patch does not handle modules. That comes with a later patch. Signed-off-by: Steven Rostedt <srostedt@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
25 lines
541 B
C
25 lines
541 B
C
#ifndef ASM_X86__FTRACE_H
|
|
#define ASM_X86__FTRACE_H
|
|
|
|
#ifdef CONFIG_FTRACE
|
|
#define MCOUNT_ADDR ((long)(mcount))
|
|
#define MCOUNT_INSN_SIZE 5 /* sizeof mcount call */
|
|
|
|
#ifndef __ASSEMBLY__
|
|
extern void mcount(void);
|
|
|
|
static inline unsigned long ftrace_call_adjust(unsigned long addr)
|
|
{
|
|
/*
|
|
* call mcount is "e8 <4 byte offset>"
|
|
* The addr points to the 4 byte offset and the caller of this
|
|
* function wants the pointer to e8. Simply subtract one.
|
|
*/
|
|
return addr - 1;
|
|
}
|
|
#endif
|
|
|
|
#endif /* CONFIG_FTRACE */
|
|
|
|
#endif /* ASM_X86__FTRACE_H */
|