#ifdef PARSER_DEBUG
 extern int parse_events_debug;
 #endif
-static int get_config_terms(struct parse_events_terms *head_config, struct list_head *head_terms);
+static int get_config_terms(const struct parse_events_terms *head_config,
+                           struct list_head *head_terms);
 static int parse_events_terms__copy(const struct parse_events_terms *src,
                                    struct parse_events_terms *dest);
 
        return "unknown";
 }
 
-static char *get_config_str(struct parse_events_terms *head_terms,
+static char *get_config_str(const struct parse_events_terms *head_terms,
                            enum parse_events__term_type type_term)
 {
        struct parse_events_term *term;
        return NULL;
 }
 
-static char *get_config_metric_id(struct parse_events_terms *head_terms)
+static char *get_config_metric_id(const struct parse_events_terms *head_terms)
 {
        return get_config_str(head_terms, PARSE_EVENTS__TERM_TYPE_METRIC_ID);
 }
 
-static char *get_config_name(struct parse_events_terms *head_terms)
+static char *get_config_name(const struct parse_events_terms *head_terms)
 {
        return get_config_str(head_terms, PARSE_EVENTS__TERM_TYPE_NAME);
 }
                              struct parse_events_term *term,
                              struct parse_events_error *err);
 static int config_attr(struct perf_event_attr *attr,
-                      struct parse_events_terms *head,
+                      const struct parse_events_terms *head,
                       struct parse_events_error *err,
                       config_term_func_t config_term);
 
 #endif
 
 static int config_attr(struct perf_event_attr *attr,
-                      struct parse_events_terms *head,
+                      const struct parse_events_terms *head,
                       struct parse_events_error *err,
                       config_term_func_t config_term)
 {
        return 0;
 }
 
-static int get_config_terms(struct parse_events_terms *head_config, struct list_head *head_terms)
+static int get_config_terms(const struct parse_events_terms *head_config,
+                           struct list_head *head_terms)
 {
 #define ADD_CONFIG_TERM(__type, __weak)                                \
        struct evsel_config_term *__t;                  \
 static int __parse_events_add_numeric(struct parse_events_state *parse_state,
                                struct list_head *list,
                                struct perf_pmu *pmu, u32 type, u32 extended_type,
-                               u64 config, struct parse_events_terms *head_config)
+                               u64 config, const struct parse_events_terms *head_config)
 {
        struct perf_event_attr attr;
        LIST_HEAD(config_terms);
 int parse_events_add_numeric(struct parse_events_state *parse_state,
                             struct list_head *list,
                             u32 type, u64 config,
-                            struct parse_events_terms *head_config,
+                            const struct parse_events_terms *head_config,
                             bool wildcard)
 {
        struct perf_pmu *pmu = NULL;