tools/perf/util/target.h
Source file repositories/reference/linux-study-clean/tools/perf/util/target.h
File Facts
- System
- Linux kernel
- Corpus path
tools/perf/util/target.h- Extension
.h- Size
- 2493 bytes
- Lines
- 99
- Domain
- Support Tooling And Documentation
- Bucket
- tools
- Inferred role
- Support Tooling And Documentation: implementation source
- Status
- source implementation candidate
Why This File Exists
Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
stdbool.hsys/types.h
Detected Declarations
struct targetenum target_errnofunction target__has_taskfunction target__has_cpufunction target__nonefunction target__enable_on_execfunction target__has_per_threadfunction target__uses_dummy_map
Annotated Snippet
struct target {
const char *pid;
const char *tid;
const char *cpu_list;
const char *bpf_str;
bool system_wide;
bool uses_mmap;
bool default_per_cpu;
bool per_thread;
bool use_bpf;
bool inherit;
int initial_delay;
const char *attr_map;
};
enum target_errno {
TARGET_ERRNO__SUCCESS = 0,
/*
* 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
*/
__TARGET_ERRNO__START = -10000,
/* for target__validate() */
TARGET_ERRNO__PID_OVERRIDE_CPU = __TARGET_ERRNO__START,
TARGET_ERRNO__PID_OVERRIDE_SYSTEM,
TARGET_ERRNO__SYSTEM_OVERRIDE_THREAD,
TARGET_ERRNO__BPF_OVERRIDE_CPU,
TARGET_ERRNO__BPF_OVERRIDE_PID,
TARGET_ERRNO__BPF_OVERRIDE_THREAD,
__TARGET_ERRNO__END,
};
enum target_errno target__validate(struct target *target);
uid_t parse_uid(const char *str);
int target__strerror(struct target *target, int errnum, char *buf, size_t buflen);
static inline bool target__has_task(const struct target *target)
{
return target->tid || target->pid;
}
static inline bool target__has_cpu(const struct target *target)
{
return target->system_wide || target->cpu_list;
}
static inline bool target__none(const struct target *target)
{
return !target__has_task(target) && !target__has_cpu(target);
}
static inline bool target__enable_on_exec(const struct target *target)
{
/*
* Normally enable_on_exec should be set if:
* 1) The tracee process is forked (not attaching to existed task or cpu).
* 2) And initial_delay is not configured.
* Otherwise, we enable tracee events manually.
*/
return target__none(target) && !target->initial_delay;
}
static inline bool target__has_per_thread(const struct target *target)
{
return target->system_wide && target->per_thread;
}
static inline bool target__uses_dummy_map(const struct target *target)
{
bool use_dummy = false;
if (target->default_per_cpu)
use_dummy = target->per_thread ? true : false;
else if (target__has_task(target) ||
(!target__has_cpu(target) && !target->uses_mmap))
use_dummy = true;
else if (target__has_per_thread(target))
use_dummy = true;
return use_dummy;
}
Annotation
- Immediate include surface: `stdbool.h`, `sys/types.h`.
- Detected declarations: `struct target`, `enum target_errno`, `function target__has_task`, `function target__has_cpu`, `function target__none`, `function target__enable_on_exec`, `function target__has_per_thread`, `function target__uses_dummy_map`.
- Atlas domain: Support Tooling And Documentation / tools.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.