Linux Perf
target.h
Go to the documentation of this file.
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;
15  bool uses_mmap;
17  bool per_thread;
18 };
19 
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  */
31 
32  /* for target__validate() */
39 
40  /* for target__parse_uid() */
43 
45 };
46 
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 */
bool uses_mmap
Definition: target.h:15
const char * uid_str
Definition: target.h:12
target_errno
Definition: target.h:20
static bool target__has_task(struct target *target)
Definition: target.h:52
static bool target__none(struct target *target)
Definition: target.h:62
bool default_per_cpu
Definition: target.h:16
bool per_thread
Definition: target.h:17
enum target_errno target__validate(struct target *target)
Definition: target.c:17
bool system_wide
Definition: target.h:14
static bool target__has_cpu(struct target *target)
Definition: target.h:57
static bool target__has_per_thread(struct target *target)
Definition: target.h:67
uid_t uid
Definition: target.h:13
const char * tid
Definition: target.h:10
int target__strerror(struct target *target, int errnum, char *buf, size_t buflen)
Definition: target.c:116
const char * cpu_list
Definition: target.h:11
const char * pid
Definition: target.h:9
static bool target__uses_dummy_map(struct target *target)
Definition: target.h:72
enum target_errno target__parse_uid(struct target *target)
Definition: target.c:69
Definition: target.h:8