Contributors: 6
Author |
Tokens |
Token Proportion |
Commits |
Commit Proportion |
Adrian Hunter |
450 |
94.74% |
5 |
38.46% |
Arnaldo Carvalho de Melo |
8 |
1.68% |
4 |
30.77% |
Andi Kleen |
7 |
1.47% |
1 |
7.69% |
Tom Zanussi |
6 |
1.26% |
1 |
7.69% |
Jiri Olsa |
2 |
0.42% |
1 |
7.69% |
Frédéric Weisbecker |
2 |
0.42% |
1 |
7.69% |
Total |
475 |
|
13 |
|
/* SPDX-License-Identifier: GPL-2.0 */
/*
* dlfilter.h: Interface to perf script --dlfilter shared object
* Copyright (c) 2021, Intel Corporation.
*/
#ifndef PERF_UTIL_DLFILTER_H
#define PERF_UTIL_DLFILTER_H
struct perf_session;
union perf_event;
struct perf_sample;
struct evsel;
struct machine;
struct addr_location;
struct perf_dlfilter_fns;
struct perf_dlfilter_sample;
struct perf_dlfilter_al;
struct dlfilter {
char *file;
void *handle;
void *data;
struct perf_session *session;
bool ctx_valid;
bool in_start;
bool in_stop;
int dlargc;
char **dlargv;
union perf_event *event;
struct perf_sample *sample;
struct evsel *evsel;
struct machine *machine;
struct addr_location *al;
struct addr_location *addr_al;
struct perf_dlfilter_sample *d_sample;
struct perf_dlfilter_al *d_ip_al;
struct perf_dlfilter_al *d_addr_al;
int (*start)(void **data, void *ctx);
int (*stop)(void *data, void *ctx);
int (*filter_event)(void *data,
const struct perf_dlfilter_sample *sample,
void *ctx);
int (*filter_event_early)(void *data,
const struct perf_dlfilter_sample *sample,
void *ctx);
struct perf_dlfilter_fns *fns;
};
struct dlfilter *dlfilter__new(const char *file, int dlargc, char **dlargv);
int dlfilter__start(struct dlfilter *d, struct perf_session *session);
int dlfilter__do_filter_event(struct dlfilter *d,
union perf_event *event,
struct perf_sample *sample,
struct evsel *evsel,
struct machine *machine,
struct addr_location *al,
struct addr_location *addr_al,
bool early);
void dlfilter__cleanup(struct dlfilter *d);
static inline int dlfilter__filter_event(struct dlfilter *d,
union perf_event *event,
struct perf_sample *sample,
struct evsel *evsel,
struct machine *machine,
struct addr_location *al,
struct addr_location *addr_al)
{
if (!d || !d->filter_event)
return 0;
return dlfilter__do_filter_event(d, event, sample, evsel, machine, al, addr_al, false);
}
static inline int dlfilter__filter_event_early(struct dlfilter *d,
union perf_event *event,
struct perf_sample *sample,
struct evsel *evsel,
struct machine *machine,
struct addr_location *al,
struct addr_location *addr_al)
{
if (!d || !d->filter_event_early)
return 0;
return dlfilter__do_filter_event(d, event, sample, evsel, machine, al, addr_al, true);
}
int list_available_dlfilters(const struct option *opt, const char *s, int unset);
bool get_filter_desc(const char *dirname, const char *name, char **desc,
char **long_desc);
#endif