Linux Trace Kernel
 help / color / mirror / Atom feed
From: Gabriele Monaco <gmonaco@redhat.com>
To: Nam Cao <namcao@linutronix.de>,
	linux-kernel@vger.kernel.org,
	 linux-trace-kernel@vger.kernel.org, bpf@vger.kernel.org,
	Steven Rostedt <rostedt@goodmis.org>
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 10:15:22 +0200	[thread overview]
Message-ID: <b5d9041971e2d033df78ada10977fd1e566f1bef.camel@redhat.com> (raw)
In-Reply-To: <87jynmgm94.fsf@yellow.woof>

On Tue, 2026-10-13 at 08:14 +0200, Nam Cao wrote:
> 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.

Right, no excuse for being lazy in the era of LLMs..

Thanks for the patch,
Gabriele

> 
> 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),
>  


  reply	other threads:[~2026-10-13  8:15 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
2026-10-13  8:15     ` Gabriele Monaco [this message]
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=b5d9041971e2d033df78ada10977fd1e566f1bef.camel@redhat.com \
    --to=gmonaco@redhat.com \
    --cc=alexei.starovoitov@gmail.com \
    --cc=bpf@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=namcao@linutronix.de \
    --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