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  bpf-utils.h   Sprache: C

 
/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */

#ifndef __PERF_BPF_UTILS_H
#define __PERF_BPF_UTILS_H

#define ptr_to_u64(ptr)    ((__u64)(unsigned long)(ptr))

#ifdef HAVE_LIBBPF_SUPPORT

#include <bpf/libbpf.h>

/*
 * Get bpf_prog_info in continuous memory
 *
 * struct bpf_prog_info has multiple arrays. The user has option to choose
 * arrays to fetch from kernel. The following APIs provide an uniform way to
 * fetch these data. All arrays in bpf_prog_info are stored in a single
 * continuous memory region. This makes it easy to store the info in a
 * file.
 *
 * Before writing perf_bpil to files, it is necessary to
 * translate pointers in bpf_prog_info to offsets. Helper functions
 * bpil_addr_to_offs() and bpil_offs_to_addr()
 * are introduced to switch between pointers and offsets.
 *
 * Examples:
 *   # To fetch map_ids and prog_tags:
 *   __u64 arrays = (1UL << PERF_BPIL_MAP_IDS) |
 *           (1UL << PERF_BPIL_PROG_TAGS);
 *   struct perf_bpil *info_linear =
 *           get_bpf_prog_info_linear(fd, arrays);
 *
 *   # To save data in file
 *   bpil_addr_to_offs(info_linear);
 *   write(f, info_linear, sizeof(*info_linear) + info_linear->data_len);
 *
 *   # To read data from file
 *   read(f, info_linear, <proper_size>);
 *   bpil_offs_to_addr(info_linear);
 */

enum perf_bpil_array_types {
 PERF_BPIL_FIRST_ARRAY = 0,
 PERF_BPIL_JITED_INSNS = 0,
 PERF_BPIL_XLATED_INSNS,
 PERF_BPIL_MAP_IDS,
 PERF_BPIL_JITED_KSYMS,
 PERF_BPIL_JITED_FUNC_LENS,
 PERF_BPIL_FUNC_INFO,
 PERF_BPIL_LINE_INFO,
 PERF_BPIL_JITED_LINE_INFO,
 PERF_BPIL_PROG_TAGS,
 PERF_BPIL_LAST_ARRAY,
};

struct perf_bpil {
 /* size of struct bpf_prog_info, when the tool is compiled */
 __u32   info_len;
 /* total bytes allocated for data, round up to 8 bytes */
 __u32   data_len;
 /* which arrays are included in data */
 __u64   arrays;
 struct bpf_prog_info info;
 __u8   data[];
};

struct perf_bpil *
get_bpf_prog_info_linear(int fd, __u64 arrays);

void
bpil_addr_to_offs(struct perf_bpil *info_linear);

void
bpil_offs_to_addr(struct perf_bpil *info_linear);

#endif /* HAVE_LIBBPF_SUPPORT */
#endif /* __PERF_BPF_UTILS_H */

Messung V0.5
C=90 H=100 G=95

¤ Dauer der Verarbeitung: 0.10 Sekunden  (vorverarbeitet)  ¤

*© 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.