 539e6bb71e
			
		
	
	
	539e6bb71e
	
	
	
		
			
			By default, when tasks are specified (i.e. -p, -t or -u options) per-thread mmaps are created. Add an option to override that and force per-cpu mmaps. Further comments by peterz: So this option allows -t/-p/-u to create one buffer per cpu and attach all the various thread/process/user tasks' their counters to that one buffer? As opposed to the current state where each such counter would have its own buffer. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Tested-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> Acked-by: Peter Zijlstra <peterz@infradead.org> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Namhyung Kim <namhyung@gmail.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/r/1383313899-15987-7-git-send-email-adrian.hunter@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			1.5 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			1.5 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _PERF_TARGET_H
 | |
| #define _PERF_TARGET_H
 | |
| 
 | |
| #include <stdbool.h>
 | |
| #include <sys/types.h>
 | |
| 
 | |
| struct target {
 | |
| 	const char   *pid;
 | |
| 	const char   *tid;
 | |
| 	const char   *cpu_list;
 | |
| 	const char   *uid_str;
 | |
| 	uid_t	     uid;
 | |
| 	bool	     system_wide;
 | |
| 	bool	     uses_mmap;
 | |
| 	bool	     force_per_cpu;
 | |
| };
 | |
| 
 | |
| enum target_errno {
 | |
| 	TARGET_ERRNO__SUCCESS		= 0,
 | |
| 
 | |
| 	/*
 | |
| 	 * Choose an arbitrary negative big number not to clash with standard
 | |
| 	 * errno since SUS requires the errno has distinct positive values.
 | |
| 	 * See 'Issue 6' in the link below.
 | |
| 	 *
 | |
| 	 * http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html
 | |
| 	 */
 | |
| 	__TARGET_ERRNO__START		= -10000,
 | |
| 
 | |
| 	/* for target__validate() */
 | |
| 	TARGET_ERRNO__PID_OVERRIDE_CPU	= __TARGET_ERRNO__START,
 | |
| 	TARGET_ERRNO__PID_OVERRIDE_UID,
 | |
| 	TARGET_ERRNO__UID_OVERRIDE_CPU,
 | |
| 	TARGET_ERRNO__PID_OVERRIDE_SYSTEM,
 | |
| 	TARGET_ERRNO__UID_OVERRIDE_SYSTEM,
 | |
| 
 | |
| 	/* for target__parse_uid() */
 | |
| 	TARGET_ERRNO__INVALID_UID,
 | |
| 	TARGET_ERRNO__USER_NOT_FOUND,
 | |
| 
 | |
| 	__TARGET_ERRNO__END,
 | |
| };
 | |
| 
 | |
| enum target_errno target__validate(struct target *target);
 | |
| enum target_errno target__parse_uid(struct target *target);
 | |
| 
 | |
| int target__strerror(struct target *target, int errnum, char *buf, size_t buflen);
 | |
| 
 | |
| static inline bool target__has_task(struct target *target)
 | |
| {
 | |
| 	return target->tid || target->pid || target->uid_str;
 | |
| }
 | |
| 
 | |
| static inline bool target__has_cpu(struct target *target)
 | |
| {
 | |
| 	return target->system_wide || target->cpu_list;
 | |
| }
 | |
| 
 | |
| static inline bool target__none(struct target *target)
 | |
| {
 | |
| 	return !target__has_task(target) && !target__has_cpu(target);
 | |
| }
 | |
| 
 | |
| #endif /* _PERF_TARGET_H */
 |