mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 04:31:50 +00:00
tracing/osnoise: Remove TIMERLAT ifdefs from inside functions
Remove CONFIG_TIMERLAT_TRACER from inside functions, avoiding compilation problems in the future. Link: https://lkml.kernel.org/r/8245abb5a112d249f5da6c1df499244ad9e647bc.1635702894.git.bristot@kernel.org Cc: Ingo Molnar <mingo@redhat.com> Cc: Tom Zanussi <zanussi@kernel.org> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Juri Lelli <juri.lelli@redhat.com> Cc: Clark Williams <williams@redhat.com> Cc: John Kacur <jkacur@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Cc: Daniel Bristot de Oliveira <bristot@kernel.org> Cc: linux-rt-users@vger.kernel.org Cc: linux-trace-devel@vger.kernel.org Cc: linux-kernel@vger.kernel.org Suggested-by: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
parent
dae181349f
commit
ccb6754495
@ -321,6 +321,57 @@ static struct osnoise_data {
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifdef CONFIG_TIMERLAT_TRACER
|
||||
static inline bool timerlat_enabled(void)
|
||||
{
|
||||
return osnoise_data.timerlat_tracer;
|
||||
}
|
||||
|
||||
static inline int timerlat_softirq_exit(struct osnoise_variables *osn_var)
|
||||
{
|
||||
struct timerlat_variables *tlat_var = this_cpu_tmr_var();
|
||||
/*
|
||||
* If the timerlat is enabled, but the irq handler did
|
||||
* not run yet enabling timerlat_tracer, do not trace.
|
||||
*/
|
||||
if (!tlat_var->tracing_thread) {
|
||||
osn_var->softirq.arrival_time = 0;
|
||||
osn_var->softirq.delta_start = 0;
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static inline int timerlat_thread_exit(struct osnoise_variables *osn_var)
|
||||
{
|
||||
struct timerlat_variables *tlat_var = this_cpu_tmr_var();
|
||||
/*
|
||||
* If the timerlat is enabled, but the irq handler did
|
||||
* not run yet enabling timerlat_tracer, do not trace.
|
||||
*/
|
||||
if (!tlat_var->tracing_thread) {
|
||||
osn_var->thread.delta_start = 0;
|
||||
osn_var->thread.arrival_time = 0;
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
#else /* CONFIG_TIMERLAT_TRACER */
|
||||
static inline bool timerlat_enabled(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline int timerlat_softirq_exit(struct osnoise_variables *osn_var)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
static inline int timerlat_thread_exit(struct osnoise_variables *osn_var)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PREEMPT_RT
|
||||
/*
|
||||
* Print the osnoise header info.
|
||||
@ -978,21 +1029,9 @@ static void trace_softirq_exit_callback(void *data, unsigned int vec_nr)
|
||||
if (!osn_var->sampling)
|
||||
return;
|
||||
|
||||
#ifdef CONFIG_TIMERLAT_TRACER
|
||||
/*
|
||||
* If the timerlat is enabled, but the irq handler did
|
||||
* not run yet enabling timerlat_tracer, do not trace.
|
||||
*/
|
||||
if (unlikely(osnoise_data.timerlat_tracer)) {
|
||||
struct timerlat_variables *tlat_var;
|
||||
tlat_var = this_cpu_tmr_var();
|
||||
if (!tlat_var->tracing_thread) {
|
||||
osn_var->softirq.arrival_time = 0;
|
||||
osn_var->softirq.delta_start = 0;
|
||||
if (unlikely(timerlat_enabled()))
|
||||
if (!timerlat_softirq_exit(osn_var))
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
duration = get_int_safe_duration(osn_var, &osn_var->softirq.delta_start);
|
||||
trace_softirq_noise(vec_nr, osn_var->softirq.arrival_time, duration);
|
||||
@ -1086,17 +1125,9 @@ thread_exit(struct osnoise_variables *osn_var, struct task_struct *t)
|
||||
if (!osn_var->sampling)
|
||||
return;
|
||||
|
||||
#ifdef CONFIG_TIMERLAT_TRACER
|
||||
if (osnoise_data.timerlat_tracer) {
|
||||
struct timerlat_variables *tlat_var;
|
||||
tlat_var = this_cpu_tmr_var();
|
||||
if (!tlat_var->tracing_thread) {
|
||||
osn_var->thread.delta_start = 0;
|
||||
osn_var->thread.arrival_time = 0;
|
||||
if (unlikely(timerlat_enabled()))
|
||||
if (!timerlat_thread_exit(osn_var))
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
duration = get_int_safe_duration(osn_var, &osn_var->thread.delta_start);
|
||||
|
||||
@ -1600,6 +1631,11 @@ static int timerlat_main(void *data)
|
||||
hrtimer_cancel(&tlat->timer);
|
||||
return 0;
|
||||
}
|
||||
#else /* CONFIG_TIMERLAT_TRACER */
|
||||
static int timerlat_main(void *data)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_TIMERLAT_TRACER */
|
||||
|
||||
/*
|
||||
@ -1642,16 +1678,13 @@ static int start_kthread(unsigned int cpu)
|
||||
void *main = osnoise_main;
|
||||
char comm[24];
|
||||
|
||||
#ifdef CONFIG_TIMERLAT_TRACER
|
||||
if (osnoise_data.timerlat_tracer) {
|
||||
if (timerlat_enabled()) {
|
||||
snprintf(comm, 24, "timerlat/%d", cpu);
|
||||
main = timerlat_main;
|
||||
} else {
|
||||
snprintf(comm, 24, "osnoise/%d", cpu);
|
||||
}
|
||||
#else
|
||||
snprintf(comm, 24, "osnoise/%d", cpu);
|
||||
#endif
|
||||
|
||||
kthread = kthread_create_on_cpu(main, NULL, cpu, comm);
|
||||
|
||||
if (IS_ERR(kthread)) {
|
||||
@ -1945,6 +1978,35 @@ static const struct file_operations cpus_fops = {
|
||||
.llseek = generic_file_llseek,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_TIMERLAT_TRACER
|
||||
/*
|
||||
* init_timerlat_tracefs - A function to initialize the timerlat interface files
|
||||
*/
|
||||
static int init_timerlat_tracefs(struct dentry *top_dir)
|
||||
{
|
||||
struct dentry *tmp;
|
||||
|
||||
#ifdef CONFIG_STACKTRACE
|
||||
tmp = tracefs_create_file("print_stack", TRACE_MODE_WRITE, top_dir,
|
||||
&osnoise_print_stack, &trace_min_max_fops);
|
||||
if (!tmp)
|
||||
return -ENOMEM;
|
||||
#endif
|
||||
|
||||
tmp = tracefs_create_file("timerlat_period_us", TRACE_MODE_WRITE, top_dir,
|
||||
&timerlat_period, &trace_min_max_fops);
|
||||
if (!tmp)
|
||||
return -ENOMEM;
|
||||
|
||||
return 0;
|
||||
}
|
||||
#else /* CONFIG_TIMERLAT_TRACER */
|
||||
static int init_timerlat_tracefs(struct dentry *top_dir)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_TIMERLAT_TRACER */
|
||||
|
||||
/*
|
||||
* init_tracefs - A function to initialize the tracefs interface files
|
||||
*
|
||||
@ -1989,19 +2051,10 @@ static int init_tracefs(void)
|
||||
tmp = trace_create_file("cpus", TRACE_MODE_WRITE, top_dir, NULL, &cpus_fops);
|
||||
if (!tmp)
|
||||
goto err;
|
||||
#ifdef CONFIG_TIMERLAT_TRACER
|
||||
#ifdef CONFIG_STACKTRACE
|
||||
tmp = tracefs_create_file("print_stack", TRACE_MODE_WRITE, top_dir,
|
||||
&osnoise_print_stack, &trace_min_max_fops);
|
||||
if (!tmp)
|
||||
goto err;
|
||||
#endif
|
||||
|
||||
tmp = tracefs_create_file("timerlat_period_us", TRACE_MODE_WRITE, top_dir,
|
||||
&timerlat_period, &trace_min_max_fops);
|
||||
if (!tmp)
|
||||
ret = init_timerlat_tracefs(top_dir);
|
||||
if (ret)
|
||||
goto err;
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
||||
@ -2207,6 +2260,16 @@ static struct tracer timerlat_tracer __read_mostly = {
|
||||
.print_header = print_timerlat_headers,
|
||||
.allow_instances = true,
|
||||
};
|
||||
|
||||
__init static int init_timerlat_tracer(void)
|
||||
{
|
||||
return register_tracer(&timerlat_tracer);
|
||||
}
|
||||
#else /* CONFIG_TIMERLAT_TRACER */
|
||||
__init static int init_timerlat_tracer(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_TIMERLAT_TRACER */
|
||||
|
||||
__init static int init_osnoise_tracer(void)
|
||||
@ -2223,13 +2286,12 @@ __init static int init_osnoise_tracer(void)
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_TIMERLAT_TRACER
|
||||
ret = register_tracer(&timerlat_tracer);
|
||||
ret = init_timerlat_tracer();
|
||||
if (ret) {
|
||||
pr_err(BANNER "Error registering timerlat\n");
|
||||
pr_err(BANNER "Error registering timerlat!\n");
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
osnoise_init_hotplug_support();
|
||||
|
||||
INIT_LIST_HEAD_RCU(&osnoise_instances);
|
||||
|
Loading…
Reference in New Issue
Block a user