2012-04-26 09:15:22 +04:00
# ifndef _PERF_TARGET_H
# define _PERF_TARGET_H
# include <stdbool.h>
# include <sys/types.h>
2013-11-12 23:46:16 +04:00
struct target {
2012-04-26 09:15:22 +04:00
const char * pid ;
const char * tid ;
const char * cpu_list ;
const char * uid_str ;
uid_t uid ;
bool system_wide ;
2012-05-16 13:45:49 +04:00
bool uses_mmap ;
2013-11-15 17:52:29 +04:00
bool default_per_cpu ;
bool per_thread ;
2012-04-26 09:15:22 +04:00
} ;
2013-11-12 23:46:16 +04:00
enum target_errno {
TARGET_ERRNO__SUCCESS = 0 ,
2012-05-07 09:09:00 +04:00
/*
* 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
*/
2013-11-12 23:46:16 +04:00
__TARGET_ERRNO__START = - 10000 ,
2012-05-07 09:09:00 +04:00
2013-11-12 23:46:16 +04:00
/* 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 ,
2013-11-15 17:52:29 +04:00
TARGET_ERRNO__SYSTEM_OVERRIDE_THREAD ,
2012-05-07 09:09:00 +04:00
2013-11-12 23:46:16 +04:00
/* for target__parse_uid() */
TARGET_ERRNO__INVALID_UID ,
TARGET_ERRNO__USER_NOT_FOUND ,
2012-05-07 09:09:00 +04:00
2013-11-12 23:46:16 +04:00
__TARGET_ERRNO__END ,
2012-05-07 09:09:00 +04:00
} ;
2013-11-12 23:46:16 +04:00
enum target_errno target__validate ( struct target * target ) ;
enum target_errno target__parse_uid ( struct target * target ) ;
2012-04-26 09:15:22 +04:00
2013-11-12 23:46:16 +04:00
int target__strerror ( struct target * target , int errnum , char * buf , size_t buflen ) ;
2012-05-07 09:09:02 +04:00
2013-11-12 23:46:16 +04:00
static inline bool target__has_task ( struct target * target )
2012-05-07 09:09:03 +04:00
{
2012-05-16 13:45:47 +04:00
return target - > tid | | target - > pid | | target - > uid_str ;
2012-05-07 09:09:03 +04:00
}
2013-11-12 23:46:16 +04:00
static inline bool target__has_cpu ( struct target * target )
2012-05-07 09:09:03 +04:00
{
2012-05-16 13:45:47 +04:00
return target - > system_wide | | target - > cpu_list ;
2012-05-07 09:09:03 +04:00
}
2013-11-12 23:46:16 +04:00
static inline bool target__none ( struct target * target )
2012-05-07 09:09:03 +04:00
{
2013-11-12 23:46:16 +04:00
return ! target__has_task ( target ) & & ! target__has_cpu ( target ) ;
2012-05-07 09:09:03 +04:00
}
2012-04-26 09:15:22 +04:00
# endif /* _PERF_TARGET_H */