diff options
| author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2013-05-01 08:47:44 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2013-05-01 08:47:44 -0700 | 
| commit | bf61c8840efe60fd8f91446860b63338fb424158 (patch) | |
| tree | 7a71832407a4f0d6346db773343f4c3ae2257b19 /tools/perf/perf.h | |
| parent | 5846115b30f3a881e542c8bfde59a699c1c13740 (diff) | |
| parent | 0c6a61657da78098472fd0eb71cc01f2387fa1bb (diff) | |
| download | olio-linux-3.10-bf61c8840efe60fd8f91446860b63338fb424158.tar.xz olio-linux-3.10-bf61c8840efe60fd8f91446860b63338fb424158.zip  | |
Merge branch 'next' into for-linus
Prepare first set of updates for 3.10 merge window.
Diffstat (limited to 'tools/perf/perf.h')
| -rw-r--r-- | tools/perf/perf.h | 76 | 
1 files changed, 30 insertions, 46 deletions
diff --git a/tools/perf/perf.h b/tools/perf/perf.h index c50985eaec4..74659ecf93e 100644 --- a/tools/perf/perf.h +++ b/tools/perf/perf.h @@ -1,12 +1,9 @@  #ifndef _PERF_PERF_H  #define _PERF_PERF_H -struct winsize; - -void get_term_dimensions(struct winsize *ws); +#include <asm/unistd.h>  #if defined(__i386__) -#include "../../arch/x86/include/asm/unistd.h"  #define rmb()		asm volatile("lock; addl $0,0(%%esp)" ::: "memory")  #define cpu_relax()	asm volatile("rep; nop" ::: "memory");  #define CPUINFO_PROC	"model name" @@ -16,7 +13,6 @@ void get_term_dimensions(struct winsize *ws);  #endif  #if defined(__x86_64__) -#include "../../arch/x86/include/asm/unistd.h"  #define rmb()		asm volatile("lfence" ::: "memory")  #define cpu_relax()	asm volatile("rep; nop" ::: "memory");  #define CPUINFO_PROC	"model name" @@ -26,20 +22,18 @@ void get_term_dimensions(struct winsize *ws);  #endif  #ifdef __powerpc__ -#include "../../arch/powerpc/include/asm/unistd.h" +#include "../../arch/powerpc/include/uapi/asm/unistd.h"  #define rmb()		asm volatile ("sync" ::: "memory")  #define cpu_relax()	asm volatile ("" ::: "memory");  #define CPUINFO_PROC	"cpu"  #endif  #ifdef __s390__ -#include "../../arch/s390/include/asm/unistd.h"  #define rmb()		asm volatile("bcr 15,0" ::: "memory")  #define cpu_relax()	asm volatile("" ::: "memory");  #endif  #ifdef __sh__ -#include "../../arch/sh/include/asm/unistd.h"  #if defined(__SH4A__) || defined(__SH5__)  # define rmb()		asm volatile("synco" ::: "memory")  #else @@ -50,35 +44,30 @@ void get_term_dimensions(struct winsize *ws);  #endif  #ifdef __hppa__ -#include "../../arch/parisc/include/asm/unistd.h"  #define rmb()		asm volatile("" ::: "memory")  #define cpu_relax()	asm volatile("" ::: "memory");  #define CPUINFO_PROC	"cpu"  #endif  #ifdef __sparc__ -#include "../../arch/sparc/include/uapi/asm/unistd.h"  #define rmb()		asm volatile("":::"memory")  #define cpu_relax()	asm volatile("":::"memory")  #define CPUINFO_PROC	"cpu"  #endif  #ifdef __alpha__ -#include "../../arch/alpha/include/asm/unistd.h"  #define rmb()		asm volatile("mb" ::: "memory")  #define cpu_relax()	asm volatile("" ::: "memory")  #define CPUINFO_PROC	"cpu model"  #endif  #ifdef __ia64__ -#include "../../arch/ia64/include/asm/unistd.h"  #define rmb()		asm volatile ("mf" ::: "memory")  #define cpu_relax()	asm volatile ("hint @pause" ::: "memory")  #define CPUINFO_PROC	"model name"  #endif  #ifdef __arm__ -#include "../../arch/arm/include/asm/unistd.h"  /*   * Use the __kuser_memory_barrier helper in the CPU helper page. See   * arch/arm/kernel/entry-armv.S in the kernel source for details. @@ -89,13 +78,11 @@ void get_term_dimensions(struct winsize *ws);  #endif  #ifdef __aarch64__ -#include "../../arch/arm64/include/asm/unistd.h"  #define rmb()		asm volatile("dmb ld" ::: "memory")  #define cpu_relax()	asm volatile("yield" ::: "memory")  #endif  #ifdef __mips__ -#include "../../arch/mips/include/asm/unistd.h"  #define rmb()		asm volatile(					\  				".set	mips2\n\t"			\  				"sync\n\t"				\ @@ -107,41 +94,27 @@ void get_term_dimensions(struct winsize *ws);  #define CPUINFO_PROC	"cpu model"  #endif +#ifdef __arc__ +#define rmb()		asm volatile("" ::: "memory") +#define cpu_relax()	rmb() +#define CPUINFO_PROC	"Processor" +#endif + +#ifdef __metag__ +#define rmb()		asm volatile("" ::: "memory") +#define cpu_relax()	asm volatile("" ::: "memory") +#define CPUINFO_PROC	"CPU" +#endif +  #include <time.h>  #include <unistd.h>  #include <sys/types.h>  #include <sys/syscall.h> -#include "../../include/uapi/linux/perf_event.h" +#include <linux/perf_event.h>  #include "util/types.h"  #include <stdbool.h> -struct perf_mmap { -	void			*base; -	int			mask; -	unsigned int		prev; -}; - -static inline unsigned int perf_mmap__read_head(struct perf_mmap *mm) -{ -	struct perf_event_mmap_page *pc = mm->base; -	int head = pc->data_head; -	rmb(); -	return head; -} - -static inline void perf_mmap__write_tail(struct perf_mmap *md, -					 unsigned long tail) -{ -	struct perf_event_mmap_page *pc = md->base; - -	/* -	 * ensure all reads are done before we write the tail out. -	 */ -	/* mb(); */ -	pc->data_tail = tail; -} -  /*   * prctl(PR_TASK_PERF_EVENTS_DISABLE) will (cheaply) disable all   * counters in the current task. @@ -174,13 +147,25 @@ static inline unsigned long long rdclock(void)  	(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)  { -	return syscall(__NR_perf_event_open, attr, pid, cpu, -		       group_fd, 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 @@ -208,6 +193,7 @@ struct branch_stack {  	struct branch_entry	entries[0];  }; +extern const char *input_name;  extern bool perf_host, perf_guest;  extern const char perf_version_string[]; @@ -233,8 +219,6 @@ struct perf_record_opts {  	bool	     raw_samples;  	bool	     sample_address;  	bool	     sample_time; -	bool	     sample_id_all_missing; -	bool	     exclude_guest_missing;  	bool	     period;  	unsigned int freq;  	unsigned int mmap_pages;  |