 814c8c38e1
			
		
	
	
	814c8c38e1
	
	
	
		
			
			Teach perf-record about the new perf_event_attr::{use_clockid, clockid}
fields. Add a simple parameter to set the clock (if any) to be used for
the events to be recorded into the data file.
Since we store the entire perf_event_attr in the EVENT_DESC section we
also already store the used clockid in the data file.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: David Ahern <dsahern@gmail.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Yunlong Song <yunlong.song@huawei.com>
Link: http://lkml.kernel.org/r/20150407154851.GR23123@twins.programming.kicks-ass.net
[ Conditionally define CLOCK_BOOTTIME, at least rhel6 doesn't have it - dsahern
  Ditto for CLOCK_MONOTONIC_RAW, sles11sp2 doesn't have it - yunlong.song ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
		
	
			
		
			
				
	
	
		
			72 lines
		
	
	
	
		
			1.5 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
	
		
			1.5 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _PERF_PERF_H
 | |
| #define _PERF_PERF_H
 | |
| 
 | |
| #include <time.h>
 | |
| #include <stdbool.h>
 | |
| #include <linux/types.h>
 | |
| #include <linux/perf_event.h>
 | |
| 
 | |
| 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
 | |
| #endif
 | |
| #ifndef NSEC_PER_USEC
 | |
| # define NSEC_PER_USEC			1000ULL
 | |
| #endif
 | |
| 
 | |
| static inline unsigned long long rdclock(void)
 | |
| {
 | |
| 	struct timespec ts;
 | |
| 
 | |
| 	clock_gettime(CLOCK_MONOTONIC, &ts);
 | |
| 	return ts.tv_sec * 1000000000ULL + ts.tv_nsec;
 | |
| }
 | |
| 
 | |
| #define MAX_NR_CPUS			1024
 | |
| 
 | |
| extern const char *input_name;
 | |
| extern bool perf_host, perf_guest;
 | |
| extern const char perf_version_string[];
 | |
| 
 | |
| void pthread__unblock_sigwinch(void);
 | |
| 
 | |
| #include "util/target.h"
 | |
| 
 | |
| struct record_opts {
 | |
| 	struct target target;
 | |
| 	bool	     group;
 | |
| 	bool	     inherit_stat;
 | |
| 	bool	     no_buffering;
 | |
| 	bool	     no_inherit;
 | |
| 	bool	     no_inherit_set;
 | |
| 	bool	     no_samples;
 | |
| 	bool	     raw_samples;
 | |
| 	bool	     sample_address;
 | |
| 	bool	     sample_weight;
 | |
| 	bool	     sample_time;
 | |
| 	bool	     period;
 | |
| 	bool	     sample_intr_regs;
 | |
| 	bool	     running_time;
 | |
| 	unsigned int freq;
 | |
| 	unsigned int mmap_pages;
 | |
| 	unsigned int user_freq;
 | |
| 	u64          branch_stack;
 | |
| 	u64	     default_interval;
 | |
| 	u64	     user_interval;
 | |
| 	bool	     sample_transaction;
 | |
| 	unsigned     initial_delay;
 | |
| 	bool         use_clockid;
 | |
| 	clockid_t    clockid;
 | |
| };
 | |
| 
 | |
| struct option;
 | |
| extern const char * const *record_usage;
 | |
| extern struct option *record_options;
 | |
| #endif
 |