1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef _PERF_RECORD_H |
3 | #define _PERF_RECORD_H |
4 | |
5 | #include <time.h> |
6 | #include <stdbool.h> |
7 | #include <linux/types.h> |
8 | #include <linux/stddef.h> |
9 | #include <linux/perf_event.h> |
10 | #include "util/target.h" |
11 | |
12 | struct option; |
13 | |
14 | struct record_opts { |
15 | struct target target; |
16 | bool inherit_stat; |
17 | bool no_buffering; |
18 | bool no_inherit; |
19 | bool no_inherit_set; |
20 | bool no_samples; |
21 | bool raw_samples; |
22 | bool sample_address; |
23 | bool sample_phys_addr; |
24 | bool sample_data_page_size; |
25 | bool sample_code_page_size; |
26 | bool sample_weight; |
27 | bool sample_time; |
28 | bool sample_time_set; |
29 | bool sample_cpu; |
30 | bool sample_identifier; |
31 | bool period; |
32 | bool period_set; |
33 | bool running_time; |
34 | bool full_auxtrace; |
35 | bool auxtrace_snapshot_mode; |
36 | bool auxtrace_snapshot_on_exit; |
37 | bool auxtrace_sample_mode; |
38 | bool record_namespaces; |
39 | bool record_cgroup; |
40 | bool record_switch_events; |
41 | bool record_switch_events_set; |
42 | bool all_kernel; |
43 | bool all_user; |
44 | bool kernel_callchains; |
45 | bool user_callchains; |
46 | bool tail_synthesize; |
47 | bool overwrite; |
48 | bool ignore_missing_thread; |
49 | bool strict_freq; |
50 | bool sample_id; |
51 | bool no_bpf_event; |
52 | bool kcore; |
53 | bool text_poke; |
54 | bool build_id; |
55 | unsigned int freq; |
56 | unsigned int mmap_pages; |
57 | unsigned int auxtrace_mmap_pages; |
58 | unsigned int user_freq; |
59 | u64 branch_stack; |
60 | u64 sample_intr_regs; |
61 | u64 sample_user_regs; |
62 | u64 default_interval; |
63 | u64 user_interval; |
64 | size_t auxtrace_snapshot_size; |
65 | const char *auxtrace_snapshot_opts; |
66 | const char *auxtrace_sample_opts; |
67 | bool sample_transaction; |
68 | bool use_clockid; |
69 | clockid_t clockid; |
70 | u64 clockid_res_ns; |
71 | int nr_cblocks; |
72 | int affinity; |
73 | int mmap_flush; |
74 | unsigned int comp_level; |
75 | unsigned int nr_threads_synthesize; |
76 | int ctl_fd; |
77 | int ctl_fd_ack; |
78 | bool ctl_fd_close; |
79 | int synth; |
80 | int threads_spec; |
81 | const char *threads_user_spec; |
82 | }; |
83 | |
84 | extern const char * const *record_usage; |
85 | extern struct option *record_options; |
86 | |
87 | int record__parse_freq(const struct option *opt, const char *str, int unset); |
88 | |
89 | static inline bool record_opts__no_switch_events(const struct record_opts *opts) |
90 | { |
91 | return opts->record_switch_events_set && !opts->record_switch_events; |
92 | } |
93 | |
94 | #endif // _PERF_RECORD_H |
95 | |