]>
Commit | Line | Data |
---|---|---|
12864b31 NK |
1 | #ifndef _PERF_TARGET_H |
2 | #define _PERF_TARGET_H | |
3 | ||
4 | #include <stdbool.h> | |
5 | #include <sys/types.h> | |
6 | ||
7 | struct 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; | |
d1cb9fce | 14 | bool uses_mmap; |
12864b31 NK |
15 | }; |
16 | ||
60bbddaa NK |
17 | enum 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 | ||
dfe78ada NK |
37 | /* for perf_target__parse_uid() */ |
38 | PERF_ERRNO_TARGET__INVALID_UID, | |
39 | PERF_ERRNO_TARGET__USER_NOT_FOUND, | |
40 | ||
60bbddaa NK |
41 | __PERF_ERRNO_TARGET__END, |
42 | }; | |
43 | ||
44 | enum perf_target_errno perf_target__validate(struct perf_target *target); | |
dfe78ada | 45 | enum perf_target_errno perf_target__parse_uid(struct perf_target *target); |
12864b31 | 46 | |
16ad2ffb NK |
47 | int perf_target__strerror(struct perf_target *target, int errnum, char *buf, |
48 | size_t buflen); | |
49 | ||
aa22dd49 | 50 | static inline bool perf_target__has_task(struct perf_target *target) |
d67356e7 | 51 | { |
aa22dd49 | 52 | return target->tid || target->pid || target->uid_str; |
d67356e7 NK |
53 | } |
54 | ||
aa22dd49 | 55 | static inline bool perf_target__has_cpu(struct perf_target *target) |
d67356e7 | 56 | { |
aa22dd49 | 57 | return target->system_wide || target->cpu_list; |
d67356e7 NK |
58 | } |
59 | ||
60 | static inline bool perf_target__none(struct perf_target *target) | |
61 | { | |
aa22dd49 | 62 | return !perf_target__has_task(target) && !perf_target__has_cpu(target); |
d67356e7 NK |
63 | } |
64 | ||
12864b31 | 65 | #endif /* _PERF_TARGET_H */ |