mirror of
https://github.com/torvalds/linux.git
synced 2026-08-04 22:38:46 +02:00
Currently, rtla-timerlat BPF program uses a global variable stored in a .bss section to store whether tracing has been stopped. Move the information to a separate map, so that it is easily writable from userspace, and add a function that clears the value, resuming tracing after it has been stopped. Cc: John Kacur <jkacur@redhat.com> Cc: Luis Goncalves <lgoncalv@redhat.com> Cc: Arnaldo Carvalho de Melo <acme@kernel.org> Cc: Chang Yin <cyin@redhat.com> Cc: Costa Shulyupin <costa.shul@redhat.com> Cc: Crystal Wood <crwood@redhat.com> Cc: Gabriele Monaco <gmonaco@redhat.com> Link: https://lore.kernel.org/20250626123405.1496931-4-tglozar@redhat.com Signed-off-by: Tomas Glozar <tglozar@redhat.com> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
63 lines
1.7 KiB
C
63 lines
1.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#pragma once
|
|
|
|
enum summary_field {
|
|
SUMMARY_CURRENT,
|
|
SUMMARY_MIN,
|
|
SUMMARY_MAX,
|
|
SUMMARY_COUNT,
|
|
SUMMARY_SUM,
|
|
SUMMARY_OVERFLOW,
|
|
SUMMARY_FIELD_N
|
|
};
|
|
|
|
#ifndef __bpf__
|
|
#ifdef HAVE_BPF_SKEL
|
|
int timerlat_bpf_init(struct timerlat_params *params);
|
|
int timerlat_bpf_attach(void);
|
|
void timerlat_bpf_detach(void);
|
|
void timerlat_bpf_destroy(void);
|
|
int timerlat_bpf_wait(int timeout);
|
|
int timerlat_bpf_restart_tracing(void);
|
|
int timerlat_bpf_get_hist_value(int key,
|
|
long long *value_irq,
|
|
long long *value_thread,
|
|
long long *value_user,
|
|
int cpus);
|
|
int timerlat_bpf_get_summary_value(enum summary_field key,
|
|
long long *value_irq,
|
|
long long *value_thread,
|
|
long long *value_user,
|
|
int cpus);
|
|
|
|
static inline int have_libbpf_support(void) { return 1; }
|
|
#else
|
|
static inline int timerlat_bpf_init(struct timerlat_params *params)
|
|
{
|
|
return -1;
|
|
}
|
|
static inline int timerlat_bpf_attach(void) { return -1; }
|
|
static inline void timerlat_bpf_detach(void) { };
|
|
static inline void timerlat_bpf_destroy(void) { };
|
|
static inline int timerlat_bpf_wait(int timeout) { return -1; }
|
|
static inline int timerlat_bpf_restart_tracing(void) { return -1; };
|
|
static inline int timerlat_bpf_get_hist_value(int key,
|
|
long long *value_irq,
|
|
long long *value_thread,
|
|
long long *value_user,
|
|
int cpus)
|
|
{
|
|
return -1;
|
|
}
|
|
static inline int timerlat_bpf_get_summary_value(enum summary_field key,
|
|
long long *value_irq,
|
|
long long *value_thread,
|
|
long long *value_user,
|
|
int cpus)
|
|
{
|
|
return -1;
|
|
}
|
|
static inline int have_libbpf_support(void) { return 0; }
|
|
#endif /* HAVE_BPF_SKEL */
|
|
#endif /* __bpf__ */
|