Re: [PATCH 1/7] perf tools: Track all user changed config bits

From: James Clark
Date: Tue Dec 02 2025 - 05:41:00 EST




On 02/12/2025 10:15 am, Leo Yan wrote:
On Mon, Dec 01, 2025 at 04:41:04PM +0000, Coresight ML wrote:

[...]

+#define ADD_CONFIG_CHG(format_type, term_type, new_term) \
+{ \
+ struct parse_events_term *term; \
+ u64 bits = 0; \
+ int type; \
+ \
+ list_for_each_entry(term, &head_config->terms, list) { \
+ if (term->type_term == PARSE_EVENTS__TERM_TYPE_USER) { \
+ type = perf_pmu__format_type(pmu, term->config);\
+ if (type != format_type) \
+ continue; \
+ bits |= perf_pmu__format_bits(pmu, term->config); \
+ } else if (term->type_term == term_type) { \
+ bits = ~(u64)0; \
+ } \
+ } \
+ \
+ if (bits) \
+ ADD_CONFIG_TERM_VAL(new_term, cfg_chg, bits, false); \
+ return 0; \

Nitpick: "return 0" is not needed here. Otherwise:

Reviewed-by: Leo Yan <leo.yan@xxxxxxx>

I think it's worse than not needed, it makes it stop collecting the changes after the first one.

It was annoying that this had to be a macro instead of a function because ADD_CONFIG_TERM_VAL constructs the #define name of the first argument.

It's probably worth putting in some effort to make ADD_CONFIG_CHG() a function to avoid problems like this and maybe add a test.