mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-08-15 16:55:04 +00:00
rv: Allow to configure the number of per-task monitor
Now that there are 2 monitors for real-time applications, users may want to enable both of them simultaneously. Make the number of per-task monitor configurable. Default it to 2 for now. Cc: John Ogness <john.ogness@linutronix.de> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Link: https://lore.kernel.org/93e83313fc4ba7f6e66f4abe80ca5f5494d658d0.1752088709.git.namcao@linutronix.de Reviewed-by: Gabriele Monaco <gmonaco@redhat.com> Signed-off-by: Nam Cao <namcao@linutronix.de> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
This commit is contained in:
parent
670ff946b9
commit
fac5493251
@ -75,14 +75,7 @@ struct ltl_monitor {};
|
||||
|
||||
#endif /* CONFIG_RV_LTL_MONITOR */
|
||||
|
||||
/*
|
||||
* Per-task RV monitors count. Nowadays fixed in RV_PER_TASK_MONITORS.
|
||||
* If we find justification for more monitors, we can think about
|
||||
* adding more or developing a dynamic method. So far, none of
|
||||
* these are justified.
|
||||
*/
|
||||
#define RV_PER_TASK_MONITORS 1
|
||||
#define RV_PER_TASK_MONITOR_INIT (RV_PER_TASK_MONITORS)
|
||||
#define RV_PER_TASK_MONITOR_INIT (CONFIG_RV_PER_TASK_MONITORS)
|
||||
|
||||
union rv_task_monitor {
|
||||
struct da_monitor da_mon;
|
||||
|
@ -1642,12 +1642,10 @@ struct task_struct {
|
||||
|
||||
#ifdef CONFIG_RV
|
||||
/*
|
||||
* Per-task RV monitor. Nowadays fixed in RV_PER_TASK_MONITORS.
|
||||
* If we find justification for more monitors, we can think
|
||||
* about adding more or developing a dynamic method. So far,
|
||||
* none of these are justified.
|
||||
* Per-task RV monitor, fixed in CONFIG_RV_PER_TASK_MONITORS.
|
||||
* If memory becomes a concern, we can think about a dynamic method.
|
||||
*/
|
||||
union rv_task_monitor rv[RV_PER_TASK_MONITORS];
|
||||
union rv_task_monitor rv[CONFIG_RV_PER_TASK_MONITORS];
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USER_EVENTS
|
||||
|
@ -32,6 +32,15 @@ menuconfig RV
|
||||
For further information, see:
|
||||
Documentation/trace/rv/runtime-verification.rst
|
||||
|
||||
config RV_PER_TASK_MONITORS
|
||||
int "Maximum number of per-task monitor"
|
||||
depends on RV
|
||||
range 1 8
|
||||
default 2
|
||||
help
|
||||
This option configures the maximum number of per-task RV monitors that can run
|
||||
simultaneously.
|
||||
|
||||
source "kernel/trace/rv/monitors/wip/Kconfig"
|
||||
source "kernel/trace/rv/monitors/wwnr/Kconfig"
|
||||
source "kernel/trace/rv/monitors/sched/Kconfig"
|
||||
|
@ -1,5 +1,6 @@
|
||||
config RV_MON_RTAPP
|
||||
depends on RV
|
||||
depends on RV_PER_TASK_MONITORS >= 2
|
||||
bool "rtapp monitor"
|
||||
help
|
||||
Collection of monitors to check for common problems with real-time
|
||||
|
@ -165,7 +165,7 @@ struct dentry *get_monitors_root(void)
|
||||
LIST_HEAD(rv_monitors_list);
|
||||
|
||||
static int task_monitor_count;
|
||||
static bool task_monitor_slots[RV_PER_TASK_MONITORS];
|
||||
static bool task_monitor_slots[CONFIG_RV_PER_TASK_MONITORS];
|
||||
|
||||
int rv_get_task_monitor_slot(void)
|
||||
{
|
||||
@ -173,12 +173,12 @@ int rv_get_task_monitor_slot(void)
|
||||
|
||||
lockdep_assert_held(&rv_interface_lock);
|
||||
|
||||
if (task_monitor_count == RV_PER_TASK_MONITORS)
|
||||
if (task_monitor_count == CONFIG_RV_PER_TASK_MONITORS)
|
||||
return -EBUSY;
|
||||
|
||||
task_monitor_count++;
|
||||
|
||||
for (i = 0; i < RV_PER_TASK_MONITORS; i++) {
|
||||
for (i = 0; i < CONFIG_RV_PER_TASK_MONITORS; i++) {
|
||||
if (task_monitor_slots[i] == false) {
|
||||
task_monitor_slots[i] = true;
|
||||
return i;
|
||||
@ -194,7 +194,7 @@ void rv_put_task_monitor_slot(int slot)
|
||||
{
|
||||
lockdep_assert_held(&rv_interface_lock);
|
||||
|
||||
if (slot < 0 || slot >= RV_PER_TASK_MONITORS) {
|
||||
if (slot < 0 || slot >= CONFIG_RV_PER_TASK_MONITORS) {
|
||||
WARN_ONCE(1, "RV releasing an invalid slot!: %d\n", slot);
|
||||
return;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user