Skip to content

Commit 4f1991a

Browse files
committed
tracing histograms: Simplify parse_actions() function
The parse_actions() function uses 'len = str_has_prefix()' to test which action is in the string being parsed. But then it goes and repeats the logic for each different action. This logic can be simplified and duplicate code can be removed as 'len' contains the length of the found prefix which should be used for all actions. Link: https://lore.kernel.org/all/20240107112044.6702cb66@gandalf.local.home/ Link: https://lore.kernel.org/linux-trace-kernel/20240107203258.37e26d2b@gandalf.local.home Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Andy Shevchenko <andy@kernel.org> Cc: Tom Zanussi <zanussi@kernel.org> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
1 parent 2654769 commit 4f1991a

1 file changed

Lines changed: 24 additions & 25 deletions

File tree

kernel/trace/trace_events_hist.c

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4805,36 +4805,35 @@ static int parse_actions(struct hist_trigger_data *hist_data)
48054805
int len;
48064806

48074807
for (i = 0; i < hist_data->attrs->n_actions; i++) {
4808+
enum handler_id hid = 0;
4809+
char *action_str;
4810+
48084811
str = hist_data->attrs->action_str[i];
48094812

4810-
if ((len = str_has_prefix(str, "onmatch("))) {
4811-
char *action_str = str + len;
4813+
if ((len = str_has_prefix(str, "onmatch(")))
4814+
hid = HANDLER_ONMATCH;
4815+
else if ((len = str_has_prefix(str, "onmax(")))
4816+
hid = HANDLER_ONMAX;
4817+
else if ((len = str_has_prefix(str, "onchange(")))
4818+
hid = HANDLER_ONCHANGE;
48124819

4813-
data = onmatch_parse(tr, action_str);
4814-
if (IS_ERR(data)) {
4815-
ret = PTR_ERR(data);
4816-
break;
4817-
}
4818-
} else if ((len = str_has_prefix(str, "onmax("))) {
4819-
char *action_str = str + len;
4820+
action_str = str + len;
48204821

4821-
data = track_data_parse(hist_data, action_str,
4822-
HANDLER_ONMAX);
4823-
if (IS_ERR(data)) {
4824-
ret = PTR_ERR(data);
4825-
break;
4826-
}
4827-
} else if ((len = str_has_prefix(str, "onchange("))) {
4828-
char *action_str = str + len;
4822+
switch (hid) {
4823+
case HANDLER_ONMATCH:
4824+
data = onmatch_parse(tr, action_str);
4825+
break;
4826+
case HANDLER_ONMAX:
4827+
case HANDLER_ONCHANGE:
4828+
data = track_data_parse(hist_data, action_str, hid);
4829+
break;
4830+
default:
4831+
data = ERR_PTR(-EINVAL);
4832+
break;
4833+
}
48294834

4830-
data = track_data_parse(hist_data, action_str,
4831-
HANDLER_ONCHANGE);
4832-
if (IS_ERR(data)) {
4833-
ret = PTR_ERR(data);
4834-
break;
4835-
}
4836-
} else {
4837-
ret = -EINVAL;
4835+
if (IS_ERR(data)) {
4836+
ret = PTR_ERR(data);
48384837
break;
48394838
}
48404839

0 commit comments

Comments
 (0)