root/tools/perf/util/target.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. target__has_task
  2. target__has_cpu
  3. target__none
  4. target__has_per_thread
  5. target__uses_dummy_map

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef _PERF_TARGET_H
   3 #define _PERF_TARGET_H
   4 
   5 #include <stdbool.h>
   6 #include <sys/types.h>
   7 
   8 struct target {
   9         const char   *pid;
  10         const char   *tid;
  11         const char   *cpu_list;
  12         const char   *uid_str;
  13         uid_t        uid;
  14         bool         system_wide;
  15         bool         uses_mmap;
  16         bool         default_per_cpu;
  17         bool         per_thread;
  18 };
  19 
  20 enum target_errno {
  21         TARGET_ERRNO__SUCCESS           = 0,
  22 
  23         /*
  24          * Choose an arbitrary negative big number not to clash with standard
  25          * errno since SUS requires the errno has distinct positive values.
  26          * See 'Issue 6' in the link below.
  27          *
  28          * http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html
  29          */
  30         __TARGET_ERRNO__START           = -10000,
  31 
  32         /* for target__validate() */
  33         TARGET_ERRNO__PID_OVERRIDE_CPU  = __TARGET_ERRNO__START,
  34         TARGET_ERRNO__PID_OVERRIDE_UID,
  35         TARGET_ERRNO__UID_OVERRIDE_CPU,
  36         TARGET_ERRNO__PID_OVERRIDE_SYSTEM,
  37         TARGET_ERRNO__UID_OVERRIDE_SYSTEM,
  38         TARGET_ERRNO__SYSTEM_OVERRIDE_THREAD,
  39 
  40         /* for target__parse_uid() */
  41         TARGET_ERRNO__INVALID_UID,
  42         TARGET_ERRNO__USER_NOT_FOUND,
  43 
  44         __TARGET_ERRNO__END,
  45 };
  46 
  47 enum target_errno target__validate(struct target *target);
  48 enum target_errno target__parse_uid(struct target *target);
  49 
  50 int target__strerror(struct target *target, int errnum, char *buf, size_t buflen);
  51 
  52 static inline bool target__has_task(struct target *target)
  53 {
  54         return target->tid || target->pid || target->uid_str;
  55 }
  56 
  57 static inline bool target__has_cpu(struct target *target)
  58 {
  59         return target->system_wide || target->cpu_list;
  60 }
  61 
  62 static inline bool target__none(struct target *target)
  63 {
  64         return !target__has_task(target) && !target__has_cpu(target);
  65 }
  66 
  67 static inline bool target__has_per_thread(struct target *target)
  68 {
  69         return target->system_wide && target->per_thread;
  70 }
  71 
  72 static inline bool target__uses_dummy_map(struct target *target)
  73 {
  74         bool use_dummy = false;
  75 
  76         if (target->default_per_cpu)
  77                 use_dummy = target->per_thread ? true : false;
  78         else if (target__has_task(target) ||
  79                  (!target__has_cpu(target) && !target->uses_mmap))
  80                 use_dummy = true;
  81         else if (target__has_per_thread(target))
  82                 use_dummy = true;
  83 
  84         return use_dummy;
  85 }
  86 
  87 #endif /* _PERF_TARGET_H */

/* [<][>][^][v][top][bottom][index][help] */