On Tue, 2008-08-12 at 09:06 -0400, Vivek Goyal wrote: > On Tue, Aug 12, 2008 at 11:14:36AM +0800, Huang Ying wrote: > > Add __ftrace_enabled_save/restore, used to disable ftrace for a > > while. Now, this is used by kexec jump, which need a version without > > lock, for general situation, a locked version should be used. > > > > Signed-off-by: Huang Ying <ying.huang at intel.com> > > > > --- > > include/linux/ftrace.h | 21 +++++++++++++++++++++ > > 1 file changed, 21 insertions(+) > > > > --- a/include/linux/ftrace.h > > +++ b/include/linux/ftrace.h > > @@ -98,6 +98,27 @@ static inline void tracer_disable(void) > > #endif > > } > > > > +/* Ftrace disable/restore without lock. Some synchronization mechanism > > + * must be used to prevent ftrace_enabled to be changed between > > + * disable/restore. */ > > +static inline int __ftrace_enabled_save(void) > > +{ > > +#ifdef CONFIG_FTRACE > > + int saved_ftrace_enabled = ftrace_enabled; > > + ftrace_enabled = 0; > > + return saved_ftrace_enabled; > > +#else > > + return 0; > > +#endif > > +} > > + > > +static inline void __ftrace_enabled_restore(int enabled) > > +{ > > +#ifdef CONFIG_FTRACE > > + ftrace_enabled = enabled; > > +#endif > > +} > > + > > #ifdef CONFIG_FRAME_POINTER > > /* TODO: need to fix this for ARM */ > > # define CALLER_ADDR0 ((unsigned long)__builtin_return_address(0)) > > I guess steven would like to see a patch which introduces both locked > and lockless versions and with a very good comment explaining in what > kind of unusual situation one can use the lockless version. Have sent a locked version to Steven. And, there are some comments for non-locked version, __ftrace_enabled_save() in above patch. What do you think about it? Best Regards, Huang Ying