.. | .. |
---|
295 | 295 | return (struct evsel_script *)evsel->priv; |
---|
296 | 296 | } |
---|
297 | 297 | |
---|
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) |
---|
300 | 299 | { |
---|
301 | 300 | struct evsel_script *es = zalloc(sizeof(*es)); |
---|
302 | 301 | |
---|
.. | .. |
---|
316 | 315 | return NULL; |
---|
317 | 316 | } |
---|
318 | 317 | |
---|
319 | | -static void perf_evsel_script__delete(struct evsel_script *es) |
---|
| 318 | +static void evsel_script__delete(struct evsel_script *es) |
---|
320 | 319 | { |
---|
321 | 320 | zfree(&es->filename); |
---|
322 | 321 | fclose(es->fp); |
---|
.. | .. |
---|
324 | 323 | free(es); |
---|
325 | 324 | } |
---|
326 | 325 | |
---|
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) |
---|
328 | 327 | { |
---|
329 | 328 | struct stat st; |
---|
330 | 329 | |
---|
.. | .. |
---|
2147 | 2146 | return 0; |
---|
2148 | 2147 | } |
---|
2149 | 2148 | |
---|
| 2149 | +// Used when scr->per_event_dump is not set |
---|
| 2150 | +static struct evsel_script es_stdout; |
---|
| 2151 | + |
---|
2150 | 2152 | static int process_attr(struct perf_tool *tool, union perf_event *event, |
---|
2151 | 2153 | struct evlist **pevlist) |
---|
2152 | 2154 | { |
---|
.. | .. |
---|
2155 | 2157 | struct evsel *evsel, *pos; |
---|
2156 | 2158 | u64 sample_type; |
---|
2157 | 2159 | int err; |
---|
2158 | | - static struct evsel_script *es; |
---|
2159 | 2160 | |
---|
2160 | 2161 | err = perf_event__process_attr(tool, event, pevlist); |
---|
2161 | 2162 | if (err) |
---|
.. | .. |
---|
2165 | 2166 | evsel = evlist__last(*pevlist); |
---|
2166 | 2167 | |
---|
2167 | 2168 | 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) |
---|
2174 | 2172 | 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; |
---|
2177 | 2176 | } |
---|
2178 | 2177 | } |
---|
2179 | 2178 | |
---|
.. | .. |
---|
2422 | 2421 | evlist__for_each_entry(evlist, evsel) { |
---|
2423 | 2422 | if (!evsel->priv) |
---|
2424 | 2423 | break; |
---|
2425 | | - perf_evsel_script__delete(evsel->priv); |
---|
| 2424 | + evsel_script__delete(evsel->priv); |
---|
2426 | 2425 | evsel->priv = NULL; |
---|
2427 | 2426 | } |
---|
2428 | 2427 | } |
---|
.. | .. |
---|
2442 | 2441 | if (evsel->priv != NULL) |
---|
2443 | 2442 | continue; |
---|
2444 | 2443 | |
---|
2445 | | - evsel->priv = perf_evsel_script__new(evsel, script->session->data); |
---|
| 2444 | + evsel->priv = evsel_script__new(evsel, script->session->data); |
---|
2446 | 2445 | if (evsel->priv == NULL) |
---|
2447 | 2446 | goto out_err_fclose; |
---|
2448 | 2447 | } |
---|
.. | .. |
---|
2457 | 2456 | static int perf_script__setup_per_event_dump(struct perf_script *script) |
---|
2458 | 2457 | { |
---|
2459 | 2458 | struct evsel *evsel; |
---|
2460 | | - static struct evsel_script es_stdout; |
---|
2461 | 2459 | |
---|
2462 | 2460 | if (script->per_event_dump) |
---|
2463 | 2461 | return perf_script__fopen_per_event_dump(script); |
---|
.. | .. |
---|
2477 | 2475 | evlist__for_each_entry(script->session->evlist, evsel) { |
---|
2478 | 2476 | struct evsel_script *es = evsel->priv; |
---|
2479 | 2477 | |
---|
2480 | | - perf_evsel_script__fprintf(es, stdout); |
---|
2481 | | - perf_evsel_script__delete(es); |
---|
| 2478 | + evsel_script__fprintf(es, stdout); |
---|
| 2479 | + evsel_script__delete(es); |
---|
2482 | 2480 | evsel->priv = NULL; |
---|
2483 | 2481 | } |
---|
2484 | 2482 | } |
---|