|
@@ -82,9 +82,13 @@ void clear_ftrace_function(void);
|
|
|
extern void ftrace_stub(unsigned long a0, unsigned long a1);
|
|
|
|
|
|
#else /* !CONFIG_FUNCTION_TRACER */
|
|
|
-# define register_ftrace_function(ops) do { } while (0)
|
|
|
-# define unregister_ftrace_function(ops) do { } while (0)
|
|
|
-# define clear_ftrace_function(ops) do { } while (0)
|
|
|
+/*
|
|
|
+ * (un)register_ftrace_function must be a macro since the ops parameter
|
|
|
+ * must not be evaluated.
|
|
|
+ */
|
|
|
+#define register_ftrace_function(ops) ({ 0; })
|
|
|
+#define unregister_ftrace_function(ops) ({ 0; })
|
|
|
+static inline void clear_ftrace_function(void) { }
|
|
|
static inline void ftrace_kill(void) { }
|
|
|
static inline void ftrace_stop(void) { }
|
|
|
static inline void ftrace_start(void) { }
|
|
@@ -237,11 +241,13 @@ extern int skip_trace(unsigned long ip);
|
|
|
extern void ftrace_disable_daemon(void);
|
|
|
extern void ftrace_enable_daemon(void);
|
|
|
#else
|
|
|
-# define skip_trace(ip) ({ 0; })
|
|
|
-# define ftrace_force_update() ({ 0; })
|
|
|
-# define ftrace_set_filter(buf, len, reset) do { } while (0)
|
|
|
-# define ftrace_disable_daemon() do { } while (0)
|
|
|
-# define ftrace_enable_daemon() do { } while (0)
|
|
|
+static inline int skip_trace(unsigned long ip) { return 0; }
|
|
|
+static inline int ftrace_force_update(void) { return 0; }
|
|
|
+static inline void ftrace_set_filter(unsigned char *buf, int len, int reset)
|
|
|
+{
|
|
|
+}
|
|
|
+static inline void ftrace_disable_daemon(void) { }
|
|
|
+static inline void ftrace_enable_daemon(void) { }
|
|
|
static inline void ftrace_release_mod(struct module *mod) {}
|
|
|
static inline int register_ftrace_command(struct ftrace_func_command *cmd)
|
|
|
{
|
|
@@ -314,16 +320,16 @@ static inline void __ftrace_enabled_restore(int enabled)
|
|
|
extern void time_hardirqs_on(unsigned long a0, unsigned long a1);
|
|
|
extern void time_hardirqs_off(unsigned long a0, unsigned long a1);
|
|
|
#else
|
|
|
-# define time_hardirqs_on(a0, a1) do { } while (0)
|
|
|
-# define time_hardirqs_off(a0, a1) do { } while (0)
|
|
|
+ static inline void time_hardirqs_on(unsigned long a0, unsigned long a1) { }
|
|
|
+ static inline void time_hardirqs_off(unsigned long a0, unsigned long a1) { }
|
|
|
#endif
|
|
|
|
|
|
#ifdef CONFIG_PREEMPT_TRACER
|
|
|
extern void trace_preempt_on(unsigned long a0, unsigned long a1);
|
|
|
extern void trace_preempt_off(unsigned long a0, unsigned long a1);
|
|
|
#else
|
|
|
-# define trace_preempt_on(a0, a1) do { } while (0)
|
|
|
-# define trace_preempt_off(a0, a1) do { } while (0)
|
|
|
+ static inline void trace_preempt_on(unsigned long a0, unsigned long a1) { }
|
|
|
+ static inline void trace_preempt_off(unsigned long a0, unsigned long a1) { }
|
|
|
#endif
|
|
|
|
|
|
#ifdef CONFIG_FTRACE_MCOUNT_RECORD
|