X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fsessiond-comm%2Fsessiond-comm.h;h=c52a6caa0575272788797786b373b85ba286bce9;hp=5980ddfcaccb0ea47e6854723262f7e4338e8fbd;hb=783a3b9aa609d6805e1463655d25c7ae176c4859;hpb=1624d5b7ba86633d36f3a5c86ea1df5d308c4360 diff --git a/src/common/sessiond-comm/sessiond-comm.h b/src/common/sessiond-comm/sessiond-comm.h index 5980ddfca..c52a6caa0 100644 --- a/src/common/sessiond-comm/sessiond-comm.h +++ b/src/common/sessiond-comm/sessiond-comm.h @@ -28,6 +28,7 @@ #define _GNU_SOURCE #include #include +#include #include #include #include @@ -82,6 +83,11 @@ enum lttcomm_sessiond_command { LTTNG_ENABLE_EVENT_WITH_FILTER = 22, LTTNG_HEALTH_CHECK = 23, LTTNG_DATA_PENDING = 24, + LTTNG_SNAPSHOT_ADD_OUTPUT = 25, + LTTNG_SNAPSHOT_DEL_OUTPUT = 26, + LTTNG_SNAPSHOT_LIST_OUTPUT = 27, + LTTNG_SNAPSHOT_RECORD = 28, + LTTNG_CREATE_SESSION_SNAPSHOT = 29, }; enum lttcomm_relayd_command { @@ -119,6 +125,7 @@ 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 */ /* MUST be last element */ LTTCOMM_NR, /* Last element */ @@ -150,7 +157,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. */ @@ -171,6 +179,16 @@ struct lttcomm_sock { const struct lttcomm_proto_ops *ops; } LTTNG_PACKED; +/* + * Relayd sock. Adds the protocol version to use for the communications with + * the relayd. + */ +struct lttcomm_relayd_sock { + struct lttcomm_sock sock; + uint32_t major; + uint32_t minor; +} LTTNG_PACKED; + struct lttcomm_net_family { int family; int (*create) (struct lttcomm_sock *sock, int type, int proto); @@ -230,6 +248,13 @@ struct lttcomm_session_msg { /* Number of lttng_uri following */ uint32_t size; } LTTNG_PACKED uri; + struct { + struct lttng_snapshot_output output; + } LTTNG_PACKED snapshot_output; + struct { + uint32_t wait; + struct lttng_snapshot_output output; + } LTTNG_PACKED snapshot_record; } u; } LTTNG_PACKED; @@ -261,6 +286,10 @@ struct lttcomm_lttng_msg { char payload[]; } LTTNG_PACKED; +struct lttcomm_lttng_output_id { + uint32_t id; +} LTTNG_PACKED; + struct lttcomm_health_msg { uint32_t component; uint32_t cmd; @@ -293,17 +322,21 @@ 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; enum lttng_stream_type type; /* Open socket to the relayd */ - struct lttcomm_sock sock; + struct lttcomm_relayd_sock sock; /* Tracing session id associated to the relayd. */ uint64_t session_id; } LTTNG_PACKED relayd_sock; @@ -328,10 +361,13 @@ struct lttcomm_consumer_msg { uint32_t gid; /* Group ID ot the session */ uint64_t relayd_id; /* Relayd id if apply. */ uint64_t key; /* Unique channel key. */ - unsigned char uuid[UUID_STR_LEN]; /* uuid for ust tracer. */ + unsigned char uuid[UUID_LEN]; /* uuid for ust tracer. */ 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; } LTTNG_PACKED ask_channel; struct { uint64_t key; @@ -353,6 +389,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; @@ -425,4 +470,15 @@ extern struct lttcomm_sock *lttcomm_alloc_copy_sock(struct lttcomm_sock *src); extern void lttcomm_copy_sock(struct lttcomm_sock *dst, struct lttcomm_sock *src); +/* Relayd socket object. */ +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 */