forked from Minki/linux
perf/core improvements and fixes:
. Cleanups for perf.h header (Jiri Olsa) . Consolidate types.h and export.h within tools (Borislav Petkov) -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIbBAABAgAGBQJTZ78GAAoJEPZqUSBWB3s9oQ0P8gJuRAj7oXT5w4FPOTlJowRH SP0OfnTf94ge6q39bZFcOuZcEbe5gXckAVlUAX/52DZjUawWrlA23vbV8mUPfJyA 4LzKMSW/k/aSsED34xJIbHLN8U0AK1ZJkU4GZikVLApkb9tBoqjm+H0O71RhMiHM FuBKKKdCQ6In80bORdcwGwD/alxyHTDqW89UGM6UCTf4MRqKLYR+jQ/h0JtAEXP3 gzZqlmGKEMlkX7TW7o/bZotCs4TFoghxA2mXI/KFb/wo0nCalizW3qXHd0XzN+TN dBWCdr48FVXiJq3YiQgluvCKLOus20l5R1AjygSGa+nEC4B/D6pJ3mVsxskVuV01 +88q8e8gUmbiyClR+vWg/7yiCbC9aQiM5pUD92e9sq3CxZ7UrK9QfPlpGic2+5HV EvqoSPg5ILUqfvdh+0gKdKWzY7K8hVR2V/p9RpWw8WV4b4NzHtW5EDsjsnWHv5n/ aL+Dy9DYRotobUYV96frX8jF0WLo2Y25RluuD5EGdM16bddB2+OP8G+hO8jvZ1rW nJocNE8TjmjaB0e08OXs/gxPvwx5d3wzIxRF9Qwq3w8VNOjbtwJbeIHhSxzhWjo6 KWBjB7fRTR95osoV630EHM7QThGtfurxCXs/VzgFX7LGbeDePlYSh9Hhu/M9ZWSd mNUvRlZfrhJXwGyxKmQ= =Svyh -----END PGP SIGNATURE----- Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf into perf/core Pull perf/core improvements and fixes from Jiri Olsa: * Cleanups for perf.h header (Jiri Olsa) * Consolidate types.h and export.h within tools (Borislav Petkov) Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
commit
3e46d21285
@ -35,4 +35,6 @@
|
||||
# define unlikely(x) __builtin_expect(!!(x), 0)
|
||||
#endif
|
||||
|
||||
#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
|
||||
|
||||
#endif /* _TOOLS_LINUX_COMPILER_H */
|
||||
|
@ -1,5 +1,10 @@
|
||||
#ifndef _TOOLS_LINUX_EXPORT_H_
|
||||
#define _TOOLS_LINUX_EXPORT_H_
|
||||
|
||||
#define EXPORT_SYMBOL(sym)
|
||||
#define EXPORT_SYMBOL_GPL(sym)
|
||||
#define EXPORT_SYMBOL_GPL_FUTURE(sym)
|
||||
#define EXPORT_UNUSED_SYMBOL(sym)
|
||||
#define EXPORT_UNUSED_SYMBOL_GPL(sym)
|
||||
|
||||
#endif
|
@ -1,8 +1,9 @@
|
||||
#ifndef _LIBLOCKDEP_LINUX_TYPES_H_
|
||||
#define _LIBLOCKDEP_LINUX_TYPES_H_
|
||||
#ifndef _TOOLS_LINUX_TYPES_H_
|
||||
#define _TOOLS_LINUX_TYPES_H_
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#define __SANE_USERSPACE_TYPES__ /* For PPC64, to get LL64 types */
|
||||
#include <asm/types.h>
|
||||
@ -10,10 +11,22 @@
|
||||
struct page;
|
||||
struct kmem_cache;
|
||||
|
||||
typedef unsigned gfp_t;
|
||||
typedef enum {
|
||||
GFP_KERNEL,
|
||||
GFP_ATOMIC,
|
||||
__GFP_HIGHMEM,
|
||||
__GFP_HIGH
|
||||
} gfp_t;
|
||||
|
||||
typedef __u64 u64;
|
||||
typedef __s64 s64;
|
||||
/*
|
||||
* We define u64 as uint64_t for every architecture
|
||||
* so that we can print it with "%"PRIx64 without getting warnings.
|
||||
*
|
||||
* typedef __u64 u64;
|
||||
* typedef __s64 s64;
|
||||
*/
|
||||
typedef uint64_t u64;
|
||||
typedef int64_t s64;
|
||||
|
||||
typedef __u32 u32;
|
||||
typedef __s32 s32;
|
||||
@ -35,6 +48,10 @@ typedef __s8 s8;
|
||||
#define __bitwise
|
||||
#endif
|
||||
|
||||
#define __force
|
||||
#define __user
|
||||
#define __must_check
|
||||
#define __cold
|
||||
|
||||
typedef __u16 __bitwise __le16;
|
||||
typedef __u16 __bitwise __be16;
|
||||
@ -55,4 +72,4 @@ struct hlist_node {
|
||||
struct hlist_node *next, **pprev;
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif /* _TOOLS_LINUX_TYPES_H_ */
|
@ -105,7 +105,7 @@ N =
|
||||
|
||||
export Q VERBOSE
|
||||
|
||||
INCLUDES = -I. -I/usr/local/include -I./uinclude -I./include $(CONFIG_INCLUDES)
|
||||
INCLUDES = -I. -I/usr/local/include -I./uinclude -I./include -I../../include $(CONFIG_INCLUDES)
|
||||
|
||||
# Set compile option CFLAGS if not set elsewhere
|
||||
CFLAGS ?= -g -DCONFIG_LOCKDEP -DCONFIG_STACKTRACE -DCONFIG_PROVE_LOCKING -DBITS_PER_LONG=__WORDSIZE -DLIBLOCKDEP_VERSION='"$(LIBLOCKDEP_VERSION)"' -rdynamic -O0 -g
|
||||
|
@ -1,7 +0,0 @@
|
||||
#ifndef _LIBLOCKDEP_LINUX_EXPORT_H_
|
||||
#define _LIBLOCKDEP_LINUX_EXPORT_H_
|
||||
|
||||
#define EXPORT_SYMBOL(sym)
|
||||
#define EXPORT_SYMBOL_GPL(sym)
|
||||
|
||||
#endif
|
@ -7,6 +7,8 @@ tools/lib/symbol/kallsyms.h
|
||||
tools/include/asm/bug.h
|
||||
tools/include/linux/compiler.h
|
||||
tools/include/linux/hash.h
|
||||
tools/include/linux/export.h
|
||||
tools/include/linux/types.h
|
||||
include/linux/const.h
|
||||
include/linux/perf_event.h
|
||||
include/linux/rbtree.h
|
||||
|
@ -222,12 +222,12 @@ LIB_H += util/include/linux/const.h
|
||||
LIB_H += util/include/linux/ctype.h
|
||||
LIB_H += util/include/linux/kernel.h
|
||||
LIB_H += util/include/linux/list.h
|
||||
LIB_H += util/include/linux/export.h
|
||||
LIB_H += ../include/linux/export.h
|
||||
LIB_H += util/include/linux/poison.h
|
||||
LIB_H += util/include/linux/rbtree.h
|
||||
LIB_H += util/include/linux/rbtree_augmented.h
|
||||
LIB_H += util/include/linux/string.h
|
||||
LIB_H += util/include/linux/types.h
|
||||
LIB_H += ../include/linux/types.h
|
||||
LIB_H += util/include/linux/linkage.h
|
||||
LIB_H += util/include/asm/asm-offsets.h
|
||||
LIB_H += ../include/asm/bug.h
|
||||
@ -252,7 +252,6 @@ LIB_H += util/event.h
|
||||
LIB_H += util/evsel.h
|
||||
LIB_H += util/evlist.h
|
||||
LIB_H += util/exec_cmd.h
|
||||
LIB_H += util/types.h
|
||||
LIB_H += util/levenshtein.h
|
||||
LIB_H += util/machine.h
|
||||
LIB_H += util/map.h
|
||||
|
@ -2,7 +2,7 @@
|
||||
#define ARCH_PERF_REGS_H
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "../../util/types.h"
|
||||
#include <linux/types.h>
|
||||
#include <asm/perf_regs.h>
|
||||
|
||||
void perf_regs_load(u64 *regs);
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include <linux/perf_event.h>
|
||||
|
||||
#include "../../perf.h"
|
||||
#include "../../util/types.h"
|
||||
#include <linux/types.h>
|
||||
#include "../../util/debug.h"
|
||||
#include "tsc.h"
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef TOOLS_PERF_ARCH_X86_UTIL_TSC_H__
|
||||
#define TOOLS_PERF_ARCH_X86_UTIL_TSC_H__
|
||||
|
||||
#include "../../util/types.h"
|
||||
#include <linux/types.h>
|
||||
|
||||
struct perf_tsc_conversion {
|
||||
u16 time_shift;
|
||||
|
190
tools/perf/perf-sys.h
Normal file
190
tools/perf/perf-sys.h
Normal file
@ -0,0 +1,190 @@
|
||||
#ifndef _PERF_SYS_H
|
||||
#define _PERF_SYS_H
|
||||
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/perf_event.h>
|
||||
#include <asm/unistd.h>
|
||||
|
||||
#if defined(__i386__)
|
||||
#define mb() asm volatile("lock; addl $0,0(%%esp)" ::: "memory")
|
||||
#define wmb() asm volatile("lock; addl $0,0(%%esp)" ::: "memory")
|
||||
#define rmb() asm volatile("lock; addl $0,0(%%esp)" ::: "memory")
|
||||
#define cpu_relax() asm volatile("rep; nop" ::: "memory");
|
||||
#define CPUINFO_PROC "model name"
|
||||
#ifndef __NR_perf_event_open
|
||||
# define __NR_perf_event_open 336
|
||||
#endif
|
||||
#ifndef __NR_futex
|
||||
# define __NR_futex 240
|
||||
#endif
|
||||
#ifndef __NR_gettid
|
||||
# define __NR_gettid 224
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__x86_64__)
|
||||
#define mb() asm volatile("mfence" ::: "memory")
|
||||
#define wmb() asm volatile("sfence" ::: "memory")
|
||||
#define rmb() asm volatile("lfence" ::: "memory")
|
||||
#define cpu_relax() asm volatile("rep; nop" ::: "memory");
|
||||
#define CPUINFO_PROC "model name"
|
||||
#ifndef __NR_perf_event_open
|
||||
# define __NR_perf_event_open 298
|
||||
#endif
|
||||
#ifndef __NR_futex
|
||||
# define __NR_futex 202
|
||||
#endif
|
||||
#ifndef __NR_gettid
|
||||
# define __NR_gettid 186
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __powerpc__
|
||||
#include "../../arch/powerpc/include/uapi/asm/unistd.h"
|
||||
#define mb() asm volatile ("sync" ::: "memory")
|
||||
#define wmb() asm volatile ("sync" ::: "memory")
|
||||
#define rmb() asm volatile ("sync" ::: "memory")
|
||||
#define CPUINFO_PROC "cpu"
|
||||
#endif
|
||||
|
||||
#ifdef __s390__
|
||||
#define mb() asm volatile("bcr 15,0" ::: "memory")
|
||||
#define wmb() asm volatile("bcr 15,0" ::: "memory")
|
||||
#define rmb() asm volatile("bcr 15,0" ::: "memory")
|
||||
#endif
|
||||
|
||||
#ifdef __sh__
|
||||
#if defined(__SH4A__) || defined(__SH5__)
|
||||
# define mb() asm volatile("synco" ::: "memory")
|
||||
# define wmb() asm volatile("synco" ::: "memory")
|
||||
# define rmb() asm volatile("synco" ::: "memory")
|
||||
#else
|
||||
# define mb() asm volatile("" ::: "memory")
|
||||
# define wmb() asm volatile("" ::: "memory")
|
||||
# define rmb() asm volatile("" ::: "memory")
|
||||
#endif
|
||||
#define CPUINFO_PROC "cpu type"
|
||||
#endif
|
||||
|
||||
#ifdef __hppa__
|
||||
#define mb() asm volatile("" ::: "memory")
|
||||
#define wmb() asm volatile("" ::: "memory")
|
||||
#define rmb() asm volatile("" ::: "memory")
|
||||
#define CPUINFO_PROC "cpu"
|
||||
#endif
|
||||
|
||||
#ifdef __sparc__
|
||||
#ifdef __LP64__
|
||||
#define mb() asm volatile("ba,pt %%xcc, 1f\n" \
|
||||
"membar #StoreLoad\n" \
|
||||
"1:\n":::"memory")
|
||||
#else
|
||||
#define mb() asm volatile("":::"memory")
|
||||
#endif
|
||||
#define wmb() asm volatile("":::"memory")
|
||||
#define rmb() asm volatile("":::"memory")
|
||||
#define CPUINFO_PROC "cpu"
|
||||
#endif
|
||||
|
||||
#ifdef __alpha__
|
||||
#define mb() asm volatile("mb" ::: "memory")
|
||||
#define wmb() asm volatile("wmb" ::: "memory")
|
||||
#define rmb() asm volatile("mb" ::: "memory")
|
||||
#define CPUINFO_PROC "cpu model"
|
||||
#endif
|
||||
|
||||
#ifdef __ia64__
|
||||
#define mb() asm volatile ("mf" ::: "memory")
|
||||
#define wmb() asm volatile ("mf" ::: "memory")
|
||||
#define rmb() asm volatile ("mf" ::: "memory")
|
||||
#define cpu_relax() asm volatile ("hint @pause" ::: "memory")
|
||||
#define CPUINFO_PROC "model name"
|
||||
#endif
|
||||
|
||||
#ifdef __arm__
|
||||
/*
|
||||
* Use the __kuser_memory_barrier helper in the CPU helper page. See
|
||||
* arch/arm/kernel/entry-armv.S in the kernel source for details.
|
||||
*/
|
||||
#define mb() ((void(*)(void))0xffff0fa0)()
|
||||
#define wmb() ((void(*)(void))0xffff0fa0)()
|
||||
#define rmb() ((void(*)(void))0xffff0fa0)()
|
||||
#define CPUINFO_PROC "Processor"
|
||||
#endif
|
||||
|
||||
#ifdef __aarch64__
|
||||
#define mb() asm volatile("dmb ish" ::: "memory")
|
||||
#define wmb() asm volatile("dmb ishst" ::: "memory")
|
||||
#define rmb() asm volatile("dmb ishld" ::: "memory")
|
||||
#define cpu_relax() asm volatile("yield" ::: "memory")
|
||||
#endif
|
||||
|
||||
#ifdef __mips__
|
||||
#define mb() asm volatile( \
|
||||
".set mips2\n\t" \
|
||||
"sync\n\t" \
|
||||
".set mips0" \
|
||||
: /* no output */ \
|
||||
: /* no input */ \
|
||||
: "memory")
|
||||
#define wmb() mb()
|
||||
#define rmb() mb()
|
||||
#define CPUINFO_PROC "cpu model"
|
||||
#endif
|
||||
|
||||
#ifdef __arc__
|
||||
#define mb() asm volatile("" ::: "memory")
|
||||
#define wmb() asm volatile("" ::: "memory")
|
||||
#define rmb() asm volatile("" ::: "memory")
|
||||
#define CPUINFO_PROC "Processor"
|
||||
#endif
|
||||
|
||||
#ifdef __metag__
|
||||
#define mb() asm volatile("" ::: "memory")
|
||||
#define wmb() asm volatile("" ::: "memory")
|
||||
#define rmb() asm volatile("" ::: "memory")
|
||||
#define CPUINFO_PROC "CPU"
|
||||
#endif
|
||||
|
||||
#ifdef __xtensa__
|
||||
#define mb() asm volatile("memw" ::: "memory")
|
||||
#define wmb() asm volatile("memw" ::: "memory")
|
||||
#define rmb() asm volatile("" ::: "memory")
|
||||
#define CPUINFO_PROC "core ID"
|
||||
#endif
|
||||
|
||||
#ifdef __tile__
|
||||
#define mb() asm volatile ("mf" ::: "memory")
|
||||
#define wmb() asm volatile ("mf" ::: "memory")
|
||||
#define rmb() asm volatile ("mf" ::: "memory")
|
||||
#define cpu_relax() asm volatile ("mfspr zero, PASS" ::: "memory")
|
||||
#define CPUINFO_PROC "model name"
|
||||
#endif
|
||||
|
||||
#define barrier() asm volatile ("" ::: "memory")
|
||||
|
||||
#ifndef cpu_relax
|
||||
#define cpu_relax() barrier()
|
||||
#endif
|
||||
|
||||
static inline int
|
||||
sys_perf_event_open(struct perf_event_attr *attr,
|
||||
pid_t pid, int cpu, int group_fd,
|
||||
unsigned long flags)
|
||||
{
|
||||
int fd;
|
||||
|
||||
fd = syscall(__NR_perf_event_open, attr, pid, cpu,
|
||||
group_fd, flags);
|
||||
|
||||
#ifdef HAVE_ATTR_TEST
|
||||
if (unlikely(test_attr__enabled))
|
||||
test_attr__open(attr, pid, cpu, fd, group_fd, flags);
|
||||
#endif
|
||||
return fd;
|
||||
}
|
||||
|
||||
#endif /* _PERF_SYS_H */
|
@ -1,188 +1,18 @@
|
||||
#ifndef _PERF_PERF_H
|
||||
#define _PERF_PERF_H
|
||||
|
||||
#include <asm/unistd.h>
|
||||
|
||||
#if defined(__i386__)
|
||||
#define mb() asm volatile("lock; addl $0,0(%%esp)" ::: "memory")
|
||||
#define wmb() asm volatile("lock; addl $0,0(%%esp)" ::: "memory")
|
||||
#define rmb() asm volatile("lock; addl $0,0(%%esp)" ::: "memory")
|
||||
#define cpu_relax() asm volatile("rep; nop" ::: "memory");
|
||||
#define CPUINFO_PROC "model name"
|
||||
#ifndef __NR_perf_event_open
|
||||
# define __NR_perf_event_open 336
|
||||
#endif
|
||||
#ifndef __NR_futex
|
||||
# define __NR_futex 240
|
||||
#endif
|
||||
#ifndef __NR_gettid
|
||||
# define __NR_gettid 224
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__x86_64__)
|
||||
#define mb() asm volatile("mfence" ::: "memory")
|
||||
#define wmb() asm volatile("sfence" ::: "memory")
|
||||
#define rmb() asm volatile("lfence" ::: "memory")
|
||||
#define cpu_relax() asm volatile("rep; nop" ::: "memory");
|
||||
#define CPUINFO_PROC "model name"
|
||||
#ifndef __NR_perf_event_open
|
||||
# define __NR_perf_event_open 298
|
||||
#endif
|
||||
#ifndef __NR_futex
|
||||
# define __NR_futex 202
|
||||
#endif
|
||||
#ifndef __NR_gettid
|
||||
# define __NR_gettid 186
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __powerpc__
|
||||
#include "../../arch/powerpc/include/uapi/asm/unistd.h"
|
||||
#define mb() asm volatile ("sync" ::: "memory")
|
||||
#define wmb() asm volatile ("sync" ::: "memory")
|
||||
#define rmb() asm volatile ("sync" ::: "memory")
|
||||
#define CPUINFO_PROC "cpu"
|
||||
#endif
|
||||
|
||||
#ifdef __s390__
|
||||
#define mb() asm volatile("bcr 15,0" ::: "memory")
|
||||
#define wmb() asm volatile("bcr 15,0" ::: "memory")
|
||||
#define rmb() asm volatile("bcr 15,0" ::: "memory")
|
||||
#endif
|
||||
|
||||
#ifdef __sh__
|
||||
#if defined(__SH4A__) || defined(__SH5__)
|
||||
# define mb() asm volatile("synco" ::: "memory")
|
||||
# define wmb() asm volatile("synco" ::: "memory")
|
||||
# define rmb() asm volatile("synco" ::: "memory")
|
||||
#else
|
||||
# define mb() asm volatile("" ::: "memory")
|
||||
# define wmb() asm volatile("" ::: "memory")
|
||||
# define rmb() asm volatile("" ::: "memory")
|
||||
#endif
|
||||
#define CPUINFO_PROC "cpu type"
|
||||
#endif
|
||||
|
||||
#ifdef __hppa__
|
||||
#define mb() asm volatile("" ::: "memory")
|
||||
#define wmb() asm volatile("" ::: "memory")
|
||||
#define rmb() asm volatile("" ::: "memory")
|
||||
#define CPUINFO_PROC "cpu"
|
||||
#endif
|
||||
|
||||
#ifdef __sparc__
|
||||
#ifdef __LP64__
|
||||
#define mb() asm volatile("ba,pt %%xcc, 1f\n" \
|
||||
"membar #StoreLoad\n" \
|
||||
"1:\n":::"memory")
|
||||
#else
|
||||
#define mb() asm volatile("":::"memory")
|
||||
#endif
|
||||
#define wmb() asm volatile("":::"memory")
|
||||
#define rmb() asm volatile("":::"memory")
|
||||
#define CPUINFO_PROC "cpu"
|
||||
#endif
|
||||
|
||||
#ifdef __alpha__
|
||||
#define mb() asm volatile("mb" ::: "memory")
|
||||
#define wmb() asm volatile("wmb" ::: "memory")
|
||||
#define rmb() asm volatile("mb" ::: "memory")
|
||||
#define CPUINFO_PROC "cpu model"
|
||||
#endif
|
||||
|
||||
#ifdef __ia64__
|
||||
#define mb() asm volatile ("mf" ::: "memory")
|
||||
#define wmb() asm volatile ("mf" ::: "memory")
|
||||
#define rmb() asm volatile ("mf" ::: "memory")
|
||||
#define cpu_relax() asm volatile ("hint @pause" ::: "memory")
|
||||
#define CPUINFO_PROC "model name"
|
||||
#endif
|
||||
|
||||
#ifdef __arm__
|
||||
/*
|
||||
* Use the __kuser_memory_barrier helper in the CPU helper page. See
|
||||
* arch/arm/kernel/entry-armv.S in the kernel source for details.
|
||||
*/
|
||||
#define mb() ((void(*)(void))0xffff0fa0)()
|
||||
#define wmb() ((void(*)(void))0xffff0fa0)()
|
||||
#define rmb() ((void(*)(void))0xffff0fa0)()
|
||||
#define CPUINFO_PROC "Processor"
|
||||
#endif
|
||||
|
||||
#ifdef __aarch64__
|
||||
#define mb() asm volatile("dmb ish" ::: "memory")
|
||||
#define wmb() asm volatile("dmb ishst" ::: "memory")
|
||||
#define rmb() asm volatile("dmb ishld" ::: "memory")
|
||||
#define cpu_relax() asm volatile("yield" ::: "memory")
|
||||
#endif
|
||||
|
||||
#ifdef __mips__
|
||||
#define mb() asm volatile( \
|
||||
".set mips2\n\t" \
|
||||
"sync\n\t" \
|
||||
".set mips0" \
|
||||
: /* no output */ \
|
||||
: /* no input */ \
|
||||
: "memory")
|
||||
#define wmb() mb()
|
||||
#define rmb() mb()
|
||||
#define CPUINFO_PROC "cpu model"
|
||||
#endif
|
||||
|
||||
#ifdef __arc__
|
||||
#define mb() asm volatile("" ::: "memory")
|
||||
#define wmb() asm volatile("" ::: "memory")
|
||||
#define rmb() asm volatile("" ::: "memory")
|
||||
#define CPUINFO_PROC "Processor"
|
||||
#endif
|
||||
|
||||
#ifdef __metag__
|
||||
#define mb() asm volatile("" ::: "memory")
|
||||
#define wmb() asm volatile("" ::: "memory")
|
||||
#define rmb() asm volatile("" ::: "memory")
|
||||
#define CPUINFO_PROC "CPU"
|
||||
#endif
|
||||
|
||||
#ifdef __xtensa__
|
||||
#define mb() asm volatile("memw" ::: "memory")
|
||||
#define wmb() asm volatile("memw" ::: "memory")
|
||||
#define rmb() asm volatile("" ::: "memory")
|
||||
#define CPUINFO_PROC "core ID"
|
||||
#endif
|
||||
|
||||
#ifdef __tile__
|
||||
#define mb() asm volatile ("mf" ::: "memory")
|
||||
#define wmb() asm volatile ("mf" ::: "memory")
|
||||
#define rmb() asm volatile ("mf" ::: "memory")
|
||||
#define cpu_relax() asm volatile ("mfspr zero, PASS" ::: "memory")
|
||||
#define CPUINFO_PROC "model name"
|
||||
#endif
|
||||
|
||||
#define barrier() asm volatile ("" ::: "memory")
|
||||
|
||||
#ifndef cpu_relax
|
||||
#define cpu_relax() barrier()
|
||||
#endif
|
||||
|
||||
#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
|
||||
|
||||
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
#include <linux/perf_event.h>
|
||||
#include "util/types.h"
|
||||
#include <stdbool.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/perf_event.h>
|
||||
|
||||
/*
|
||||
* prctl(PR_TASK_PERF_EVENTS_DISABLE) will (cheaply) disable all
|
||||
* counters in the current task.
|
||||
*/
|
||||
#define PR_TASK_PERF_EVENTS_DISABLE 31
|
||||
#define PR_TASK_PERF_EVENTS_ENABLE 32
|
||||
extern bool test_attr__enabled;
|
||||
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
|
||||
#include "perf-sys.h"
|
||||
|
||||
#ifndef NSEC_PER_SEC
|
||||
# define NSEC_PER_SEC 1000000000ULL
|
||||
@ -199,67 +29,8 @@ static inline unsigned long long rdclock(void)
|
||||
return ts.tv_sec * 1000000000ULL + ts.tv_nsec;
|
||||
}
|
||||
|
||||
/*
|
||||
* Pick up some kernel type conventions:
|
||||
*/
|
||||
#define __user
|
||||
#define asmlinkage
|
||||
|
||||
#define unlikely(x) __builtin_expect(!!(x), 0)
|
||||
#define min(x, y) ({ \
|
||||
typeof(x) _min1 = (x); \
|
||||
typeof(y) _min2 = (y); \
|
||||
(void) (&_min1 == &_min2); \
|
||||
_min1 < _min2 ? _min1 : _min2; })
|
||||
|
||||
extern bool test_attr__enabled;
|
||||
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);
|
||||
|
||||
static inline int
|
||||
sys_perf_event_open(struct perf_event_attr *attr,
|
||||
pid_t pid, int cpu, int group_fd,
|
||||
unsigned long flags)
|
||||
{
|
||||
int fd;
|
||||
|
||||
fd = syscall(__NR_perf_event_open, attr, pid, cpu,
|
||||
group_fd, flags);
|
||||
|
||||
if (unlikely(test_attr__enabled))
|
||||
test_attr__open(attr, pid, cpu, fd, group_fd, flags);
|
||||
|
||||
return fd;
|
||||
}
|
||||
|
||||
#define MAX_COUNTERS 256
|
||||
#define MAX_NR_CPUS 256
|
||||
|
||||
struct ip_callchain {
|
||||
u64 nr;
|
||||
u64 ips[0];
|
||||
};
|
||||
|
||||
struct branch_flags {
|
||||
u64 mispred:1;
|
||||
u64 predicted:1;
|
||||
u64 in_tx:1;
|
||||
u64 abort:1;
|
||||
u64 reserved:60;
|
||||
};
|
||||
|
||||
struct branch_entry {
|
||||
u64 from;
|
||||
u64 to;
|
||||
struct branch_flags flags;
|
||||
};
|
||||
|
||||
struct branch_stack {
|
||||
u64 nr;
|
||||
struct branch_entry entries[0];
|
||||
};
|
||||
|
||||
extern const char *input_name;
|
||||
extern bool perf_host, perf_guest;
|
||||
extern const char perf_version_string[];
|
||||
@ -268,13 +39,6 @@ void pthread__unblock_sigwinch(void);
|
||||
|
||||
#include "util/target.h"
|
||||
|
||||
enum perf_call_graph_mode {
|
||||
CALLCHAIN_NONE,
|
||||
CALLCHAIN_FP,
|
||||
CALLCHAIN_DWARF,
|
||||
CALLCHAIN_MAX
|
||||
};
|
||||
|
||||
struct record_opts {
|
||||
struct target target;
|
||||
int call_graph;
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
/*
|
||||
* The struct perf_event_attr test support.
|
||||
*
|
||||
@ -19,14 +18,8 @@
|
||||
* permissions. All the event text files are stored there.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Powerpc needs __SANE_USERSPACE_TYPES__ before <linux/types.h> to select
|
||||
* 'int-ll64.h' and avoid compile warnings when printing __u64 with %llu.
|
||||
*/
|
||||
#define __SANE_USERSPACE_TYPES__
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <inttypes.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include "../perf.h"
|
||||
|
@ -1,8 +1,7 @@
|
||||
#include <sys/types.h>
|
||||
#include <linux/types.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <inttypes.h>
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include "util.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
#include <linux/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <string.h>
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include <linux/compiler.h>
|
||||
#include <sys/types.h>
|
||||
#include <linux/types.h>
|
||||
#include <unistd.h>
|
||||
#include "tests.h"
|
||||
#include "debug.h"
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include <sys/types.h>
|
||||
#include <linux/types.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/prctl.h>
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include <sys/types.h>
|
||||
#include <linux/types.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#include "tests.h"
|
||||
|
@ -1,7 +1,6 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#include <inttypes.h>
|
||||
#include <linux/types.h>
|
||||
#include <sys/prctl.h>
|
||||
|
||||
#include "parse-events.h"
|
||||
|
@ -2,7 +2,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <signal.h>
|
||||
#include <sys/mman.h>
|
||||
#include "types.h"
|
||||
#include <linux/types.h>
|
||||
#include "perf.h"
|
||||
#include "debug.h"
|
||||
#include "tests.h"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include <stdbool.h>
|
||||
#include <inttypes.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#include "util.h"
|
||||
#include "event.h"
|
||||
|
@ -1,9 +1,7 @@
|
||||
#ifndef _PERF_UI_BROWSER_H_
|
||||
#define _PERF_UI_BROWSER_H_ 1
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <sys/types.h>
|
||||
#include "../types.h"
|
||||
#include <linux/types.h>
|
||||
|
||||
#define HE_COLORSET_TOP 50
|
||||
#define HE_COLORSET_MEDIUM 51
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef _PERF_UI_PROGRESS_H_
|
||||
#define _PERF_UI_PROGRESS_H_ 1
|
||||
|
||||
#include <../types.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
void ui_progress__finish(void);
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include "types.h"
|
||||
#include <linux/types.h>
|
||||
#include "symbol.h"
|
||||
#include "hist.h"
|
||||
#include "sort.h"
|
||||
|
@ -4,7 +4,7 @@
|
||||
#define BUILD_ID_SIZE 20
|
||||
|
||||
#include "tool.h"
|
||||
#include "types.h"
|
||||
#include <linux/types.h>
|
||||
|
||||
extern struct perf_tool build_id__mark_dso_hit_ops;
|
||||
struct dso;
|
||||
|
@ -7,6 +7,13 @@
|
||||
#include "event.h"
|
||||
#include "symbol.h"
|
||||
|
||||
enum perf_call_graph_mode {
|
||||
CALLCHAIN_NONE,
|
||||
CALLCHAIN_FP,
|
||||
CALLCHAIN_DWARF,
|
||||
CALLCHAIN_MAX
|
||||
};
|
||||
|
||||
enum chain_mode {
|
||||
CHAIN_NONE,
|
||||
CHAIN_FLAT,
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/rbtree.h>
|
||||
#include <stdbool.h>
|
||||
#include "types.h"
|
||||
#include <linux/types.h>
|
||||
#include "map.h"
|
||||
#include "build-id.h"
|
||||
|
||||
|
@ -112,6 +112,30 @@ struct sample_read {
|
||||
};
|
||||
};
|
||||
|
||||
struct ip_callchain {
|
||||
u64 nr;
|
||||
u64 ips[0];
|
||||
};
|
||||
|
||||
struct branch_flags {
|
||||
u64 mispred:1;
|
||||
u64 predicted:1;
|
||||
u64 in_tx:1;
|
||||
u64 abort:1;
|
||||
u64 reserved:60;
|
||||
};
|
||||
|
||||
struct branch_entry {
|
||||
u64 from;
|
||||
u64 to;
|
||||
struct branch_flags flags;
|
||||
};
|
||||
|
||||
struct branch_stack {
|
||||
u64 nr;
|
||||
struct branch_entry entries[0];
|
||||
};
|
||||
|
||||
struct perf_sample {
|
||||
u64 ip;
|
||||
u32 pid, tid;
|
||||
|
@ -5,12 +5,12 @@
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
#include <linux/perf_event.h>
|
||||
#include "types.h"
|
||||
#include <linux/types.h>
|
||||
#include "xyarray.h"
|
||||
#include "cgroup.h"
|
||||
#include "hist.h"
|
||||
#include "symbol.h"
|
||||
|
||||
|
||||
struct perf_counts_values {
|
||||
union {
|
||||
struct {
|
||||
|
@ -4,10 +4,10 @@
|
||||
#include <linux/perf_event.h>
|
||||
#include <sys/types.h>
|
||||
#include <stdbool.h>
|
||||
#include "types.h"
|
||||
#include <linux/bitmap.h>
|
||||
#include <linux/types.h>
|
||||
#include "event.h"
|
||||
|
||||
#include <linux/bitmap.h>
|
||||
|
||||
enum {
|
||||
HEADER_RESERVED = 0, /* always cleared */
|
||||
|
@ -4,6 +4,9 @@
|
||||
#include <string.h>
|
||||
#include <linux/bitops.h>
|
||||
|
||||
#define DECLARE_BITMAP(name,bits) \
|
||||
unsigned long name[BITS_TO_LONGS(bits)]
|
||||
|
||||
int __bitmap_weight(const unsigned long *bitmap, int bits);
|
||||
void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1,
|
||||
const unsigned long *bitmap2, int bits);
|
||||
|
@ -1,6 +0,0 @@
|
||||
#ifndef PERF_LINUX_MODULE_H
|
||||
#define PERF_LINUX_MODULE_H
|
||||
|
||||
#define EXPORT_SYMBOL(name)
|
||||
|
||||
#endif
|
@ -1,4 +1,5 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#include "../../../../include/linux/list.h"
|
||||
|
||||
|
@ -1,29 +0,0 @@
|
||||
#ifndef _PERF_LINUX_TYPES_H_
|
||||
#define _PERF_LINUX_TYPES_H_
|
||||
|
||||
#include <asm/types.h>
|
||||
|
||||
#ifndef __bitwise
|
||||
#define __bitwise
|
||||
#endif
|
||||
|
||||
#ifndef __le32
|
||||
typedef __u32 __bitwise __le32;
|
||||
#endif
|
||||
|
||||
#define DECLARE_BITMAP(name,bits) \
|
||||
unsigned long name[BITS_TO_LONGS(bits)]
|
||||
|
||||
struct list_head {
|
||||
struct list_head *next, *prev;
|
||||
};
|
||||
|
||||
struct hlist_head {
|
||||
struct hlist_node *first;
|
||||
};
|
||||
|
||||
struct hlist_node {
|
||||
struct hlist_node *next, **pprev;
|
||||
};
|
||||
|
||||
#endif
|
@ -6,7 +6,7 @@
|
||||
#include <linux/rbtree.h>
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
#include "types.h"
|
||||
#include <linux/types.h>
|
||||
|
||||
enum map_type {
|
||||
MAP__FUNCTION = 0,
|
||||
|
@ -6,9 +6,8 @@
|
||||
|
||||
#include <linux/list.h>
|
||||
#include <stdbool.h>
|
||||
#include "types.h"
|
||||
#include <linux/types.h>
|
||||
#include <linux/perf_event.h>
|
||||
#include "types.h"
|
||||
|
||||
struct list_head;
|
||||
struct perf_evsel;
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/list.h>
|
||||
#include "types.h"
|
||||
#include <linux/types.h>
|
||||
#include "util.h"
|
||||
#include "parse-events.h"
|
||||
#include "parse-events-bison.h"
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef __PERF_REGS_H
|
||||
#define __PERF_REGS_H
|
||||
|
||||
#include "types.h"
|
||||
#include <linux/types.h>
|
||||
#include "event.h"
|
||||
|
||||
#ifdef HAVE_PERF_REGS_SUPPORT
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef __PMU_H
|
||||
#define __PMU_H
|
||||
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/bitmap.h>
|
||||
#include <linux/perf_event.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef __PERF_STATS_H
|
||||
#define __PERF_STATS_H
|
||||
|
||||
#include "types.h"
|
||||
#include <linux/types.h>
|
||||
|
||||
struct stats
|
||||
{
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/bitmap.h>
|
||||
|
||||
#include "perf.h"
|
||||
#include "svghelper.h"
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef __PERF_SVGHELPER_H
|
||||
#define __PERF_SVGHELPER_H
|
||||
|
||||
#include "types.h"
|
||||
#include <linux/types.h>
|
||||
|
||||
extern void open_svg(const char *filename, int cpus, int rows, u64 start, u64 end);
|
||||
extern void svg_box(int Yslot, u64 start, u64 end, const char *type);
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include <byteswap.h>
|
||||
#include <libgen.h>
|
||||
#include "build-id.h"
|
||||
#include "event.h"
|
||||
|
||||
#ifdef HAVE_LIBELF_SUPPORT
|
||||
#include <libelf.h>
|
||||
|
@ -2,7 +2,7 @@
|
||||
#define __PERF_TOP_H 1
|
||||
|
||||
#include "tool.h"
|
||||
#include "types.h"
|
||||
#include <linux/types.h>
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
#include <termios.h>
|
||||
|
@ -1,19 +0,0 @@
|
||||
#ifndef __PERF_TYPES_H
|
||||
#define __PERF_TYPES_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/*
|
||||
* We define u64 as uint64_t for every architecture
|
||||
* so that we can print it with "%"PRIx64 without getting warnings.
|
||||
*/
|
||||
typedef uint64_t u64;
|
||||
typedef int64_t s64;
|
||||
typedef unsigned int u32;
|
||||
typedef signed int s32;
|
||||
typedef unsigned short u16;
|
||||
typedef signed short s16;
|
||||
typedef unsigned char u8;
|
||||
typedef signed char s8;
|
||||
|
||||
#endif /* __PERF_TYPES_H */
|
@ -7,7 +7,7 @@
|
||||
#include "unwind-libdw.h"
|
||||
#include "machine.h"
|
||||
#include "thread.h"
|
||||
#include "types.h"
|
||||
#include <linux/types.h>
|
||||
#include "event.h"
|
||||
#include "perf_regs.h"
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef __UNWIND_H
|
||||
#define __UNWIND_H
|
||||
|
||||
#include "types.h"
|
||||
#include <linux/types.h>
|
||||
#include "event.h"
|
||||
#include "symbol.h"
|
||||
|
||||
|
@ -69,7 +69,7 @@
|
||||
#include <sys/ioctl.h>
|
||||
#include <inttypes.h>
|
||||
#include <linux/magic.h>
|
||||
#include "types.h"
|
||||
#include <linux/types.h>
|
||||
#include <sys/ttydefaults.h>
|
||||
#include <api/fs/debugfs.h>
|
||||
#include <termios.h>
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef __PERF_VALUES_H
|
||||
#define __PERF_VALUES_H
|
||||
|
||||
#include "types.h"
|
||||
#include <linux/types.h>
|
||||
|
||||
struct perf_read_values {
|
||||
int threads;
|
||||
|
@ -3,7 +3,7 @@ test: virtio_test vringh_test
|
||||
virtio_test: virtio_ring.o virtio_test.o
|
||||
vringh_test: vringh_test.o vringh.o virtio_ring.o
|
||||
|
||||
CFLAGS += -g -O2 -Wall -I. -I ../../usr/include/ -Wno-pointer-sign -fno-strict-overflow -fno-strict-aliasing -fno-common -MMD -U_FORTIFY_SOURCE
|
||||
CFLAGS += -g -O2 -Wall -I. -I../include/ -I ../../usr/include/ -Wno-pointer-sign -fno-strict-overflow -fno-strict-aliasing -fno-common -MMD -U_FORTIFY_SOURCE
|
||||
vpath %.c ../../drivers/virtio ../../drivers/vhost
|
||||
mod:
|
||||
${MAKE} -C `pwd`/../.. M=`pwd`/vhost_test
|
||||
|
@ -38,13 +38,6 @@ struct page {
|
||||
|
||||
#define __printf(a,b) __attribute__((format(printf,a,b)))
|
||||
|
||||
typedef enum {
|
||||
GFP_KERNEL,
|
||||
GFP_ATOMIC,
|
||||
__GFP_HIGHMEM,
|
||||
__GFP_HIGH
|
||||
} gfp_t;
|
||||
|
||||
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
|
||||
|
||||
extern void *__kmalloc_fake, *__kfree_ignore_start, *__kfree_ignore_end;
|
||||
|
@ -1,28 +0,0 @@
|
||||
#ifndef TYPES_H
|
||||
#define TYPES_H
|
||||
#include <stdint.h>
|
||||
|
||||
#define __force
|
||||
#define __user
|
||||
#define __must_check
|
||||
#define __cold
|
||||
|
||||
typedef uint64_t u64;
|
||||
typedef int64_t s64;
|
||||
typedef uint32_t u32;
|
||||
typedef int32_t s32;
|
||||
typedef uint16_t u16;
|
||||
typedef int16_t s16;
|
||||
typedef uint8_t u8;
|
||||
typedef int8_t s8;
|
||||
|
||||
typedef uint64_t __u64;
|
||||
typedef int64_t __s64;
|
||||
typedef uint32_t __u32;
|
||||
typedef int32_t __s32;
|
||||
typedef uint16_t __u16;
|
||||
typedef int16_t __s16;
|
||||
typedef uint8_t __u8;
|
||||
typedef int8_t __s8;
|
||||
|
||||
#endif /* TYPES_H */
|
Loading…
Reference in New Issue
Block a user