Commit a370b72e authored by Masami Hiramatsu (Google)'s avatar Masami Hiramatsu (Google) Committed by Steven Rostedt (Google)
Browse files

tracing: Add a comment about ftrace_regs definition



To clarify what will be expected on ftrace_regs, add a comment to the
architecture independent definition of the ftrace_regs.

Signed-off-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
Acked-by: default avatarMark Rutland <mark.rutland@arm.com>
Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
parent c54a1a06
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -117,6 +117,32 @@ extern int ftrace_enabled;

#ifndef CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS

/**
 * ftrace_regs - ftrace partial/optimal register set
 *
 * ftrace_regs represents a group of registers which is used at the
 * function entry and exit. There are three types of registers.
 *
 * - Registers for passing the parameters to callee, including the stack
 *   pointer. (e.g. rcx, rdx, rdi, rsi, r8, r9 and rsp on x86_64)
 * - Registers for passing the return values to caller.
 *   (e.g. rax and rdx on x86_64)
 * - Registers for hooking the function call and return including the
 *   frame pointer (the frame pointer is architecture/config dependent)
 *   (e.g. rip, rbp and rsp for x86_64)
 *
 * Also, architecture dependent fields can be used for internal process.
 * (e.g. orig_ax on x86_64)
 *
 * On the function entry, those registers will be restored except for
 * the stack pointer, so that user can change the function parameters
 * and instruction pointer (e.g. live patching.)
 * On the function exit, only registers which is used for return values
 * are restored.
 *
 * NOTE: user *must not* access regs directly, only do it via APIs, because
 * the member can be changed according to the architecture.
 */
struct ftrace_regs {
	struct pt_regs		regs;
};