rv: Let the reactors take care of buffers
Each RV monitor has one static buffer to send to the reactors. If multiple errors are detected simultaneously, the one buffer could be overwritten. Instead, leave it to the reactors to handle buffering. 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:
committed by
Steven Rostedt (Google)
parent
3f045de7f5
commit
ff4e233d8a
+10
-35
@@ -19,45 +19,22 @@
|
||||
#ifdef CONFIG_RV_REACTORS
|
||||
|
||||
#define DECLARE_RV_REACTING_HELPERS(name, type) \
|
||||
static char REACT_MSG_##name[1024]; \
|
||||
\
|
||||
static inline char *format_react_msg_##name(type curr_state, type event) \
|
||||
static void cond_react_##name(type curr_state, type event) \
|
||||
{ \
|
||||
snprintf(REACT_MSG_##name, 1024, \
|
||||
"rv: monitor %s does not allow event %s on state %s\n", \
|
||||
#name, \
|
||||
model_get_event_name_##name(event), \
|
||||
model_get_state_name_##name(curr_state)); \
|
||||
return REACT_MSG_##name; \
|
||||
} \
|
||||
\
|
||||
static void cond_react_##name(char *msg) \
|
||||
{ \
|
||||
if (rv_##name.react) \
|
||||
rv_##name.react(msg); \
|
||||
} \
|
||||
\
|
||||
static bool rv_reacting_on_##name(void) \
|
||||
{ \
|
||||
return rv_reacting_on(); \
|
||||
if (!rv_reacting_on() || !rv_##name.react) \
|
||||
return; \
|
||||
rv_##name.react("rv: monitor %s does not allow event %s on state %s\n", \
|
||||
#name, \
|
||||
model_get_event_name_##name(event), \
|
||||
model_get_state_name_##name(curr_state)); \
|
||||
}
|
||||
|
||||
#else /* CONFIG_RV_REACTOR */
|
||||
|
||||
#define DECLARE_RV_REACTING_HELPERS(name, type) \
|
||||
static inline char *format_react_msg_##name(type curr_state, type event) \
|
||||
{ \
|
||||
return NULL; \
|
||||
} \
|
||||
\
|
||||
static void cond_react_##name(char *msg) \
|
||||
static void cond_react_##name(type curr_state, type event) \
|
||||
{ \
|
||||
return; \
|
||||
} \
|
||||
\
|
||||
static bool rv_reacting_on_##name(void) \
|
||||
{ \
|
||||
return 0; \
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -170,8 +147,7 @@ da_event_##name(struct da_monitor *da_mon, enum events_##name event) \
|
||||
return true; \
|
||||
} \
|
||||
\
|
||||
if (rv_reacting_on_##name()) \
|
||||
cond_react_##name(format_react_msg_##name(curr_state, event)); \
|
||||
cond_react_##name(curr_state, event); \
|
||||
\
|
||||
trace_error_##name(model_get_state_name_##name(curr_state), \
|
||||
model_get_event_name_##name(event)); \
|
||||
@@ -202,8 +178,7 @@ static inline bool da_event_##name(struct da_monitor *da_mon, struct task_struct
|
||||
return true; \
|
||||
} \
|
||||
\
|
||||
if (rv_reacting_on_##name()) \
|
||||
cond_react_##name(format_react_msg_##name(curr_state, event)); \
|
||||
cond_react_##name(curr_state, event); \
|
||||
\
|
||||
trace_error_##name(tsk->pid, \
|
||||
model_get_state_name_##name(curr_state), \
|
||||
|
||||
Reference in New Issue
Block a user