builtin-trace.c (ea4539652eccc87b14fbcbc90467ebcb87f02ddb) builtin-trace.c (44621819ddc9d5d0bfd0b0616c6cf33c94189b67)
1/*
2 * builtin-trace.c
3 *
4 * Builtin 'trace' command:
5 *
6 * Display a continuously updated trace of any workload, CPU, specific PID,
7 * system wide, etc. Default format is loosely strace like, but any other
8 * event may be specified using --event.

--- 145 unchanged lines hidden (view full) ---

154 bool full_time;
155 bool sched;
156 bool multiple_threads;
157 bool summary;
158 bool summary_only;
159 bool show_comm;
160 bool show_tool_stats;
161 bool trace_syscalls;
1/*
2 * builtin-trace.c
3 *
4 * Builtin 'trace' command:
5 *
6 * Display a continuously updated trace of any workload, CPU, specific PID,
7 * system wide, etc. Default format is loosely strace like, but any other
8 * event may be specified using --event.

--- 145 unchanged lines hidden (view full) ---

154 bool full_time;
155 bool sched;
156 bool multiple_threads;
157 bool summary;
158 bool summary_only;
159 bool show_comm;
160 bool show_tool_stats;
161 bool trace_syscalls;
162 bool kernel_syscallchains;
162 bool force;
163 bool vfs_getname;
164 int trace_pgfaults;
165 int open_id;
166};
167
168struct tp_field {
169 int offset;

--- 2486 unchanged lines hidden (view full) ---

2656 goto out_delete_sys_enter;
2657
2658 if (perf_evsel__init_sc_tp_uint_field(sys_exit, ret))
2659 goto out_delete_sys_exit;
2660
2661 perf_evlist__add(evlist, sys_enter);
2662 perf_evlist__add(evlist, sys_exit);
2663
163 bool force;
164 bool vfs_getname;
165 int trace_pgfaults;
166 int open_id;
167};
168
169struct tp_field {
170 int offset;

--- 2486 unchanged lines hidden (view full) ---

2657 goto out_delete_sys_enter;
2658
2659 if (perf_evsel__init_sc_tp_uint_field(sys_exit, ret))
2660 goto out_delete_sys_exit;
2661
2662 perf_evlist__add(evlist, sys_enter);
2663 perf_evlist__add(evlist, sys_exit);
2664
2665 if (trace->opts.callgraph_set && !trace->kernel_syscallchains) {
2666 /*
2667 * We're interested only in the user space callchain
2668 * leading to the syscall, allow overriding that for
2669 * debugging reasons using --kernel_syscall_callchains
2670 */
2671 sys_exit->attr.exclude_callchain_kernel = 1;
2672 }
2673
2664 trace->syscalls.events.sys_enter = sys_enter;
2665 trace->syscalls.events.sys_exit = sys_exit;
2666
2667 ret = 0;
2668out:
2669 return ret;
2670
2671out_delete_sys_exit:

--- 544 unchanged lines hidden (view full) ---

3216 .user_interval = ULLONG_MAX,
3217 .no_buffering = true,
3218 .mmap_pages = UINT_MAX,
3219 .proc_map_timeout = 500,
3220 },
3221 .output = stderr,
3222 .show_comm = true,
3223 .trace_syscalls = true,
2674 trace->syscalls.events.sys_enter = sys_enter;
2675 trace->syscalls.events.sys_exit = sys_exit;
2676
2677 ret = 0;
2678out:
2679 return ret;
2680
2681out_delete_sys_exit:

--- 544 unchanged lines hidden (view full) ---

3226 .user_interval = ULLONG_MAX,
3227 .no_buffering = true,
3228 .mmap_pages = UINT_MAX,
3229 .proc_map_timeout = 500,
3230 },
3231 .output = stderr,
3232 .show_comm = true,
3233 .trace_syscalls = true,
3234 .kernel_syscallchains = false,
3224 };
3225 const char *output_name = NULL;
3226 const char *ev_qualifier_str = NULL;
3227 const struct option trace_options[] = {
3228 OPT_CALLBACK(0, "event", &trace.evlist, "event",
3229 "event selector. use 'perf list' to list available events",
3230 parse_events_option),
3231 OPT_BOOLEAN(0, "comm", &trace.show_comm,

--- 32 unchanged lines hidden (view full) ---

3264 "Show all syscalls and summary with statistics"),
3265 OPT_CALLBACK_DEFAULT('F', "pf", &trace.trace_pgfaults, "all|maj|min",
3266 "Trace pagefaults", parse_pagefaults, "maj"),
3267 OPT_BOOLEAN(0, "syscalls", &trace.trace_syscalls, "Trace syscalls"),
3268 OPT_BOOLEAN('f', "force", &trace.force, "don't complain, do it"),
3269 OPT_CALLBACK(0, "call-graph", &trace.opts,
3270 "record_mode[,record_size]", record_callchain_help,
3271 &record_parse_callchain_opt),
3235 };
3236 const char *output_name = NULL;
3237 const char *ev_qualifier_str = NULL;
3238 const struct option trace_options[] = {
3239 OPT_CALLBACK(0, "event", &trace.evlist, "event",
3240 "event selector. use 'perf list' to list available events",
3241 parse_events_option),
3242 OPT_BOOLEAN(0, "comm", &trace.show_comm,

--- 32 unchanged lines hidden (view full) ---

3275 "Show all syscalls and summary with statistics"),
3276 OPT_CALLBACK_DEFAULT('F', "pf", &trace.trace_pgfaults, "all|maj|min",
3277 "Trace pagefaults", parse_pagefaults, "maj"),
3278 OPT_BOOLEAN(0, "syscalls", &trace.trace_syscalls, "Trace syscalls"),
3279 OPT_BOOLEAN('f', "force", &trace.force, "don't complain, do it"),
3280 OPT_CALLBACK(0, "call-graph", &trace.opts,
3281 "record_mode[,record_size]", record_callchain_help,
3282 &record_parse_callchain_opt),
3283 OPT_BOOLEAN(0, "kernel-syscall-graph", &trace.kernel_syscallchains,
3284 "Show the kernel callchains on the syscall exit path"),
3272 OPT_UINTEGER(0, "proc-map-timeout", &trace.opts.proc_map_timeout,
3273 "per thread proc mmap processing timeout in ms"),
3274 OPT_END()
3275 };
3276 const char * const trace_subcommands[] = { "record", NULL };
3277 int err;
3278 char bf[BUFSIZ];
3279

--- 106 unchanged lines hidden ---
3285 OPT_UINTEGER(0, "proc-map-timeout", &trace.opts.proc_map_timeout,
3286 "per thread proc mmap processing timeout in ms"),
3287 OPT_END()
3288 };
3289 const char * const trace_subcommands[] = { "record", NULL };
3290 int err;
3291 char bf[BUFSIZ];
3292

--- 106 unchanged lines hidden ---