Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/tools/perf/util/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  target.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PERF_TARGET_H
#define _PERF_TARGET_H

#include <stdbool.h>
#include <sys/types.h>

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(struct target *target)
{
 return target->tid || target->pid;
}

static inline bool target__has_cpu(struct target *target)
{
 return target->system_wide || target->cpu_list;
}

static inline bool target__none(struct target *target)
{
 return !target__has_task(target) && !target__has_cpu(target);
}

static inline bool target__enable_on_exec(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(struct target *target)
{
 return target->system_wide && target->per_thread;
}

static inline bool target__uses_dummy_map(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;
}

#endif /* _PERF_TARGET_H */

Messung V0.5
C=96 H=96 G=95

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.