 9c105fbc94
			
		
	
	
	9c105fbc94
	
	
	
		
			
			Check for cpu_map__dummy_new() or cpu_map__new() to be called in perf_evlist__create_maps() is more complicated. This patch moves the checking work into target.h, combining two conditions and making perf_evlist__create_maps() more readable. Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com> Cc: David Ahern <dsahern@gmail.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/b8c41f1fd2c4f0df71eb7b19aea74fb64d46cdda.1386197481.git.yangds.fnst@cn.fujitsu.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
		
			
				
	
	
		
			79 lines
		
	
	
	
		
			1.9 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
	
		
			1.9 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	     default_per_cpu;
 | |
| 	bool	     per_thread;
 | |
| };
 | |
| 
 | |
| 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,
 | |
| 	TARGET_ERRNO__SYSTEM_OVERRIDE_THREAD,
 | |
| 
 | |
| 	/* 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);
 | |
| }
 | |
| 
 | |
| static inline bool target__uses_dummy_map(struct target *target)
 | |
| {
 | |
| 	bool use_dummy = false;
 | |
| 
 | |
| 	if (target->default_per_cpu)
 | |
| 		use_dummy = target->per_thread ? true : false;
 | |
| 	else if (target__has_task(target) ||
 | |
| 	         (!target__has_cpu(target) && !target->uses_mmap))
 | |
| 		use_dummy = true;
 | |
| 
 | |
| 	return use_dummy;
 | |
| }
 | |
| 
 | |
| #endif /* _PERF_TARGET_H */
 |