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