From: Nam Cao <namcao@linutronix.de>
To: Gabriele Monaco <gmonaco@redhat.com>,
linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
bpf@vger.kernel.org, Steven Rostedt <rostedt@goodmis.org>,
Gabriele Monaco <gmonaco@redhat.com>
Cc: Alexei Starovoitov <alexei.starovoitov@gmail.com>,
Wen Yang <wen.yang@linux.dev>,
Tobias Schaffner <tobias.schaffner@siemens.com>,
Viktor Malik <vmalik@redhat.com>
Subject: Re: [PATCH v2 04/15] rv: Cast result of model_get_*_name()
Date: Tue, 13 Oct 2026 08:14:47 +0200 [thread overview]
Message-ID: <87jynmgm94.fsf@yellow.woof> (raw)
In-Reply-To: <20261001152042.124445-5-gmonaco@redhat.com>
Gabriele Monaco <gmonaco@redhat.com> writes:
> Functions like model_get_event_name() and model_get_state_name() are
> shared with BPF monitors, however those programs don't play nice with
> string pointers without fixed length and the event_name and state_name
> arrays need to be defined differently. This gets the compiler to notice
> those are const char and the above function discard the const qualifier.
>
> Drop the warning by casting the result to (char *). Note, a cleaner
> solution would require to modify all callers, but that would require
> changing every single monitor's tracepoint and the advantage is minimal.
I prefer the cleaner solution. Just mass replace "char *" with
"const char *", and manually fix up a few errors and we are done.
diff --git a/include/rv/automata.h b/include/rv/automata.h
index 4a4eb40cf09a..e4afd5ba1d06 100644
--- a/include/rv/automata.h
+++ b/include/rv/automata.h
@@ -22,7 +22,7 @@
/*
* model_get_state_name - return the (string) name of the given state
*/
-static char *model_get_state_name(enum states state)
+static const char *model_get_state_name(enum states state)
{
if ((state < 0) || (state >= STATE_MAX))
return "INVALID";
@@ -33,7 +33,7 @@ static char *model_get_state_name(enum states state)
/*
* model_get_event_name - return the (string) name of the given event
*/
-static char *model_get_event_name(enum events event)
+static const char *model_get_event_name(enum events event)
{
if ((event < 0) || (event >= EVENT_MAX))
return "INVALID";
diff --git a/include/rv/da_monitor.h b/include/rv/da_monitor.h
index 6fc5ef8142ac..fc830c9f5046 100644
--- a/include/rv/da_monitor.h
+++ b/include/rv/da_monitor.h
@@ -633,8 +633,8 @@ static inline void da_monitor_destroy(void)
*/
static inline void da_trace_event(struct da_monitor *da_mon,
- char *curr_state, char *event,
- char *next_state, bool is_final,
+ const char *curr_state, const char *event,
+ const char *next_state, bool is_final,
da_id_type id)
{
CONCATENATE(trace_event_, MONITOR_NAME)(curr_state, event, next_state,
@@ -642,7 +642,7 @@ static inline void da_trace_event(struct da_monitor *da_mon,
}
static inline void da_trace_error(struct da_monitor *da_mon,
- char *curr_state, char *event,
+ const char *curr_state, const char *event,
da_id_type id)
{
CONCATENATE(trace_error_, MONITOR_NAME)(curr_state, event);
@@ -662,8 +662,8 @@ static inline da_id_type da_get_id(struct da_monitor *da_mon)
*/
static inline void da_trace_event(struct da_monitor *da_mon,
- char *curr_state, char *event,
- char *next_state, bool is_final,
+ const char *curr_state, const char *event,
+ const char *next_state, bool is_final,
da_id_type id)
{
CONCATENATE(trace_event_, MONITOR_NAME)(id, curr_state, event,
@@ -671,7 +671,7 @@ static inline void da_trace_event(struct da_monitor *da_mon,
}
static inline void da_trace_error(struct da_monitor *da_mon,
- char *curr_state, char *event,
+ const char *curr_state, const char *event,
da_id_type id)
{
CONCATENATE(trace_error_, MONITOR_NAME)(id, curr_state, event);
diff --git a/include/rv/ha_monitor.h b/include/rv/ha_monitor.h
index 6e1c7fe5449a..0952a3f161c3 100644
--- a/include/rv/ha_monitor.h
+++ b/include/rv/ha_monitor.h
@@ -87,7 +87,7 @@ _Static_assert(offsetof(struct ha_monitor, da_mon) == 0,
* environment constraint is false. This function can be called also with no
* event from a timer (state constraints only).
*/
-static void ha_react(enum states curr_state, enum events event, char *env)
+static void ha_react(enum states curr_state, enum events event, const char *env)
{
rv_react(&rv_this,
"rv: monitor %s does not allow event %s on state %s with env %s\n",
@@ -98,13 +98,13 @@ static void ha_react(enum states curr_state, enum events event, char *env)
#else /* CONFIG_RV_REACTOR */
-static void ha_react(enum states curr_state, enum events event, char *env) { }
+static void ha_react(enum states curr_state, enum events event, const char *env) { }
#endif
/*
* model_get_state_name - return the (string) name of the given state
*/
-static char *model_get_env_name(enum envs env)
+static const char *model_get_env_name(enum envs env)
{
if ((env < 0) || (env >= ENV_MAX))
return "INVALID";
@@ -227,7 +227,7 @@ static inline void ha_get_env_string(struct seq_buf *s,
#if RV_MON_TYPE == RV_MON_GLOBAL || RV_MON_TYPE == RV_MON_PER_CPU
static inline void ha_trace_error_env(struct ha_monitor *ha_mon,
- char *curr_state, char *event, char *env,
+ const char *curr_state, const char *event, const char *env,
da_id_type id)
{
CONCATENATE(trace_error_env_, MONITOR_NAME)(curr_state, event, env);
@@ -237,7 +237,7 @@ static inline void ha_trace_error_env(struct ha_monitor *ha_mon,
#define ha_get_target(ha_mon) da_get_target(&ha_mon->da_mon)
static inline void ha_trace_error_env(struct ha_monitor *ha_mon,
- char *curr_state, char *event, char *env,
+ const char *curr_state, const char *event, const char *env,
da_id_type id)
{
CONCATENATE(trace_error_env_, MONITOR_NAME)(id, curr_state, event, env);
diff --git a/kernel/trace/rv/monitors/nomiss/nomiss.h b/kernel/trace/rv/monitors/nomiss/nomiss.h
index 3d1b436194d7..0e74a27bc38c 100644
--- a/kernel/trace/rv/monitors/nomiss/nomiss.h
+++ b/kernel/trace/rv/monitors/nomiss/nomiss.h
@@ -41,9 +41,9 @@ _Static_assert(env_max_stored_nomiss <= MAX_HA_ENV_LEN, "Not enough slots");
#define HA_CLK_NS
struct automaton_nomiss {
- char *state_names[state_max_nomiss];
- char *event_names[event_max_nomiss];
- char *env_names[env_max_nomiss];
+ const char *state_names[state_max_nomiss];
+ const char *event_names[event_max_nomiss];
+ const char *env_names[env_max_nomiss];
unsigned char function[state_max_nomiss][event_max_nomiss];
unsigned char initial_state;
bool final_states[state_max_nomiss];
diff --git a/kernel/trace/rv/monitors/nomiss/nomiss_trace.h b/kernel/trace/rv/monitors/nomiss/nomiss_trace.h
index 42e7efaca4e7..8ad43b6dde6a 100644
--- a/kernel/trace/rv/monitors/nomiss/nomiss_trace.h
+++ b/kernel/trace/rv/monitors/nomiss/nomiss_trace.h
@@ -6,14 +6,14 @@
#ifdef CONFIG_RV_MON_NOMISS
DEFINE_EVENT(event_da_monitor_id, event_nomiss,
- TP_PROTO(int id, char *state, char *event, char *next_state, bool final_state),
+ TP_PROTO(int id, const char *state, const char *event, const char *next_state, bool final_state),
TP_ARGS(id, state, event, next_state, final_state));
DEFINE_EVENT(error_da_monitor_id, error_nomiss,
- TP_PROTO(int id, char *state, char *event),
+ TP_PROTO(int id, const char *state, const char *event),
TP_ARGS(id, state, event));
DEFINE_EVENT(error_env_da_monitor_id, error_env_nomiss,
- TP_PROTO(int id, char *state, char *event, char *env),
+ TP_PROTO(int id, const char *state, const char *event, const char *env),
TP_ARGS(id, state, event, env));
#endif /* CONFIG_RV_MON_NOMISS */
diff --git a/kernel/trace/rv/monitors/nrp/nrp.h b/kernel/trace/rv/monitors/nrp/nrp.h
index 3270d4c0139f..f6c1ec62233d 100644
--- a/kernel/trace/rv/monitors/nrp/nrp.h
+++ b/kernel/trace/rv/monitors/nrp/nrp.h
@@ -26,8 +26,8 @@ enum events_nrp {
};
struct automaton_nrp {
- char *state_names[state_max_nrp];
- char *event_names[event_max_nrp];
+ const char *state_names[state_max_nrp];
+ const char *event_names[event_max_nrp];
unsigned char function[state_max_nrp][event_max_nrp];
unsigned char initial_state;
bool final_states[state_max_nrp];
diff --git a/kernel/trace/rv/monitors/nrp/nrp_trace.h b/kernel/trace/rv/monitors/nrp/nrp_trace.h
index 2e13497de3b6..bcdb44c8e1fa 100644
--- a/kernel/trace/rv/monitors/nrp/nrp_trace.h
+++ b/kernel/trace/rv/monitors/nrp/nrp_trace.h
@@ -6,10 +6,10 @@
#ifdef CONFIG_RV_MON_NRP
DEFINE_EVENT(event_da_monitor_id, event_nrp,
- TP_PROTO(int id, char *state, char *event, char *next_state, bool final_state),
+ TP_PROTO(int id, const char *state, const char *event, const char *next_state, bool final_state),
TP_ARGS(id, state, event, next_state, final_state));
DEFINE_EVENT(error_da_monitor_id, error_nrp,
- TP_PROTO(int id, char *state, char *event),
+ TP_PROTO(int id, const char *state, const char *event),
TP_ARGS(id, state, event));
#endif /* CONFIG_RV_MON_NRP */
diff --git a/kernel/trace/rv/monitors/opid/opid.h b/kernel/trace/rv/monitors/opid/opid.h
index fb0aa4c28aa6..42680aa81f33 100644
--- a/kernel/trace/rv/monitors/opid/opid.h
+++ b/kernel/trace/rv/monitors/opid/opid.h
@@ -30,9 +30,9 @@ enum envs_opid {
_Static_assert(env_max_stored_opid <= MAX_HA_ENV_LEN, "Not enough slots");
struct automaton_opid {
- char *state_names[state_max_opid];
- char *event_names[event_max_opid];
- char *env_names[env_max_opid];
+ const char *state_names[state_max_opid];
+ const char *event_names[event_max_opid];
+ const char *env_names[env_max_opid];
unsigned char function[state_max_opid][event_max_opid];
unsigned char initial_state;
bool final_states[state_max_opid];
diff --git a/kernel/trace/rv/monitors/opid/opid_trace.h b/kernel/trace/rv/monitors/opid/opid_trace.h
index b04005b64208..daca1f4a1cd6 100644
--- a/kernel/trace/rv/monitors/opid/opid_trace.h
+++ b/kernel/trace/rv/monitors/opid/opid_trace.h
@@ -6,14 +6,14 @@
#ifdef CONFIG_RV_MON_OPID
DEFINE_EVENT(event_da_monitor, event_opid,
- TP_PROTO(char *state, char *event, char *next_state, bool final_state),
+ TP_PROTO(const char *state, const char *event, const char *next_state, bool final_state),
TP_ARGS(state, event, next_state, final_state));
DEFINE_EVENT(error_da_monitor, error_opid,
- TP_PROTO(char *state, char *event),
+ TP_PROTO(const char *state, const char *event),
TP_ARGS(state, event));
DEFINE_EVENT(error_env_da_monitor, error_env_opid,
- TP_PROTO(char *state, char *event, char *env),
+ TP_PROTO(const char *state, const char *event, const char *env),
TP_ARGS(state, event, env));
#endif /* CONFIG_RV_MON_OPID */
diff --git a/kernel/trace/rv/monitors/pagefault/pagefault_trace.h b/kernel/trace/rv/monitors/pagefault/pagefault_trace.h
index fe1f82597b1a..cd0915a42c85 100644
--- a/kernel/trace/rv/monitors/pagefault/pagefault_trace.h
+++ b/kernel/trace/rv/monitors/pagefault/pagefault_trace.h
@@ -6,7 +6,7 @@
#ifdef CONFIG_RV_MON_PAGEFAULT
DEFINE_EVENT(event_ltl_monitor_id, event_pagefault,
- TP_PROTO(struct task_struct *task, char *states, char *atoms, char *next),
+ TP_PROTO(struct task_struct *task, const char *states, const char *atoms, const char *next),
TP_ARGS(task, states, atoms, next));
DEFINE_EVENT(error_ltl_monitor_id, error_pagefault,
TP_PROTO(struct task_struct *task),
diff --git a/kernel/trace/rv/monitors/sco/sco.h b/kernel/trace/rv/monitors/sco/sco.h
index bac3beb51e72..65bcfcb136b7 100644
--- a/kernel/trace/rv/monitors/sco/sco.h
+++ b/kernel/trace/rv/monitors/sco/sco.h
@@ -23,8 +23,8 @@ enum events_sco {
};
struct automaton_sco {
- char *state_names[state_max_sco];
- char *event_names[event_max_sco];
+ const char *state_names[state_max_sco];
+ const char *event_names[event_max_sco];
unsigned char function[state_max_sco][event_max_sco];
unsigned char initial_state;
bool final_states[state_max_sco];
diff --git a/kernel/trace/rv/monitors/sco/sco_trace.h b/kernel/trace/rv/monitors/sco/sco_trace.h
index b711cd9024ec..99bc63873f4a 100644
--- a/kernel/trace/rv/monitors/sco/sco_trace.h
+++ b/kernel/trace/rv/monitors/sco/sco_trace.h
@@ -6,10 +6,10 @@
#ifdef CONFIG_RV_MON_SCO
DEFINE_EVENT(event_da_monitor, event_sco,
- TP_PROTO(char *state, char *event, char *next_state, bool final_state),
+ TP_PROTO(const char *state, const char *event, const char *next_state, bool final_state),
TP_ARGS(state, event, next_state, final_state));
DEFINE_EVENT(error_da_monitor, error_sco,
- TP_PROTO(char *state, char *event),
+ TP_PROTO(const char *state, const char *event),
TP_ARGS(state, event));
#endif /* CONFIG_RV_MON_SCO */
diff --git a/kernel/trace/rv/monitors/scpd/scpd.h b/kernel/trace/rv/monitors/scpd/scpd.h
index d6329da2671b..e9742c2789f7 100644
--- a/kernel/trace/rv/monitors/scpd/scpd.h
+++ b/kernel/trace/rv/monitors/scpd/scpd.h
@@ -24,8 +24,8 @@ enum events_scpd {
};
struct automaton_scpd {
- char *state_names[state_max_scpd];
- char *event_names[event_max_scpd];
+ const char *state_names[state_max_scpd];
+ const char *event_names[event_max_scpd];
unsigned char function[state_max_scpd][event_max_scpd];
unsigned char initial_state;
bool final_states[state_max_scpd];
diff --git a/kernel/trace/rv/monitors/scpd/scpd_trace.h b/kernel/trace/rv/monitors/scpd/scpd_trace.h
index 6b0f4aa4732e..d9013db67f94 100644
--- a/kernel/trace/rv/monitors/scpd/scpd_trace.h
+++ b/kernel/trace/rv/monitors/scpd/scpd_trace.h
@@ -6,10 +6,10 @@
#ifdef CONFIG_RV_MON_SCPD
DEFINE_EVENT(event_da_monitor, event_scpd,
- TP_PROTO(char *state, char *event, char *next_state, bool final_state),
+ TP_PROTO(const char *state, const char *event, const char *next_state, bool final_state),
TP_ARGS(state, event, next_state, final_state));
DEFINE_EVENT(error_da_monitor, error_scpd,
- TP_PROTO(char *state, char *event),
+ TP_PROTO(const char *state, const char *event),
TP_ARGS(state, event));
#endif /* CONFIG_RV_MON_SCPD */
diff --git a/kernel/trace/rv/monitors/sleep/sleep_trace.h b/kernel/trace/rv/monitors/sleep/sleep_trace.h
index 22eaf31da987..446c30c3af36 100644
--- a/kernel/trace/rv/monitors/sleep/sleep_trace.h
+++ b/kernel/trace/rv/monitors/sleep/sleep_trace.h
@@ -6,7 +6,7 @@
#ifdef CONFIG_RV_MON_SLEEP
DEFINE_EVENT(event_ltl_monitor_id, event_sleep,
- TP_PROTO(struct task_struct *task, char *states, char *atoms, char *next),
+ TP_PROTO(struct task_struct *task, const char *states, const char *atoms, const char *next),
TP_ARGS(task, states, atoms, next));
DEFINE_EVENT(error_ltl_monitor_id, error_sleep,
TP_PROTO(struct task_struct *task),
diff --git a/kernel/trace/rv/monitors/snep/snep.h b/kernel/trace/rv/monitors/snep/snep.h
index 357520a5b3d1..fabc363684d2 100644
--- a/kernel/trace/rv/monitors/snep/snep.h
+++ b/kernel/trace/rv/monitors/snep/snep.h
@@ -24,8 +24,8 @@ enum events_snep {
};
struct automaton_snep {
- char *state_names[state_max_snep];
- char *event_names[event_max_snep];
+ const char *state_names[state_max_snep];
+ const char *event_names[event_max_snep];
unsigned char function[state_max_snep][event_max_snep];
unsigned char initial_state;
bool final_states[state_max_snep];
diff --git a/kernel/trace/rv/monitors/snep/snep_trace.h b/kernel/trace/rv/monitors/snep/snep_trace.h
index 01aad49a949a..d758882e7607 100644
--- a/kernel/trace/rv/monitors/snep/snep_trace.h
+++ b/kernel/trace/rv/monitors/snep/snep_trace.h
@@ -6,10 +6,10 @@
#ifdef CONFIG_RV_MON_SNEP
DEFINE_EVENT(event_da_monitor, event_snep,
- TP_PROTO(char *state, char *event, char *next_state, bool final_state),
+ TP_PROTO(const char *state, const char *event, const char *next_state, bool final_state),
TP_ARGS(state, event, next_state, final_state));
DEFINE_EVENT(error_da_monitor, error_snep,
- TP_PROTO(char *state, char *event),
+ TP_PROTO(const char *state, const char *event),
TP_ARGS(state, event));
#endif /* CONFIG_RV_MON_SNEP */
diff --git a/kernel/trace/rv/monitors/snroc/snroc.h b/kernel/trace/rv/monitors/snroc/snroc.h
index 88b7328ad31a..12aa743e4f19 100644
--- a/kernel/trace/rv/monitors/snroc/snroc.h
+++ b/kernel/trace/rv/monitors/snroc/snroc.h
@@ -23,8 +23,8 @@ enum events_snroc {
};
struct automaton_snroc {
- char *state_names[state_max_snroc];
- char *event_names[event_max_snroc];
+ const char *state_names[state_max_snroc];
+ const char *event_names[event_max_snroc];
unsigned char function[state_max_snroc][event_max_snroc];
unsigned char initial_state;
bool final_states[state_max_snroc];
diff --git a/kernel/trace/rv/monitors/snroc/snroc_trace.h b/kernel/trace/rv/monitors/snroc/snroc_trace.h
index 50114cef5122..aa9162a2d34d 100644
--- a/kernel/trace/rv/monitors/snroc/snroc_trace.h
+++ b/kernel/trace/rv/monitors/snroc/snroc_trace.h
@@ -6,10 +6,10 @@
#ifdef CONFIG_RV_MON_SNROC
DEFINE_EVENT(event_da_monitor_id, event_snroc,
- TP_PROTO(int id, char *state, char *event, char *next_state, bool final_state),
+ TP_PROTO(int id, const char *state, const char *event, const char *next_state, bool final_state),
TP_ARGS(id, state, event, next_state, final_state));
DEFINE_EVENT(error_da_monitor_id, error_snroc,
- TP_PROTO(int id, char *state, char *event),
+ TP_PROTO(int id, const char *state, const char *event),
TP_ARGS(id, state, event));
#endif /* CONFIG_RV_MON_SNROC */
diff --git a/kernel/trace/rv/monitors/sssw/sssw.h b/kernel/trace/rv/monitors/sssw/sssw.h
index 1a4b806061c3..ad8d7a18c52d 100644
--- a/kernel/trace/rv/monitors/sssw/sssw.h
+++ b/kernel/trace/rv/monitors/sssw/sssw.h
@@ -31,8 +31,8 @@ enum events_sssw {
};
struct automaton_sssw {
- char *state_names[state_max_sssw];
- char *event_names[event_max_sssw];
+ const char *state_names[state_max_sssw];
+ const char *event_names[event_max_sssw];
unsigned char function[state_max_sssw][event_max_sssw];
unsigned char initial_state;
bool final_states[state_max_sssw];
diff --git a/kernel/trace/rv/monitors/sssw/sssw_trace.h b/kernel/trace/rv/monitors/sssw/sssw_trace.h
index 6c03cfc6960b..14d22f793a07 100644
--- a/kernel/trace/rv/monitors/sssw/sssw_trace.h
+++ b/kernel/trace/rv/monitors/sssw/sssw_trace.h
@@ -6,10 +6,10 @@
#ifdef CONFIG_RV_MON_SSSW
DEFINE_EVENT(event_da_monitor_id, event_sssw,
- TP_PROTO(int id, char *state, char *event, char *next_state, bool final_state),
+ TP_PROTO(int id, const char *state, const char *event, const char *next_state, bool final_state),
TP_ARGS(id, state, event, next_state, final_state));
DEFINE_EVENT(error_da_monitor_id, error_sssw,
- TP_PROTO(int id, char *state, char *event),
+ TP_PROTO(int id, const char *state, const char *event),
TP_ARGS(id, state, event));
#endif /* CONFIG_RV_MON_SSSW */
diff --git a/kernel/trace/rv/monitors/stall/stall.h b/kernel/trace/rv/monitors/stall/stall.h
index 638520cb1082..ce38b6b2311e 100644
--- a/kernel/trace/rv/monitors/stall/stall.h
+++ b/kernel/trace/rv/monitors/stall/stall.h
@@ -33,9 +33,9 @@ enum envs_stall {
_Static_assert(env_max_stored_stall <= MAX_HA_ENV_LEN, "Not enough slots");
struct automaton_stall {
- char *state_names[state_max_stall];
- char *event_names[event_max_stall];
- char *env_names[env_max_stall];
+ const char *state_names[state_max_stall];
+ const char *event_names[event_max_stall];
+ const char *env_names[env_max_stall];
unsigned char function[state_max_stall][event_max_stall];
unsigned char initial_state;
bool final_states[state_max_stall];
diff --git a/kernel/trace/rv/monitors/stall/stall_trace.h b/kernel/trace/rv/monitors/stall/stall_trace.h
index 6a7cc1b1d040..30896932a91c 100644
--- a/kernel/trace/rv/monitors/stall/stall_trace.h
+++ b/kernel/trace/rv/monitors/stall/stall_trace.h
@@ -6,14 +6,14 @@
#ifdef CONFIG_RV_MON_STALL
DEFINE_EVENT(event_da_monitor_id, event_stall,
- TP_PROTO(int id, char *state, char *event, char *next_state, bool final_state),
+ TP_PROTO(int id, const char *state, const char *event, const char *next_state, bool final_state),
TP_ARGS(id, state, event, next_state, final_state));
DEFINE_EVENT(error_da_monitor_id, error_stall,
- TP_PROTO(int id, char *state, char *event),
+ TP_PROTO(int id, const char *state, const char *event),
TP_ARGS(id, state, event));
DEFINE_EVENT(error_env_da_monitor_id, error_env_stall,
- TP_PROTO(int id, char *state, char *event, char *env),
+ TP_PROTO(int id, const char *state, const char *event, const char *env),
TP_ARGS(id, state, event, env));
#endif /* CONFIG_RV_MON_STALL */
diff --git a/kernel/trace/rv/monitors/sts/sts.h b/kernel/trace/rv/monitors/sts/sts.h
index 6f7b2d9d72e6..74397c37cb0e 100644
--- a/kernel/trace/rv/monitors/sts/sts.h
+++ b/kernel/trace/rv/monitors/sts/sts.h
@@ -31,8 +31,8 @@ enum events_sts {
};
struct automaton_sts {
- char *state_names[state_max_sts];
- char *event_names[event_max_sts];
+ const char *state_names[state_max_sts];
+ const char *event_names[event_max_sts];
unsigned char function[state_max_sts][event_max_sts];
unsigned char initial_state;
bool final_states[state_max_sts];
diff --git a/kernel/trace/rv/monitors/sts/sts_trace.h b/kernel/trace/rv/monitors/sts/sts_trace.h
index d78beb58d5b3..61e8e414627d 100644
--- a/kernel/trace/rv/monitors/sts/sts_trace.h
+++ b/kernel/trace/rv/monitors/sts/sts_trace.h
@@ -6,10 +6,10 @@
#ifdef CONFIG_RV_MON_STS
DEFINE_EVENT(event_da_monitor, event_sts,
- TP_PROTO(char *state, char *event, char *next_state, bool final_state),
+ TP_PROTO(const char *state, const char *event, const char *next_state, bool final_state),
TP_ARGS(state, event, next_state, final_state));
DEFINE_EVENT(error_da_monitor, error_sts,
- TP_PROTO(char *state, char *event),
+ TP_PROTO(const char *state, const char *event),
TP_ARGS(state, event));
#endif /* CONFIG_RV_MON_STS */
diff --git a/kernel/trace/rv/monitors/wakeup/wakeup_trace.h b/kernel/trace/rv/monitors/wakeup/wakeup_trace.h
index 7e056183f920..79bfaf91c912 100644
--- a/kernel/trace/rv/monitors/wakeup/wakeup_trace.h
+++ b/kernel/trace/rv/monitors/wakeup/wakeup_trace.h
@@ -6,7 +6,7 @@
#ifdef CONFIG_RV_MON_WAKEUP
DEFINE_EVENT(event_ltl_monitor_id, event_wakeup,
- TP_PROTO(struct task_struct *task, char *states, char *atoms, char *next),
+ TP_PROTO(struct task_struct *task, const char *states, const char *atoms, const char *next),
TP_ARGS(task, states, atoms, next));
DEFINE_EVENT(error_ltl_monitor_id, error_wakeup,
TP_PROTO(struct task_struct *task),
diff --git a/kernel/trace/rv/monitors/wip/wip.h b/kernel/trace/rv/monitors/wip/wip.h
index b4c3eea94c86..b65baeae5419 100644
--- a/kernel/trace/rv/monitors/wip/wip.h
+++ b/kernel/trace/rv/monitors/wip/wip.h
@@ -23,8 +23,8 @@ enum events_wip {
};
struct automaton_wip {
- char *state_names[state_max_wip];
- char *event_names[event_max_wip];
+ const char *state_names[state_max_wip];
+ const char *event_names[event_max_wip];
unsigned char function[state_max_wip][event_max_wip];
unsigned char initial_state;
bool final_states[state_max_wip];
diff --git a/kernel/trace/rv/monitors/wip/wip_trace.h b/kernel/trace/rv/monitors/wip/wip_trace.h
index aa2162f47a4c..99cf368a4b03 100644
--- a/kernel/trace/rv/monitors/wip/wip_trace.h
+++ b/kernel/trace/rv/monitors/wip/wip_trace.h
@@ -6,10 +6,10 @@
#ifdef CONFIG_RV_MON_WIP
DEFINE_EVENT(event_da_monitor, event_wip,
- TP_PROTO(char *state, char *event, char *next_state, bool final_state),
+ TP_PROTO(const char *state, const char *event, const char *next_state, bool final_state),
TP_ARGS(state, event, next_state, final_state));
DEFINE_EVENT(error_da_monitor, error_wip,
- TP_PROTO(char *state, char *event),
+ TP_PROTO(const char *state, const char *event),
TP_ARGS(state, event));
#endif /* CONFIG_RV_MON_WIP */
diff --git a/kernel/trace/rv/monitors/wwnr/wwnr.h b/kernel/trace/rv/monitors/wwnr/wwnr.h
index a28006512c9b..06d724ac1182 100644
--- a/kernel/trace/rv/monitors/wwnr/wwnr.h
+++ b/kernel/trace/rv/monitors/wwnr/wwnr.h
@@ -23,8 +23,8 @@ enum events_wwnr {
};
struct automaton_wwnr {
- char *state_names[state_max_wwnr];
- char *event_names[event_max_wwnr];
+ const char *state_names[state_max_wwnr];
+ const char *event_names[event_max_wwnr];
unsigned char function[state_max_wwnr][event_max_wwnr];
unsigned char initial_state;
bool final_states[state_max_wwnr];
diff --git a/kernel/trace/rv/monitors/wwnr/wwnr_trace.h b/kernel/trace/rv/monitors/wwnr/wwnr_trace.h
index fc97ec7476ad..c36c8935dce5 100644
--- a/kernel/trace/rv/monitors/wwnr/wwnr_trace.h
+++ b/kernel/trace/rv/monitors/wwnr/wwnr_trace.h
@@ -7,10 +7,10 @@
#ifdef CONFIG_RV_MON_WWNR
/* id is the pid of the task */
DEFINE_EVENT(event_da_monitor_id, event_wwnr,
- TP_PROTO(int id, char *state, char *event, char *next_state, bool final_state),
+ TP_PROTO(int id, const char *state, const char *event, const char *next_state, bool final_state),
TP_ARGS(id, state, event, next_state, final_state));
DEFINE_EVENT(error_da_monitor_id, error_wwnr,
- TP_PROTO(int id, char *state, char *event),
+ TP_PROTO(int id, const char *state, const char *event),
TP_ARGS(id, state, event));
#endif /* CONFIG_RV_MON_WWNR */
diff --git a/kernel/trace/rv/rv_monitors_test.c b/kernel/trace/rv/rv_monitors_test.c
index 3ad11195e664..e70ae29da268 100644
--- a/kernel/trace/rv/rv_monitors_test.c
+++ b/kernel/trace/rv/rv_monitors_test.c
@@ -21,7 +21,7 @@
static struct rv_kunit_ctx *active_ctx;
__printf(1, 0)
-static void rv_kunit_mock_react(const char *msg, va_list args)
+static void rv_kunit_mock_react(const const char *msg, va_list args)
{
if (active_ctx)
++active_ctx->reactions;
diff --git a/kernel/trace/rv/rv_reactors.c b/kernel/trace/rv/rv_reactors.c
index 2f5fc8d18dea..538fd0d70fc7 100644
--- a/kernel/trace/rv/rv_reactors.c
+++ b/kernel/trace/rv/rv_reactors.c
@@ -71,7 +71,7 @@
*/
static LIST_HEAD(rv_reactors_list);
-static struct rv_reactor *get_reactor_rdef_by_name(char *name)
+static struct rv_reactor *get_reactor_rdef_by_name(const char *name)
{
struct rv_reactor *r;
diff --git a/kernel/trace/rv/rv_trace.h b/kernel/trace/rv/rv_trace.h
index 2f8a932432c9..a756c7d11755 100644
--- a/kernel/trace/rv/rv_trace.h
+++ b/kernel/trace/rv/rv_trace.h
@@ -11,7 +11,7 @@
#ifdef CONFIG_DA_MON_EVENTS_IMPLICIT
DECLARE_EVENT_CLASS(event_da_monitor,
- TP_PROTO(char *state, char *event, char *next_state, bool final_state),
+ TP_PROTO(const char *state, const char *event, const char *next_state, bool final_state),
TP_ARGS(state, event, next_state, final_state),
@@ -38,7 +38,7 @@ DECLARE_EVENT_CLASS(event_da_monitor,
DECLARE_EVENT_CLASS(error_da_monitor,
- TP_PROTO(char *state, char *event),
+ TP_PROTO(const char *state, const char *event),
TP_ARGS(state, event),
@@ -68,7 +68,7 @@ DECLARE_EVENT_CLASS(error_da_monitor,
/* For simplicity this class is marked as DA although relevant only for HA */
DECLARE_EVENT_CLASS(error_env_da_monitor,
- TP_PROTO(char *state, char *event, char *env),
+ TP_PROTO(const char *state, const char *event, const char *env),
TP_ARGS(state, event, env),
@@ -100,7 +100,7 @@ DECLARE_EVENT_CLASS(error_env_da_monitor,
#ifdef CONFIG_DA_MON_EVENTS_ID
DECLARE_EVENT_CLASS(event_da_monitor_id,
- TP_PROTO(int id, char *state, char *event, char *next_state, bool final_state),
+ TP_PROTO(int id, const char *state, const char *event, const char *next_state, bool final_state),
TP_ARGS(id, state, event, next_state, final_state),
@@ -130,7 +130,7 @@ DECLARE_EVENT_CLASS(event_da_monitor_id,
DECLARE_EVENT_CLASS(error_da_monitor_id,
- TP_PROTO(int id, char *state, char *event),
+ TP_PROTO(int id, const char *state, const char *event),
TP_ARGS(id, state, event),
@@ -162,7 +162,7 @@ DECLARE_EVENT_CLASS(error_da_monitor_id,
/* For simplicity this class is marked as DA although relevant only for HA */
DECLARE_EVENT_CLASS(error_env_da_monitor_id,
- TP_PROTO(int id, char *state, char *event, char *env),
+ TP_PROTO(int id, const char *state, const char *event, const char *env),
TP_ARGS(id, state, event, env),
@@ -197,7 +197,7 @@ DECLARE_EVENT_CLASS(error_env_da_monitor_id,
#ifdef CONFIG_LTL_MON_EVENTS_ID
DECLARE_EVENT_CLASS(event_ltl_monitor_id,
- TP_PROTO(struct task_struct *task, char *states, char *atoms, char *next),
+ TP_PROTO(struct task_struct *task, const char *states, const char *atoms, const char *next),
TP_ARGS(task, states, atoms, next),
@@ -249,7 +249,7 @@ DECLARE_EVENT_CLASS(error_ltl_monitor_id,
/* Tracepoint useful for monitors development, currenly only used in DA */
TRACE_EVENT(rv_retries_error,
- TP_PROTO(char *name, char *event),
+ TP_PROTO(const char *name, const char *event),
TP_ARGS(name, event),
next prev parent reply other threads:[~2026-10-13 6:12 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-01 15:20 [PATCH v2 00/15] rv: Add support for BPF monitors Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 01/15] sched: Add task enqueue/dequeue trace points Gabriele Monaco
2026-10-01 15:49 ` Peter Zijlstra
2026-10-02 7:09 ` Gabriele Monaco
2026-10-02 10:29 ` Peter Zijlstra
2026-10-02 11:55 ` Gabriele Monaco
2026-10-02 19:18 ` Peter Zijlstra
2026-10-02 19:40 ` Gabriele Monaco
2026-10-04 7:57 ` Steven Rostedt
2026-10-12 11:54 ` Peter Zijlstra
2026-10-04 7:45 ` Steven Rostedt
2026-10-12 11:49 ` Peter Zijlstra
2026-10-02 0:42 ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 02/15] tools/rv: Skip empty pid error in selftest if command failed Gabriele Monaco
2026-10-02 0:42 ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 03/15] rv: Refactor da_trace() functions to get strings internally Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 04/15] rv: Cast result of model_get_*_name() Gabriele Monaco
2026-10-13 6:14 ` Nam Cao [this message]
2026-10-13 8:15 ` Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 05/15] tools/rv: Move argument parsing from in_kernel to utils Gabriele Monaco
2026-10-02 0:25 ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 06/15] tools/build: Add a feature test for bpftool-btf Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 07/15] tools/rv: Implement BPF monitor discovery and listing Gabriele Monaco
2026-10-01 15:40 ` sashiko-bot
2026-10-02 0:42 ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 08/15] tools/rv: Implement BPF monitor loading and tracing Gabriele Monaco
2026-10-01 15:41 ` sashiko-bot
2026-10-02 0:43 ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 09/15] tools/rv: Copy stripped bpf_atomic.h from libarena Gabriele Monaco
2026-10-02 0:42 ` bot+bpf-ci
2026-10-07 12:59 ` Nam Cao
2026-10-08 9:00 ` Gabriele Monaco
2026-10-08 11:16 ` Nam Cao
2026-10-09 10:09 ` Gabriele Monaco
2026-10-11 0:43 ` Steven Rostedt
2026-10-12 7:43 ` Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 10/15] tools/rv: Add BPF monitors Gabriele Monaco
2026-10-01 15:55 ` sashiko-bot
2026-10-02 0:43 ` bot+bpf-ci
2026-10-06 13:29 ` Alexei Starovoitov
2026-10-08 9:54 ` Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 11/15] tools/rv: Define CONFIG_X86_64 statically for " Gabriele Monaco
2026-10-01 15:49 ` sashiko-bot
2026-10-01 15:20 ` [PATCH v2 12/15] tools/rv: Add reactors support to " Gabriele Monaco
2026-10-01 15:57 ` sashiko-bot
2026-10-02 0:43 ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 13/15] verification/rvgen: Add support for " Gabriele Monaco
2026-10-02 0:25 ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 14/15] tools/rv: Add selftest for rv bpf monitors Gabriele Monaco
2026-10-01 16:03 ` sashiko-bot
2026-10-02 0:43 ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 15/15] verification/rvgen: Add selftest for rvgen -b Gabriele Monaco
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87jynmgm94.fsf@yellow.woof \
--to=namcao@linutronix.de \
--cc=alexei.starovoitov@gmail.com \
--cc=bpf@vger.kernel.org \
--cc=gmonaco@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=tobias.schaffner@siemens.com \
--cc=vmalik@redhat.com \
--cc=wen.yang@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox