blob: aa79fb8a16d403ad7b0d2968fe2649c04ef44f6c [file] [log] [blame]
Thomas Gleixner6eda5832009-05-01 18:29:57 +02001#ifndef _PERF_PERF_H
2#define _PERF_PERF_H
3
Jiri Olsa82baa0e2014-05-05 12:58:31 +02004#include <time.h>
5#include <stdbool.h>
6#include <linux/types.h>
7#include <linux/perf_event.h>
8
9extern bool test_attr__enabled;
10void test_attr__init(void);
11void test_attr__open(struct perf_event_attr *attr, pid_t pid, int cpu,
12 int fd, int group_fd, unsigned long flags);
13
14#define HAVE_ATTR_TEST
Jiri Olsa43599d12014-05-05 12:53:20 +020015#include "perf-sys.h"
Peter Zijlstraa94d3422013-10-30 11:42:46 +010016
Thomas Gleixnera92e702372009-05-01 18:39:47 +020017#ifndef NSEC_PER_SEC
18# define NSEC_PER_SEC 1000000000ULL
19#endif
David Ahern70f7b4a2013-08-07 21:56:38 -040020#ifndef NSEC_PER_USEC
21# define NSEC_PER_USEC 1000ULL
22#endif
Thomas Gleixnera92e702372009-05-01 18:39:47 +020023
24static inline unsigned long long rdclock(void)
25{
26 struct timespec ts;
27
28 clock_gettime(CLOCK_MONOTONIC, &ts);
29 return ts.tv_sec * 1000000000ULL + ts.tv_nsec;
30}
Thomas Gleixner6eda5832009-05-01 18:29:57 +020031
David Ahern4d255762015-03-24 12:10:38 -040032#define MAX_NR_CPUS 1024
Thomas Gleixner6eda5832009-05-01 18:29:57 +020033
Feng Tang70cb4e92012-10-30 11:56:02 +080034extern const char *input_name;
Arnaldo Carvalho de Melo80354582010-05-17 15:51:10 -030035extern bool perf_host, perf_guest;
Stephane Eranianfbe96f22011-09-30 15:40:40 +020036extern const char perf_version_string[];
Zhang, Yanmina1645ce2010-04-19 13:32:50 +080037
Arnaldo Carvalho de Melo3af6e332011-10-13 08:52:46 -030038void pthread__unblock_sigwinch(void);
39
Namhyung Kim12864b32012-04-26 14:15:22 +090040#include "util/target.h"
Namhyung Kimbea03402012-04-26 14:15:15 +090041
Arnaldo Carvalho de Melob4006792013-12-19 14:43:45 -030042struct record_opts {
Arnaldo Carvalho de Melo602ad872013-11-12 16:46:16 -030043 struct target target;
Arnaldo Carvalho de Meloed80f582011-11-11 15:12:56 -020044 bool group;
Arnaldo Carvalho de Melo0f82ebc2011-11-08 14:41:57 -020045 bool inherit_stat;
Arnaldo Carvalho de Melo509051e2014-01-14 17:52:14 -030046 bool no_buffering;
Arnaldo Carvalho de Melo0f82ebc2011-11-08 14:41:57 -020047 bool no_inherit;
Adrian Hunter69e7e5b2013-11-18 11:55:57 +020048 bool no_inherit_set;
Arnaldo Carvalho de Melo0f82ebc2011-11-08 14:41:57 -020049 bool no_samples;
50 bool raw_samples;
51 bool sample_address;
Andi Kleen05484292013-01-24 16:10:29 +010052 bool sample_weight;
Arnaldo Carvalho de Melo0f82ebc2011-11-08 14:41:57 -020053 bool sample_time;
Andrew Vagin3e76ac72011-12-20 17:32:45 +030054 bool period;
Stephane Eranian6a21c0b2014-09-24 13:48:39 +020055 bool sample_intr_regs;
Andi Kleen85c273d2015-02-24 15:13:40 -080056 bool running_time;
Adrian Hunter9e0cc4f2015-04-09 18:53:44 +030057 bool full_auxtrace;
Adrian Hunterd20031b2015-04-30 17:37:31 +030058 bool auxtrace_snapshot_mode;
Arnaldo Carvalho de Melo0f82ebc2011-11-08 14:41:57 -020059 unsigned int freq;
Arnaldo Carvalho de Melo01c2d992011-11-09 09:16:26 -020060 unsigned int mmap_pages;
Adrian Hunter9e0cc4f2015-04-09 18:53:44 +030061 unsigned int auxtrace_mmap_pages;
Arnaldo Carvalho de Melo0f82ebc2011-11-08 14:41:57 -020062 unsigned int user_freq;
Stephane Eraniana00dc312012-05-25 23:13:44 +020063 u64 branch_stack;
Arnaldo Carvalho de Melo0f82ebc2011-11-08 14:41:57 -020064 u64 default_interval;
65 u64 user_interval;
Adrian Hunterd20031b2015-04-30 17:37:31 +030066 size_t auxtrace_snapshot_size;
67 const char *auxtrace_snapshot_opts;
Andi Kleen475eeab2013-09-20 07:40:43 -070068 bool sample_transaction;
Andi Kleen6619a532014-01-11 13:38:27 -080069 unsigned initial_delay;
Peter Zijlstra814c8c32015-03-31 00:19:31 +020070 bool use_clockid;
71 clockid_t clockid;
Arnaldo Carvalho de Melo0f82ebc2011-11-08 14:41:57 -020072};
73
Namhyung Kime5b2c202014-10-23 00:15:46 +090074struct option;
75extern const char * const *record_usage;
76extern struct option *record_options;
Thomas Gleixner6eda5832009-05-01 18:29:57 +020077#endif