root/kernel/trace/trace_synth.h
// SPDX-License-Identifier: GPL-2.0
#ifndef __TRACE_SYNTH_H
#define __TRACE_SYNTH_H

#include "trace_dynevent.h"

#define SYNTH_SYSTEM            "synthetic"
#define SYNTH_FIELDS_MAX        64

#define STR_VAR_LEN_MAX         MAX_FILTER_STR_VAL /* must be multiple of sizeof(u64) */

struct synth_field {
        char *type;
        char *name;
        size_t size;
        unsigned int offset;
        unsigned int field_pos;
        bool is_signed;
        bool is_string;
        bool is_dynamic;
        bool is_stack;
};

struct synth_event {
        struct dyn_event                        devent;
        int                                     ref;
        char                                    *name;
        struct synth_field                      **fields;
        unsigned int                            n_fields;
        struct synth_field                      **dynamic_fields;
        unsigned int                            n_dynamic_fields;
        unsigned int                            n_u64;
        struct trace_event_class                class;
        struct trace_event_call                 call;
        struct tracepoint                       *tp;
        struct module                           *mod;
};

extern struct synth_event *find_synth_event(const char *name);

#endif /* __TRACE_SYNTH_H */