Lines Matching defs:script
331 return fprintf(fp, "[ perf script: Wrote %.3f MB %s (%" PRIu64 " samples) ]\n",
630 tod_scnprintf(struct perf_script *script, char *buf, int buflen,
641 if (buflen < 64 || !script)
644 env = &script->session->header.env;
691 static int perf_sample__fprintf_start(struct perf_script *script,
773 tod_scnprintf(script, tstr, sizeof(tstr), sample->time);
1828 static void perf_sample__fprint_metric(struct perf_script *script,
1849 perf_evlist__alloc_stats(script->session->evlist, false);
1912 static void process_event(struct perf_script *script,
1929 if (evswitch__discard(&script->evswitch, evsel))
1934 perf_sample__fprintf_start(script, sample, thread, evsel,
1943 if (!script->name_width)
1944 script->name_width = evlist__max_name_len(script->session->evlist);
1946 fprintf(fp, "%*s: ", script->name_width, evname ?: "[unknown]");
1977 if (script->stitch_lbr)
2021 perf_sample__fprint_metric(script, thread, evsel, sample, fp);
2090 pr_debug("\nperf script stopped\n");
2224 struct perf_script *script = container_of(tool, struct perf_script, tool);
2225 struct perf_session *session = script->session;
2243 perf_sample__fprintf_start(script, sample, thread, evsel,
2351 struct perf_script *script = container_of(tool, struct perf_script, tool);
2359 if (!script->show_switch_events)
2416 static void perf_script__fclose_per_event_dump(struct perf_script *script)
2418 struct evlist *evlist = script->session->evlist;
2429 static int perf_script__fopen_per_event_dump(struct perf_script *script)
2433 evlist__for_each_entry(script->session->evlist, evsel) {
2444 evsel->priv = evsel_script__new(evsel, script->session->data);
2452 perf_script__fclose_per_event_dump(script);
2456 static int perf_script__setup_per_event_dump(struct perf_script *script)
2460 if (script->per_event_dump)
2461 return perf_script__fopen_per_event_dump(script);
2465 evlist__for_each_entry(script->session->evlist, evsel)
2471 static void perf_script__exit_per_event_dump_stats(struct perf_script *script)
2475 evlist__for_each_entry(script->session->evlist, evsel) {
2484 static void perf_script__exit(struct perf_script *script)
2486 perf_thread_map__put(script->threads);
2487 perf_cpu_map__put(script->cpus);
2490 static int __cmd_script(struct perf_script *script)
2499 if (script->show_task_events) {
2500 script->tool.comm = process_comm_event;
2501 script->tool.fork = process_fork_event;
2502 script->tool.exit = process_exit_event;
2504 if (script->show_mmap_events) {
2505 script->tool.mmap = process_mmap_event;
2506 script->tool.mmap2 = process_mmap2_event;
2508 if (script->show_switch_events || (scripting_ops && scripting_ops->process_switch))
2509 script->tool.context_switch = process_switch_event;
2510 if (script->show_namespace_events)
2511 script->tool.namespaces = process_namespaces_event;
2512 if (script->show_cgroup_events)
2513 script->tool.cgroup = process_cgroup_event;
2514 if (script->show_lost_events)
2515 script->tool.lost = process_lost_event;
2516 if (script->show_round_events) {
2517 script->tool.ordered_events = false;
2518 script->tool.finished_round = process_finished_round_event;
2520 if (script->show_bpf_events) {
2521 script->tool.ksymbol = process_bpf_events;
2522 script->tool.bpf = process_bpf_events;
2524 if (script->show_text_poke_events) {
2525 script->tool.ksymbol = process_bpf_events;
2526 script->tool.text_poke = process_text_poke_events;
2529 if (perf_script__setup_per_event_dump(script)) {
2534 ret = perf_session__process_events(script->session);
2536 if (script->per_event_dump)
2537 perf_script__exit_per_event_dump_stats(script);
2613 "perf script -s [spec:]script.[spec]):\n\n");
2625 const char *script, *ext;
2633 script = strchr(str, ':');
2634 if (script) {
2635 len = script - str;
2647 script++;
2649 script = str;
2650 ext = strrchr(script, '.');
2652 fprintf(stderr, "invalid script extension");
2657 fprintf(stderr, "invalid script extension");
2662 script_name = strdup(script);
3096 * Currently the only user of this function is the script browser, which
3258 static void script__setup_sample_type(struct perf_script *script)
3260 struct perf_session *session = script->session;
3274 if (script->stitch_lbr && (callchain_param.record_mode != CALLCHAIN_LBR)) {
3277 script->stitch_lbr = false;
3303 static int set_maps(struct perf_script *script)
3305 struct evlist *evlist = script->session->evlist;
3307 if (!script->cpus || !script->threads)
3310 if (WARN_ONCE(script->allocated, "stats double allocation\n"))
3313 perf_evlist__set_maps(&evlist->core, script->cpus, script->threads);
3318 script->allocated = true;
3327 struct perf_script *script = container_of(tool, struct perf_script, tool);
3329 if (script->threads) {
3334 script->threads = thread_map__new_event(&event->thread_map);
3335 if (!script->threads)
3338 return set_maps(script);
3346 struct perf_script *script = container_of(tool, struct perf_script, tool);
3348 if (script->cpus) {
3353 script->cpus = cpu_map__new_data(&event->cpu_map.data);
3354 if (!script->cpus)
3357 return set_maps(script);
3377 struct perf_script *script = container_of(tool, struct perf_script, tool);
3379 ret = perf_script__setup_per_event_dump(script);
3447 struct perf_script script = {
3487 OPT_CALLBACK('s', "script", NULL, "name",
3488 "script file name (lang:script name, script name, or *)",
3490 OPT_STRING('g', "gen-script", &generate_script_lang, "lang",
3491 "generate perf-script.xx script in specified language"),
3548 OPT_BOOLEAN('\0', "show-task-events", &script.show_task_events,
3550 OPT_BOOLEAN('\0', "show-mmap-events", &script.show_mmap_events,
3552 OPT_BOOLEAN('\0', "show-switch-events", &script.show_switch_events,
3554 OPT_BOOLEAN('\0', "show-namespace-events", &script.show_namespace_events,
3556 OPT_BOOLEAN('\0', "show-cgroup-events", &script.show_cgroup_events,
3558 OPT_BOOLEAN('\0', "show-lost-events", &script.show_lost_events,
3560 OPT_BOOLEAN('\0', "show-round-events", &script.show_round_events,
3562 OPT_BOOLEAN('\0', "show-bpf-events", &script.show_bpf_events,
3564 OPT_BOOLEAN('\0', "show-text-poke-events", &script.show_text_poke_events,
3566 OPT_BOOLEAN('\0', "per-event-dump", &script.per_event_dump,
3582 OPT_STRING(0, "time", &script.time_str, "str",
3595 OPT_BOOLEAN('\0', "stitch-lbr", &script.stitch_lbr,
3597 OPTS_EVSWITCH(&script.evswitch),
3602 "perf script [<options>]",
3603 "perf script [<options>] record <script> [<record-options>] <command>",
3604 "perf script [<options>] report <script> [script-args]",
3605 "perf script [<options>] <script> [<record-options>] <command>",
3606 "perf script [<options>] <top-script> [script-args]",
3640 "Please specify a valid report script"
3641 "(see 'perf script -l' for listing)\n");
3670 "Couldn't find script `%s'\n\n See perf"
3671 " script -l for available scripts.\n", argv[0]);
3683 "`%s' script requires options."
3684 "\n\n See perf script -l for available "
3804 session = perf_session__new(&data, false, &script.tool);
3809 script.tool.show_feat_hdr = SHOW_FEAT_HEADER;
3815 script.tool.show_feat_hdr = SHOW_FEAT_HEADER_FULL_INFO;
3831 script.session = session;
3832 script__setup_sample_type(&script);
3898 "perf-script");
3906 pr_debug("perf script started with script %s\n\n", script_name);
3915 if (script.time_str) {
3916 err = perf_time__parse_for_ranges_reltime(script.time_str, session,
3917 &script.ptime_range,
3918 &script.range_size,
3919 &script.range_num,
3925 script.ptime_range,
3926 script.range_num);
3929 err = evswitch__init(&script.evswitch, session->evlist, stderr);
3936 err = __cmd_script(&script);
3941 if (script.ptime_range) {
3943 zfree(&script.ptime_range);
3948 perf_script__exit(&script);