Fix: liblttng-ctl comm: lttng_event_context is not packed
[lttng-tools.git] / include / lttng / event-internal.h
index 9a0c6962388d640505e6541ca7d41093f0dfacb2..6eb7ab37a7c67db671f59199c769ce54e79759f6 100644 (file)
@@ -77,6 +77,50 @@ struct lttng_event_function_attr_comm {
        char payload[];
 } LTTNG_PACKED;
 
+struct lttng_event_context_comm {
+       uint32_t type;
+       /*
+        * Depending on the type.
+        * For:
+        *  - LTTNG_EVENT_CONTEXT_APP_CONTEXT.
+        *
+        *  -> struct lttng_event_context_app_comm
+        *
+        * For
+        *  - LTTNG_EVENT_CONTEXT_PERF_COUNTER,
+        *  - LTTNG_EVENT_CONTEXT_PERF_CPU_COUNTER,
+        *  - LTTNG_EVENT_CONTEXT_PERF_THREAD_COUNTER.
+        *
+        *  -> struct lttng_event_context_perf_counter_comm
+        *
+        *  Other type -> no payload.
+        */
+       char payload[];
+} LTTNG_PACKED;
+
+struct lttng_event_context_perf_counter_comm {
+       uint32_t type;
+       uint64_t config;
+       /* Includes terminator `\0`. */
+       uint32_t name_len;
+       /*
+        * char name [name_len]
+        */
+       char payload[];
+} LTTNG_PACKED;
+
+struct lttng_event_context_app_comm {
+       /* Includes terminator `\0`. */
+       uint32_t provider_name_len;
+       /* Includes terminator `\0`. */
+       uint32_t ctx_name_len;
+       /*
+        * provider name [provider_name_len]
+        * ctx name [ctx_name_len]
+        */
+       char payload[];
+} LTTNG_PACKED;
+
 struct lttng_event_extended {
        /*
         * exclusions and filter_expression are only set when the lttng_event
@@ -109,6 +153,15 @@ int lttng_event_serialize(const struct lttng_event *event,
                struct lttng_bytecode *bytecode,
                struct lttng_payload *payload);
 
+ssize_t lttng_event_context_create_from_payload(
+               struct lttng_payload_view *view,
+               struct lttng_event_context **event_ctx);
+
+int lttng_event_context_serialize(struct lttng_event_context *context,
+               struct lttng_payload *payload);
+
+void lttng_event_context_destroy(struct lttng_event_context *context);
+
 enum lttng_error_code lttng_events_create_and_flatten_from_payload(
                struct lttng_payload_view *view,
                unsigned int count,
This page took 0.024806 seconds and 4 git commands to generate.