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 group; 17 bool inherit_stat; 18 bool no_buffering; 19 bool no_inherit; 20 bool no_inherit_set; 21 bool no_samples; 22 bool raw_samples; 23 bool sample_address; 24 bool sample_phys_addr; 25 bool sample_weight; 26 bool sample_time; 27 bool sample_time_set; 28 bool sample_cpu; 29 bool period; 30 bool period_set; 31 bool running_time; 32 bool full_auxtrace; 33 bool auxtrace_snapshot_mode; 34 bool auxtrace_snapshot_on_exit; 35 bool auxtrace_sample_mode; 36 bool record_namespaces; 37 bool record_cgroup; 38 bool record_switch_events; 39 bool all_kernel; 40 bool all_user; 41 bool kernel_callchains; 42 bool user_callchains; 43 bool tail_synthesize; 44 bool overwrite; 45 bool ignore_missing_thread; 46 bool strict_freq; 47 bool sample_id; 48 bool no_bpf_event; 49 bool kcore; 50 unsigned int freq; 51 unsigned int mmap_pages; 52 unsigned int auxtrace_mmap_pages; 53 unsigned int user_freq; 54 u64 branch_stack; 55 u64 sample_intr_regs; 56 u64 sample_user_regs; 57 u64 default_interval; 58 u64 user_interval; 59 size_t auxtrace_snapshot_size; 60 const char *auxtrace_snapshot_opts; 61 const char *auxtrace_sample_opts; 62 bool sample_transaction; 63 unsigned initial_delay; 64 bool use_clockid; 65 clockid_t clockid; 66 u64 clockid_res_ns; 67 int nr_cblocks; 68 int affinity; 69 int mmap_flush; 70 unsigned int comp_level; 71 unsigned int nr_threads_synthesize; 72 }; 73 74 extern const char * const *record_usage; 75 extern struct option *record_options; 76 77 int record__parse_freq(const struct option *opt, const char *str, int unset); 78 79 #endif // _PERF_RECORD_H 80