hc
2024-05-10 23fa18eaa71266feff7ba8d83022d9e1cc83c65a
kernel/tools/perf/builtin-script.c
....@@ -295,8 +295,7 @@
295295 return (struct evsel_script *)evsel->priv;
296296 }
297297
298
-static struct evsel_script *perf_evsel_script__new(struct evsel *evsel,
299
- struct perf_data *data)
298
+static struct evsel_script *evsel_script__new(struct evsel *evsel, struct perf_data *data)
300299 {
301300 struct evsel_script *es = zalloc(sizeof(*es));
302301
....@@ -316,7 +315,7 @@
316315 return NULL;
317316 }
318317
319
-static void perf_evsel_script__delete(struct evsel_script *es)
318
+static void evsel_script__delete(struct evsel_script *es)
320319 {
321320 zfree(&es->filename);
322321 fclose(es->fp);
....@@ -324,7 +323,7 @@
324323 free(es);
325324 }
326325
327
-static int perf_evsel_script__fprintf(struct evsel_script *es, FILE *fp)
326
+static int evsel_script__fprintf(struct evsel_script *es, FILE *fp)
328327 {
329328 struct stat st;
330329
....@@ -2147,6 +2146,9 @@
21472146 return 0;
21482147 }
21492148
2149
+// Used when scr->per_event_dump is not set
2150
+static struct evsel_script es_stdout;
2151
+
21502152 static int process_attr(struct perf_tool *tool, union perf_event *event,
21512153 struct evlist **pevlist)
21522154 {
....@@ -2155,7 +2157,6 @@
21552157 struct evsel *evsel, *pos;
21562158 u64 sample_type;
21572159 int err;
2158
- static struct evsel_script *es;
21592160
21602161 err = perf_event__process_attr(tool, event, pevlist);
21612162 if (err)
....@@ -2165,15 +2166,13 @@
21652166 evsel = evlist__last(*pevlist);
21662167
21672168 if (!evsel->priv) {
2168
- if (scr->per_event_dump) {
2169
- evsel->priv = perf_evsel_script__new(evsel,
2170
- scr->session->data);
2171
- } else {
2172
- es = zalloc(sizeof(*es));
2173
- if (!es)
2169
+ if (scr->per_event_dump) {
2170
+ evsel->priv = evsel_script__new(evsel, scr->session->data);
2171
+ if (!evsel->priv)
21742172 return -ENOMEM;
2175
- es->fp = stdout;
2176
- evsel->priv = es;
2173
+ } else { // Replicate what is done in perf_script__setup_per_event_dump()
2174
+ es_stdout.fp = stdout;
2175
+ evsel->priv = &es_stdout;
21772176 }
21782177 }
21792178
....@@ -2422,7 +2421,7 @@
24222421 evlist__for_each_entry(evlist, evsel) {
24232422 if (!evsel->priv)
24242423 break;
2425
- perf_evsel_script__delete(evsel->priv);
2424
+ evsel_script__delete(evsel->priv);
24262425 evsel->priv = NULL;
24272426 }
24282427 }
....@@ -2442,7 +2441,7 @@
24422441 if (evsel->priv != NULL)
24432442 continue;
24442443
2445
- evsel->priv = perf_evsel_script__new(evsel, script->session->data);
2444
+ evsel->priv = evsel_script__new(evsel, script->session->data);
24462445 if (evsel->priv == NULL)
24472446 goto out_err_fclose;
24482447 }
....@@ -2457,7 +2456,6 @@
24572456 static int perf_script__setup_per_event_dump(struct perf_script *script)
24582457 {
24592458 struct evsel *evsel;
2460
- static struct evsel_script es_stdout;
24612459
24622460 if (script->per_event_dump)
24632461 return perf_script__fopen_per_event_dump(script);
....@@ -2477,8 +2475,8 @@
24772475 evlist__for_each_entry(script->session->evlist, evsel) {
24782476 struct evsel_script *es = evsel->priv;
24792477
2480
- perf_evsel_script__fprintf(es, stdout);
2481
- perf_evsel_script__delete(es);
2478
+ evsel_script__fprintf(es, stdout);
2479
+ evsel_script__delete(es);
24822480 evsel->priv = NULL;
24832481 }
24842482 }