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 --- |