Re: [RFC PATCH -tip 1/9] ftrace: Add pt_regs acceptable tracecallback

From: Steven Rostedt
Date: Fri Jun 01 2012 - 22:08:29 EST


On Tue, 2012-05-29 at 21:48 +0900, Masami Hiramatsu wrote:

> struct ftrace_ops {
> - ftrace_func_t func;
> + union {
> + ftrace_func_t func;
> + ftrace_regs_func_t regs_func;
> + };
> struct ftrace_ops *next;
> unsigned long flags;
> int __percpu *disabled;
> @@ -164,6 +182,7 @@ static inline int ftrace_function_local_disabled(struct ftrace_ops *ops)
> }

[..]

>
> static struct ftrace_ops global_ops = {
> - .func = ftrace_stub,
> + .regs_func = ftrace_regs_stub,
> .notrace_hash = EMPTY_HASH,
> .filter_hash = EMPTY_HASH,
> + .flags = FTRACE_OPS_FL_SAVE_REGS,
> };
>
> static DEFINE_MUTEX(ftrace_regex_lock);
> @@ -3911,7 +3924,8 @@ void __init ftrace_init(void)
> #else
>
> static struct ftrace_ops global_ops = {
> - .func = ftrace_stub,
> + .regs_func = ftrace_regs_stub,
> + .flags = FTRACE_OPS_FL_SAVE_REGS,
> };
>

Ug, this wont compile with some versions of gcc :-(

The one I stumbled on is gcc 4.5.1 (which I test builds against 4.5.1
and 4.6.0). Then I saw this BZ:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10676

This can't be a union :-( Then we can not initialize it.

I may go with my old approach and just change all callers to have a regs
parameter.

-- Steve


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/