Implement variant type
[lttng-modules.git] / lttng-events.h
index 2eccf8692864f2cfae6ea1809e085fe058482976..9d775d5723d17d614547023c770ecc19ed0c8fbf 100644 (file)
@@ -27,9 +27,9 @@
 #include <linux/list.h>
 #include <linux/kprobes.h>
 #include <linux/kref.h>
-#include "wrapper/uuid.h"
-#include "lttng-abi.h"
-#include "lttng-abi-old.h"
+#include <wrapper/uuid.h>
+#include <lttng-abi.h>
+#include <lttng-abi-old.h>
 
 #define lttng_is_signed_type(type)     (((type)(-1)) < 0)
 
@@ -49,6 +49,10 @@ enum abstract_types {
        atype_array,
        atype_sequence,
        atype_string,
+       atype_struct,
+       atype_array_compound,           /* Array of compound types. */
+       atype_sequence_compound,        /* Sequence of compound types. */
+       atype_variant,
        NR_ABSTRACT_TYPES,
 };
 
@@ -124,6 +128,23 @@ struct lttng_type {
                        struct lttng_basic_type elem_type;
                        unsigned int elem_alignment;    /* alignment override */
                } sequence;
+               struct {
+                       uint32_t nr_fields;
+                       struct lttng_event_field *fields; /* Array of fields. */
+               } _struct;
+               struct {
+                       struct lttng_type *elem_type;
+                       unsigned int length;            /* num. elems. */
+               } array_compound;
+               struct {
+                       struct lttng_type *elem_type;
+                       const char *length_name;
+               } sequence_compound;
+               struct {
+                       const char *tag_name;
+                       struct lttng_event_field *choices; /* Array of fields. */
+                       uint32_t nr_choices;
+               } variant;
        } u;
 };
 
@@ -432,6 +453,14 @@ struct lttng_metadata_stream {
        uint64_t version;               /* Current version of the metadata cache */
 };
 
+#define LTTNG_DYNAMIC_LEN_STACK_SIZE   128
+
+struct lttng_dynamic_len_stack {
+       size_t stack[LTTNG_DYNAMIC_LEN_STACK_SIZE];
+       size_t offset;
+};
+
+DECLARE_PER_CPU(struct lttng_dynamic_len_stack, lttng_dynamic_len_stack);
 
 /*
  * struct lttng_pid_tracker declared in header due to deferencing of *v
@@ -613,6 +642,8 @@ int lttng_enabler_attach_bytecode(struct lttng_enabler *enabler,
 void lttng_enabler_event_link_bytecode(struct lttng_event *event,
                struct lttng_enabler *enabler);
 
+int lttng_probes_init(void);
+
 extern struct lttng_ctx *lttng_static_ctx;
 
 int lttng_context_init(void);
This page took 0.028771 seconds and 4 git commands to generate.