95 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef _PERF_RECORD_H3#define _PERF_RECORD_H4 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 12struct option;13 14struct 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 84extern const char * const *record_usage;85extern struct option *record_options;86 87int record__parse_freq(const struct option *opt, const char *str, int unset);88 89static 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_H95