@@ -77,6 +77,41 @@ static int add_hw_hybrid(struct parse_events_state *parse_state,
7777 return 0 ;
7878}
7979
80+ static int create_raw_event_hybrid (int * idx , struct list_head * list ,
81+ struct perf_event_attr * attr , char * name ,
82+ struct list_head * config_terms ,
83+ struct perf_pmu * pmu )
84+ {
85+ struct evsel * evsel ;
86+
87+ attr -> type = pmu -> type ;
88+ evsel = parse_events__add_event_hybrid (list , idx , attr , name ,
89+ pmu , config_terms );
90+ if (evsel )
91+ evsel -> pmu_name = strdup (pmu -> name );
92+ else
93+ return - ENOMEM ;
94+
95+ return 0 ;
96+ }
97+
98+ static int add_raw_hybrid (struct parse_events_state * parse_state ,
99+ struct list_head * list , struct perf_event_attr * attr ,
100+ char * name , struct list_head * config_terms )
101+ {
102+ struct perf_pmu * pmu ;
103+ int ret ;
104+
105+ perf_pmu__for_each_hybrid_pmu (pmu ) {
106+ ret = create_raw_event_hybrid (& parse_state -> idx , list , attr ,
107+ name , config_terms , pmu );
108+ if (ret )
109+ return ret ;
110+ }
111+
112+ return 0 ;
113+ }
114+
80115int parse_events__add_numeric_hybrid (struct parse_events_state * parse_state ,
81116 struct list_head * list ,
82117 struct perf_event_attr * attr ,
@@ -96,7 +131,8 @@ int parse_events__add_numeric_hybrid(struct parse_events_state *parse_state,
96131 config_terms );
97132 }
98133
99- return -1 ;
134+ return add_raw_hybrid (parse_state , list , attr , name ,
135+ config_terms );
100136}
101137
102138int parse_events__add_cache_hybrid (struct list_head * list , int * idx ,
0 commit comments