17e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#ifndef _PERF_PERF_H
27e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define _PERF_PERF_H
37e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
47e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#include <asm/unistd.h>
57e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
67e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#if defined(__i386__)
77e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define rmb()		asm volatile("lock; addl $0,0(%%esp)" ::: "memory")
87e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define cpu_relax()	asm volatile("rep; nop" ::: "memory");
97e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define CPUINFO_PROC	"model name"
107e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#ifndef __NR_perf_event_open
117e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh# define __NR_perf_event_open 336
127e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
137e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
147e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
157e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#if defined(__x86_64__)
167e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define rmb()		asm volatile("lfence" ::: "memory")
177e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define cpu_relax()	asm volatile("rep; nop" ::: "memory");
187e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define CPUINFO_PROC	"model name"
197e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#ifndef __NR_perf_event_open
207e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh# define __NR_perf_event_open 298
217e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
227e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
237e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
247e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#ifdef __powerpc__
257e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#include "../../arch/powerpc/include/uapi/asm/unistd.h"
267e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define rmb()		asm volatile ("sync" ::: "memory")
277e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define cpu_relax()	asm volatile ("" ::: "memory");
287e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define CPUINFO_PROC	"cpu"
297e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
307e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
317e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#ifdef __s390__
327e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define rmb()		asm volatile("bcr 15,0" ::: "memory")
337e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define cpu_relax()	asm volatile("" ::: "memory");
347e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
357e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
367e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#ifdef __sh__
377e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#if defined(__SH4A__) || defined(__SH5__)
387e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh# define rmb()		asm volatile("synco" ::: "memory")
397e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#else
407e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh# define rmb()		asm volatile("" ::: "memory")
417e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
427e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define cpu_relax()	asm volatile("" ::: "memory")
437e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define CPUINFO_PROC	"cpu type"
447e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
457e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
467e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#ifdef __hppa__
477e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define rmb()		asm volatile("" ::: "memory")
487e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define cpu_relax()	asm volatile("" ::: "memory");
497e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define CPUINFO_PROC	"cpu"
507e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
517e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
527e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#ifdef __sparc__
537e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define rmb()		asm volatile("":::"memory")
547e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define cpu_relax()	asm volatile("":::"memory")
557e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define CPUINFO_PROC	"cpu"
567e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
577e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
587e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#ifdef __alpha__
597e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define rmb()		asm volatile("mb" ::: "memory")
607e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define cpu_relax()	asm volatile("" ::: "memory")
617e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define CPUINFO_PROC	"cpu model"
627e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
637e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
647e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#ifdef __ia64__
657e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define rmb()		asm volatile ("mf" ::: "memory")
667e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define cpu_relax()	asm volatile ("hint @pause" ::: "memory")
677e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define CPUINFO_PROC	"model name"
687e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
697e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
707e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#ifdef __arm__
717e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh/*
727e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh * Use the __kuser_memory_barrier helper in the CPU helper page. See
737e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh * arch/arm/kernel/entry-armv.S in the kernel source for details.
747e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh */
757e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define rmb()		((void(*)(void))0xffff0fa0)()
767e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define cpu_relax()	asm volatile("":::"memory")
777e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define CPUINFO_PROC	"Processor"
787e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
797e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
807e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#ifdef __aarch64__
817e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define rmb()		asm volatile("dmb ld" ::: "memory")
827e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define cpu_relax()	asm volatile("yield" ::: "memory")
837e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
847e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
857e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#ifdef __mips__
867e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define rmb()		asm volatile(					\
877e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh				".set	mips2\n\t"			\
887e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh				"sync\n\t"				\
897e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh				".set	mips0"				\
907e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh				: /* no output */			\
917e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh				: /* no input */			\
927e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh				: "memory")
937e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define cpu_relax()	asm volatile("" ::: "memory")
947e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define CPUINFO_PROC	"cpu model"
957e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
967e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
977e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#ifdef __arc__
987e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define rmb()		asm volatile("" ::: "memory")
997e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define cpu_relax()	rmb()
1007e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define CPUINFO_PROC	"Processor"
1017e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
1027e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1037e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#ifdef __metag__
1047e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define rmb()		asm volatile("" ::: "memory")
1057e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define cpu_relax()	asm volatile("" ::: "memory")
1067e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define CPUINFO_PROC	"CPU"
1077e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
1087e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1097e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#include <time.h>
1107e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#include <unistd.h>
1117e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#include <sys/types.h>
1127e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#include <sys/syscall.h>
1137e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1147e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#include <linux/perf_event.h>
1157e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#include "util/types.h"
1167e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#include <stdbool.h>
1177e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1187e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh/*
1197e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh * prctl(PR_TASK_PERF_EVENTS_DISABLE) will (cheaply) disable all
1207e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh * counters in the current task.
1217e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh */
1227e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define PR_TASK_PERF_EVENTS_DISABLE   31
1237e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define PR_TASK_PERF_EVENTS_ENABLE    32
1247e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1257e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#ifndef NSEC_PER_SEC
1267e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh# define NSEC_PER_SEC			1000000000ULL
1277e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
1287e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#ifndef NSEC_PER_USEC
1297e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh# define NSEC_PER_USEC			1000ULL
1307e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
1317e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1327e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntoshstatic inline unsigned long long rdclock(void)
1337e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh{
1347e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	struct timespec ts;
1357e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1367e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	clock_gettime(CLOCK_MONOTONIC, &ts);
1377e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	return ts.tv_sec * 1000000000ULL + ts.tv_nsec;
1387e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh}
1397e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1407e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh/*
1417e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh * Pick up some kernel type conventions:
1427e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh */
1437e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define __user
1447e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define asmlinkage
1457e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1467e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define unlikely(x)	__builtin_expect(!!(x), 0)
1477e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define min(x, y) ({				\
1487e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	typeof(x) _min1 = (x);			\
1497e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	typeof(y) _min2 = (y);			\
1507e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	(void) (&_min1 == &_min2);		\
1517e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	_min1 < _min2 ? _min1 : _min2; })
1527e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1537e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntoshextern bool test_attr__enabled;
1547e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntoshvoid test_attr__init(void);
1557e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntoshvoid test_attr__open(struct perf_event_attr *attr, pid_t pid, int cpu,
1567e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh		     int fd, int group_fd, unsigned long flags);
1577e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1587e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntoshstatic inline int
1597e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntoshsys_perf_event_open(struct perf_event_attr *attr,
1607e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh		      pid_t pid, int cpu, int group_fd,
1617e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh		      unsigned long flags)
1627e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh{
1637e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	int fd;
1647e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1657e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	fd = syscall(__NR_perf_event_open, attr, pid, cpu,
1667e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh		     group_fd, flags);
1677e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1687e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	if (unlikely(test_attr__enabled))
1697e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh		test_attr__open(attr, pid, cpu, fd, group_fd, flags);
1707e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1717e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	return fd;
1727e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh}
1737e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1747e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define MAX_COUNTERS			256
1757e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#define MAX_NR_CPUS			256
1767e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1777e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntoshstruct ip_callchain {
1787e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	u64 nr;
1797e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	u64 ips[0];
1807e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh};
1817e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1827e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntoshstruct branch_flags {
1837e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	u64 mispred:1;
1847e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	u64 predicted:1;
1857e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	u64 reserved:62;
1867e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh};
1877e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1887e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntoshstruct branch_entry {
1897e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	u64				from;
1907e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	u64				to;
1917e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	struct branch_flags flags;
1927e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh};
1937e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1947e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntoshstruct branch_stack {
1957e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	u64				nr;
1967e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	struct branch_entry	entries[0];
1977e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh};
1987e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
1997e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntoshextern const char *input_name;
2007e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntoshextern bool perf_host, perf_guest;
2017e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntoshextern const char perf_version_string[];
2027e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
2037e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntoshvoid pthread__unblock_sigwinch(void);
2047e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
2057e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#include "util/target.h"
2067e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
2077e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntoshenum perf_call_graph_mode {
2087e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	CALLCHAIN_NONE,
2097e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	CALLCHAIN_FP,
2107e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	CALLCHAIN_DWARF
2117e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh};
2127e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
2137e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntoshstruct perf_record_opts {
2147e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	struct perf_target target;
2157e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	int	     call_graph;
2167e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	bool	     group;
2177e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	bool	     inherit_stat;
2187e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	bool	     no_delay;
2197e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	bool	     no_inherit;
2207e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	bool	     no_samples;
2217e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	bool	     pipe_output;
2227e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	bool	     raw_samples;
2237e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	bool	     sample_address;
2247e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	bool	     sample_weight;
2257e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	bool	     sample_time;
2267e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	bool	     period;
2277e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	unsigned int freq;
2287e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	unsigned int mmap_pages;
2297e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	unsigned int user_freq;
2307e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	u64          branch_stack;
2317e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	u64	     default_interval;
2327e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	u64	     user_interval;
2337e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh	u16	     stack_dump_size;
2347e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh};
2357e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh
2367e2f4e9d384d501cf86118ebac4b8de2b86eac53Than McIntosh#endif
237