// 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    32 
 | 
  
 | 
#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; 
 | 
}; 
 | 
  
 | 
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 */ 
 |