Fix: implicit conversion of enum types in consumer
[lttng-tools.git] / src / common / sessiond-comm / sessiond-comm.h
index aeca78e50b9d2b3efb998028ab8e49225d0e4ecc..736d97809de8f25220647a83dfc1c3032e0ac89b 100644 (file)
@@ -87,6 +87,7 @@ enum lttcomm_sessiond_command {
        LTTNG_SNAPSHOT_DEL_OUTPUT           = 26,
        LTTNG_SNAPSHOT_LIST_OUTPUT          = 27,
        LTTNG_SNAPSHOT_RECORD               = 28,
+       LTTNG_CREATE_SESSION_SNAPSHOT       = 29,
 };
 
 enum lttcomm_relayd_command {
@@ -107,6 +108,7 @@ enum lttcomm_relayd_command {
  * 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 */
@@ -124,6 +126,8 @@ enum lttcomm_return_code {
        LTTCOMM_CONSUMERD_ENOMEM,                   /* Consumer is out of memory */
        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 */
@@ -155,7 +159,8 @@ enum lttcomm_metadata_command {
  * per PID registry indexed by session id ignoring the other values.
  */
 struct lttcomm_metadata_request_msg {
-       unsigned int session_id; /* Tracing session id */
+       uint64_t session_id; /* Tracing session id */
+       uint64_t session_id_per_pid; /* Tracing session id for per-pid */
        uint32_t bits_per_long; /* Consumer ABI */
        uint32_t uid;
        uint64_t key; /* Metadata channel key. */
@@ -319,11 +324,15 @@ struct lttcomm_consumer_msg {
                        int type; /* Per cpu or metadata. */
                        uint64_t tracefile_size; /* bytes */
                        uint32_t tracefile_count; /* number of tracefiles */
+                       /* If the channel's streams have to be monitored or not. */
+                       uint32_t monitor;
                } LTTNG_PACKED channel; /* Only used by Kernel. */
                struct {
                        uint64_t stream_key;
                        uint64_t channel_key;
                        int32_t cpu;    /* On which CPU this stream is assigned. */
+                       /* Tells the consumer if the stream should be or not monitored. */
+                       uint32_t no_monitor;
                } LTTNG_PACKED stream;  /* Only used by Kernel. */
                struct {
                        uint64_t net_index;
@@ -358,6 +367,16 @@ struct lttcomm_consumer_msg {
                        uint32_t chan_id;                       /* Channel ID on the tracer side. */
                        uint64_t tracefile_size;        /* bytes */
                        uint32_t tracefile_count;       /* number of tracefiles */
+                       uint64_t session_id_per_pid;    /* Per-pid session ID. */
+                       /* Tells the consumer if the stream should be or not monitored. */
+                       uint32_t monitor;
+                       /*
+                        * For UST per UID buffers, this is the application UID of the
+                        * channel.  This can be different from the user UID requesting the
+                        * channel creation and used for the rights on the stream file
+                        * because the application can be in the tracing for instance.
+                        */
+                       uint32_t ust_app_uid;
                } LTTNG_PACKED ask_channel;
                struct {
                        uint64_t key;
@@ -379,6 +398,15 @@ struct lttcomm_consumer_msg {
                struct {
                        uint64_t key;   /* Channel key. */
                } LTTNG_PACKED flush_channel;
+               struct {
+                       char pathname[PATH_MAX];
+                       /* Indicate if the snapshot goes on the relayd or locally. */
+                       uint32_t use_relayd;
+                       uint32_t metadata;              /* This a metadata snapshot. */
+                       uint64_t relayd_id;             /* Relayd id if apply. */
+                       uint64_t key;
+                       uint64_t max_stream_size;
+               } LTTNG_PACKED snapshot_channel;
        } u;
 } LTTNG_PACKED;
 
@@ -386,11 +414,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;
@@ -455,4 +483,11 @@ extern void lttcomm_copy_sock(struct lttcomm_sock *dst,
 extern struct lttcomm_relayd_sock *lttcomm_alloc_relayd_sock(
                struct lttng_uri *uri, uint32_t major, uint32_t minor);
 
+extern int lttcomm_setsockopt_rcv_timeout(int sock, unsigned int msec);
+extern int lttcomm_setsockopt_snd_timeout(int sock, unsigned int msec);
+
+extern void lttcomm_init(void);
+/* Get network timeout, in milliseconds */
+extern unsigned long lttcomm_get_network_timeout(void);
+
 #endif /* _LTTNG_SESSIOND_COMM_H */
This page took 0.025382 seconds and 4 git commands to generate.