Add a save API to lttng-ctl
[lttng-tools.git] / src / common / sessiond-comm / sessiond-comm.h
index 229b91e5901cae11e83a4675f48c047e8e07c32f..bbc7ce5a8e403156e1bedc38ba574ffdccc390ea 100644 (file)
@@ -29,6 +29,7 @@
 #include <limits.h>
 #include <lttng/lttng.h>
 #include <lttng/snapshot-internal.h>
+#include <lttng/save-internal.h>
 #include <common/compat/socket.h>
 #include <common/uri.h>
 #include <common/defaults.h>
@@ -80,8 +81,8 @@ enum lttcomm_sessiond_command {
        LTTNG_DISABLE_CONSUMER              = 19,
        LTTNG_ENABLE_CONSUMER               = 20,
        LTTNG_SET_CONSUMER_URI              = 21,
-       LTTNG_ENABLE_EVENT_WITH_FILTER      = 22,
-       /* Unused */
+       /* 22 */
+       /* 23 */
        LTTNG_DATA_PENDING                  = 24,
        LTTNG_SNAPSHOT_ADD_OUTPUT           = 25,
        LTTNG_SNAPSHOT_DEL_OUTPUT           = 26,
@@ -89,6 +90,7 @@ enum lttcomm_sessiond_command {
        LTTNG_SNAPSHOT_RECORD               = 28,
        LTTNG_CREATE_SESSION_SNAPSHOT       = 29,
        LTTNG_CREATE_SESSION_LIVE           = 30,
+       LTTNG_SAVE_SESSION                  = 31,
 };
 
 enum lttcomm_relayd_command {
@@ -106,14 +108,17 @@ enum lttcomm_relayd_command {
        RELAYD_ADD_INDEX                    = 12,
        RELAYD_SEND_INDEX                   = 13,
        RELAYD_CLOSE_INDEX                  = 14,
-       /* Live-reading commands. */
+       /* Live-reading commands (2.4+). */
        RELAYD_LIST_SESSIONS                = 15,
+       /* All streams of the channel have been sent to the relayd (2.4+). */
+       RELAYD_STREAMS_SENT                 = 16,
 };
 
 /*
  * lttcomm error code.
  */
 enum lttcomm_return_code {
+       LTTCOMM_CONSUMERD_SUCCESS            = 0,   /* Everything went fine. */
        LTTCOMM_CONSUMERD_COMMAND_SOCK_READY = 1,   /* Command socket ready */
        LTTCOMM_CONSUMERD_SUCCESS_RECV_FD,          /* Success on receiving fds */
        LTTCOMM_CONSUMERD_ERROR_RECV_FD,            /* Error on receiving fds */
@@ -132,6 +137,7 @@ enum lttcomm_return_code {
        LTTCOMM_CONSUMERD_ERROR_METADATA,           /* Error with metadata. */
        LTTCOMM_CONSUMERD_FATAL,                    /* Fatal error. */
        LTTCOMM_CONSUMERD_RELAYD_FAIL,              /* Error on remote relayd */
+       LTTCOMM_CONSUMERD_CHANNEL_FAIL,             /* Channel creation failed. */
 
        /* MUST be last element */
        LTTCOMM_NR,                                             /* Last element */
@@ -228,8 +234,19 @@ struct lttcomm_session_msg {
                struct {
                        char channel_name[LTTNG_SYMBOL_NAME_LEN];
                        struct lttng_event event;
+                       /* Length of following filter expression. */
+                       uint32_t expression_len;
                        /* Length of following bytecode for filter. */
                        uint32_t bytecode_len;
+                       /* exclusion data */
+                       uint32_t exclusion_count;
+                       /*
+                        * After this structure, the following variable-length
+                        * items are transmitted:
+                        * - char exclusion_names[LTTNG_SYMBOL_NAME_LEN][exclusion_count]
+                        * - unsigned char filter_expression[expression_len]
+                        * - unsigned char filter_bytecode[bytecode_len]
+                        */
                } LTTNG_PACKED enable;
                /* Create channel */
                struct {
@@ -265,6 +282,9 @@ struct lttcomm_session_msg {
                        uint32_t nb_uri;
                        unsigned int timer_interval;    /* usec */
                } LTTNG_PACKED session_live;
+               struct {
+                       struct lttng_save_session_attr attr;
+               } LTTNG_PACKED save_session;
        } u;
 } LTTNG_PACKED;
 
@@ -284,6 +304,18 @@ struct lttng_filter_bytecode {
        char data[0];
 } LTTNG_PACKED;
 
+/*
+ * Event exclusion data. At the end of the structure, there will actually
+ * by zero or more names, where the actual number of names is given by
+ * the 'count' item of the structure.
+ */
+#define LTTNG_EVENT_EXCLUSION_PADDING  32
+struct lttng_event_exclusion {
+       uint32_t count;
+       char padding[LTTNG_EVENT_EXCLUSION_PADDING];
+       char names[LTTNG_SYMBOL_NAME_LEN][0];
+} LTTNG_PACKED;
+
 /*
  * Data structure for the response from sessiond to the lttng client.
  */
@@ -411,6 +443,10 @@ struct lttcomm_consumer_msg {
                        uint64_t key;
                        uint64_t max_stream_size;
                } LTTNG_PACKED snapshot_channel;
+               struct {
+                       uint64_t channel_key;
+                       uint64_t net_seq_idx;
+               } LTTNG_PACKED sent_streams;
        } u;
 } LTTNG_PACKED;
 
@@ -418,11 +454,11 @@ struct lttcomm_consumer_msg {
  * Status message returned to the sessiond after a received command.
  */
 struct lttcomm_consumer_status_msg {
-       enum lttng_error_code ret_code;
+       enum lttcomm_return_code ret_code;
 } LTTNG_PACKED;
 
 struct lttcomm_consumer_status_channel {
-       enum lttng_error_code ret_code;
+       enum lttcomm_return_code ret_code;
        uint64_t key;
        unsigned int stream_count;
 } LTTNG_PACKED;
This page took 0.028031 seconds and 5 git commands to generate.