linux/tools/perf/util/target.h
<<
>>
Prefs
   1#ifndef _PERF_TARGET_H
   2#define _PERF_TARGET_H
   3
   4#include <stdbool.h>
   5#include <sys/types.h>
   6
   7struct perf_target {
   8        const char   *pid;
   9        const char   *tid;
  10        const char   *cpu_list;
  11        const char   *uid_str;
  12        uid_t        uid;
  13        bool         system_wide;
  14        bool         uses_mmap;
  15};
  16
  17enum perf_target_errno {
  18        PERF_ERRNO_TARGET__SUCCESS              = 0,
  19
  20        /*
  21         * Choose an arbitrary negative big number not to clash with standard
  22         * errno since SUS requires the errno has distinct positive values.
  23         * See 'Issue 6' in the link below.
  24         *
  25         * http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html
  26         */
  27        __PERF_ERRNO_TARGET__START              = -10000,
  28
  29
  30        /* for perf_target__validate() */
  31        PERF_ERRNO_TARGET__PID_OVERRIDE_CPU     = __PERF_ERRNO_TARGET__START,
  32        PERF_ERRNO_TARGET__PID_OVERRIDE_UID,
  33        PERF_ERRNO_TARGET__UID_OVERRIDE_CPU,
  34        PERF_ERRNO_TARGET__PID_OVERRIDE_SYSTEM,
  35        PERF_ERRNO_TARGET__UID_OVERRIDE_SYSTEM,
  36
  37        /* for perf_target__parse_uid() */
  38        PERF_ERRNO_TARGET__INVALID_UID,
  39        PERF_ERRNO_TARGET__USER_NOT_FOUND,
  40
  41        __PERF_ERRNO_TARGET__END,
  42};
  43
  44enum perf_target_errno perf_target__validate(struct perf_target *target);
  45enum perf_target_errno perf_target__parse_uid(struct perf_target *target);
  46
  47int perf_target__strerror(struct perf_target *target, int errnum, char *buf,
  48                          size_t buflen);
  49
  50static inline bool perf_target__has_task(struct perf_target *target)
  51{
  52        return target->tid || target->pid || target->uid_str;
  53}
  54
  55static inline bool perf_target__has_cpu(struct perf_target *target)
  56{
  57        return target->system_wide || target->cpu_list;
  58}
  59
  60static inline bool perf_target__none(struct perf_target *target)
  61{
  62        return !perf_target__has_task(target) && !perf_target__has_cpu(target);
  63}
  64
  65#endif /* _PERF_TARGET_H */
  66