2017-11-01 15:07:57 +01:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0 */
|
2009-05-01 18:29:57 +02:00
|
|
|
#ifndef _PERF_PERF_H
|
|
|
|
|
#define _PERF_PERF_H
|
|
|
|
|
|
2014-05-05 12:58:31 +02:00
|
|
|
#include <time.h>
|
|
|
|
|
#include <stdbool.h>
|
|
|
|
|
#include <linux/types.h>
|
2018-07-30 13:15:03 -03:00
|
|
|
#include <linux/stddef.h>
|
2014-05-05 12:58:31 +02:00
|
|
|
#include <linux/perf_event.h>
|
|
|
|
|
|
|
|
|
|
extern bool test_attr__enabled;
|
2017-07-03 16:50:18 +02:00
|
|
|
void test_attr__ready(void);
|
2014-05-05 12:58:31 +02:00
|
|
|
void test_attr__init(void);
|
|
|
|
|
void test_attr__open(struct perf_event_attr *attr, pid_t pid, int cpu,
|
|
|
|
|
int fd, int group_fd, unsigned long flags);
|
|
|
|
|
|
|
|
|
|
#define HAVE_ATTR_TEST
|
2014-05-05 12:53:20 +02:00
|
|
|
#include "perf-sys.h"
|
2013-10-30 11:42:46 +01:00
|
|
|
|
2009-05-01 18:39:47 +02:00
|
|
|
static inline unsigned long long rdclock(void)
|
|
|
|
|
{
|
|
|
|
|
struct timespec ts;
|
|
|
|
|
|
|
|
|
|
clock_gettime(CLOCK_MONOTONIC, &ts);
|
|
|
|
|
return ts.tv_sec * 1000000000ULL + ts.tv_nsec;
|
|
|
|
|
}
|
2009-05-01 18:29:57 +02:00
|
|
|
|
2017-09-22 13:20:43 +02:00
|
|
|
#ifndef MAX_NR_CPUS
|
2015-03-24 12:10:38 -04:00
|
|
|
#define MAX_NR_CPUS 1024
|
2017-09-22 13:20:43 +02:00
|
|
|
#endif
|
2009-05-01 18:29:57 +02:00
|
|
|
|
2012-10-30 11:56:02 +08:00
|
|
|
extern const char *input_name;
|
2010-05-17 15:51:10 -03:00
|
|
|
extern bool perf_host, perf_guest;
|
2011-09-30 15:40:40 +02:00
|
|
|
extern const char perf_version_string[];
|
2010-04-19 13:32:50 +08:00
|
|
|
|
2011-10-13 08:52:46 -03:00
|
|
|
void pthread__unblock_sigwinch(void);
|
|
|
|
|
|
2012-04-26 14:15:22 +09:00
|
|
|
#include "util/target.h"
|
2012-04-26 14:15:15 +09:00
|
|
|
|
2013-12-19 14:43:45 -03:00
|
|
|
struct record_opts {
|
2013-11-12 16:46:16 -03:00
|
|
|
struct target target;
|
2011-11-11 15:12:56 -02:00
|
|
|
bool group;
|
2011-11-08 14:41:57 -02:00
|
|
|
bool inherit_stat;
|
2014-01-14 17:52:14 -03:00
|
|
|
bool no_buffering;
|
2011-11-08 14:41:57 -02:00
|
|
|
bool no_inherit;
|
2013-11-18 11:55:57 +02:00
|
|
|
bool no_inherit_set;
|
2011-11-08 14:41:57 -02:00
|
|
|
bool no_samples;
|
|
|
|
|
bool raw_samples;
|
|
|
|
|
bool sample_address;
|
2017-08-29 13:11:08 -04:00
|
|
|
bool sample_phys_addr;
|
2013-01-24 16:10:29 +01:00
|
|
|
bool sample_weight;
|
2011-11-08 14:41:57 -02:00
|
|
|
bool sample_time;
|
2015-07-06 14:51:01 +03:00
|
|
|
bool sample_time_set;
|
2016-08-01 20:02:35 +02:00
|
|
|
bool sample_cpu;
|
2011-12-20 17:32:45 +03:00
|
|
|
bool period;
|
2018-02-01 09:38:11 +01:00
|
|
|
bool period_set;
|
2015-02-24 15:13:40 -08:00
|
|
|
bool running_time;
|
2015-04-09 18:53:44 +03:00
|
|
|
bool full_auxtrace;
|
2015-04-30 17:37:31 +03:00
|
|
|
bool auxtrace_snapshot_mode;
|
2017-03-08 02:11:43 +05:30
|
|
|
bool record_namespaces;
|
2015-07-21 12:44:04 +03:00
|
|
|
bool record_switch_events;
|
2016-02-15 09:34:31 +01:00
|
|
|
bool all_kernel;
|
|
|
|
|
bool all_user;
|
2016-07-14 08:34:47 +00:00
|
|
|
bool tail_synthesize;
|
2016-07-14 08:34:45 +00:00
|
|
|
bool overwrite;
|
2016-12-13 08:46:22 +01:00
|
|
|
bool ignore_missing_thread;
|
2018-03-01 14:52:50 -03:00
|
|
|
bool strict_freq;
|
2018-03-02 17:13:54 +01:00
|
|
|
bool sample_id;
|
2011-11-08 14:41:57 -02:00
|
|
|
unsigned int freq;
|
2011-11-09 09:16:26 -02:00
|
|
|
unsigned int mmap_pages;
|
2015-04-09 18:53:44 +03:00
|
|
|
unsigned int auxtrace_mmap_pages;
|
2011-11-08 14:41:57 -02:00
|
|
|
unsigned int user_freq;
|
2012-05-25 23:13:44 +02:00
|
|
|
u64 branch_stack;
|
2015-08-31 18:41:12 +02:00
|
|
|
u64 sample_intr_regs;
|
2017-09-05 10:00:28 -07:00
|
|
|
u64 sample_user_regs;
|
2011-11-08 14:41:57 -02:00
|
|
|
u64 default_interval;
|
|
|
|
|
u64 user_interval;
|
2015-04-30 17:37:31 +03:00
|
|
|
size_t auxtrace_snapshot_size;
|
|
|
|
|
const char *auxtrace_snapshot_opts;
|
2013-09-20 07:40:43 -07:00
|
|
|
bool sample_transaction;
|
2014-01-11 13:38:27 -08:00
|
|
|
unsigned initial_delay;
|
2015-03-31 00:19:31 +02:00
|
|
|
bool use_clockid;
|
|
|
|
|
clockid_t clockid;
|
2018-10-09 17:36:24 +03:00
|
|
|
u64 clockid_res_ns;
|
2015-06-17 09:51:11 -04:00
|
|
|
unsigned int proc_map_timeout;
|
2011-11-08 14:41:57 -02:00
|
|
|
};
|
|
|
|
|
|
2014-10-23 00:15:46 +09:00
|
|
|
struct option;
|
|
|
|
|
extern const char * const *record_usage;
|
|
|
|
|
extern struct option *record_options;
|
2018-03-30 17:27:15 +08:00
|
|
|
extern int version_verbose;
|
2018-03-01 13:46:23 -03:00
|
|
|
|
|
|
|
|
int record__parse_freq(const struct option *opt, const char *str, int unset);
|
2009-05-01 18:29:57 +02:00
|
|
|
#endif
|