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 3 kB image not shown  

Quelle  probe-finder.h   Sprache: C

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

#include <stdbool.h>
#include "intlist.h"
#include "build-id.h"
#include "probe-event.h"
#include <linux/ctype.h>

#define MAX_PROBE_BUFFER 1024
#define MAX_PROBES   128
#define MAX_PROBE_ARGS   128

#define PROBE_ARG_VARS  "$vars"
#define PROBE_ARG_PARAMS "$params"

static inline int is_c_varname(const char *name)
{
 /* TODO */
 return isalpha(name[0]) || name[0] == '_';
}

#ifdef HAVE_LIBDW_SUPPORT

#include "dwarf-aux.h"
#include "debuginfo.h"

/* Check the language code is known C */
bool is_known_C_lang(int lang);

/* Find probe_trace_events specified by perf_probe_event from debuginfo */
int debuginfo__find_trace_events(struct debuginfo *dbg,
     struct perf_probe_event *pev,
     struct probe_trace_event **tevs);

/* Find a perf_probe_point from debuginfo */
int debuginfo__find_probe_point(struct debuginfo *dbg, u64 addr,
    struct perf_probe_point *ppt);

/* Find a line range */
int debuginfo__find_line_range(struct debuginfo *dbg, struct line_range *lr);

/* Find available variables */
int debuginfo__find_available_vars_at(struct debuginfo *dbg,
          struct perf_probe_event *pev,
          struct variable_list **vls);

/* Find a src file from a DWARF tag path */
int find_source_path(const char *raw_path, const char *sbuild_id,
       const char *comp_dir, char **new_path);

struct probe_finder {
 struct perf_probe_event *pev;  /* Target probe event */
 struct debuginfo *dbg;

 /* Callback when a probe point is found */
 int (*callback)(Dwarf_Die *sc_die, struct probe_finder *pf);

 /* For function searching */
 int   lno;  /* Line number */
 Dwarf_Addr  addr;  /* Address */
 const char  *fname;  /* Real file name */
 Dwarf_Die  cu_die;  /* Current CU */
 Dwarf_Die  sp_die;
 Dwarf_Off  abstrace_dieoffset;
 struct intlist  *lcache; /* Line cache for lazy match */

 /* For variable searching */
 /* Call Frame Information from .eh_frame. Owned by this struct. */
 Dwarf_CFI  *cfi_eh;
 /* Call Frame Information from .debug_frame. Not owned. */
 Dwarf_CFI  *cfi_dbg;
 Dwarf_Op  *fb_ops; /* Frame base attribute */
 unsigned int  e_machine; /* ELF target machine arch */
 unsigned int  e_flags; /* ELF target machine flags */
 struct perf_probe_arg *pvar;  /* Current target variable */
 struct probe_trace_arg *tvar;  /* Current result variable */
 bool   skip_empty_arg; /* Skip non-exist args */
};

struct trace_event_finder {
 struct probe_finder pf;
 Dwfl_Module  *mod;  /* For solving symbols */
 struct probe_trace_event *tevs;  /* Found trace events */
 int   ntevs;  /* Number of trace events */
 int   max_tevs; /* Max number of trace events */
};

struct available_var_finder {
 struct probe_finder pf;
 Dwfl_Module  *mod;  /* For solving symbols */
 struct variable_list *vls;  /* Found variable lists */
 int   nvls;  /* Number of variable lists */
 int   max_vls; /* Max no. of variable lists */
 bool   child;  /* Search child scopes */
};

struct line_finder {
 struct line_range *lr;  /* Target line range */

 const char  *fname;  /* File name */
 int   lno_s;  /* Start line number */
 int   lno_e;  /* End line number */
 Dwarf_Die  cu_die;  /* Current CU */
 Dwarf_Die  sp_die;
 int   found;
};

#else
#define is_known_C_lang(lang) (false)
#endif /* HAVE_LIBDW_SUPPORT */

#endif /*_PROBE_FINDER_H */

Messung V0.5
C=88 H=94 G=90

¤ 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.