X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fcommon%2Fsessiond-comm%2Fsessiond-comm.h;h=cf6262e6aabe6e1bd9e5b932f943614039b71ea7;hb=ecc48a904cc7c419fd1400afaa9ccb93be490cdd;hp=aeca78e50b9d2b3efb998028ab8e49225d0e4ecc;hpb=da3c9ec137aaec74635ca1f5584040c20b1d3d7b;p=lttng-tools.git diff --git a/src/common/sessiond-comm/sessiond-comm.h b/src/common/sessiond-comm/sessiond-comm.h index aeca78e50..cf6262e6a 100644 --- a/src/common/sessiond-comm/sessiond-comm.h +++ b/src/common/sessiond-comm/sessiond-comm.h @@ -87,6 +87,8 @@ enum lttcomm_sessiond_command { LTTNG_SNAPSHOT_DEL_OUTPUT = 26, LTTNG_SNAPSHOT_LIST_OUTPUT = 27, LTTNG_SNAPSHOT_RECORD = 28, + LTTNG_CREATE_SESSION_SNAPSHOT = 29, + LTTNG_CREATE_SESSION_LIVE = 30, }; enum lttcomm_relayd_command { @@ -124,6 +126,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 */ @@ -155,7 +158,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. */ @@ -252,6 +256,10 @@ struct lttcomm_session_msg { uint32_t wait; struct lttng_snapshot_output output; } LTTNG_PACKED snapshot_record; + struct { + uint32_t nb_uri; + unsigned int timer_interval; /* usec */ + } LTTNG_PACKED session_live; } u; } LTTNG_PACKED; @@ -319,11 +327,17 @@ 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; + /* timer to check the streams usage in live mode (usec). */ + unsigned int live_timer_interval; } 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; @@ -345,6 +359,7 @@ struct lttcomm_consumer_msg { int32_t overwrite; /* 1: overwrite, 0: discard */ uint32_t switch_timer_interval; /* usec */ uint32_t read_timer_interval; /* usec */ + unsigned int live_timer_interval; /* usec */ int32_t output; /* splice, mmap */ int32_t type; /* metadata or per_cpu */ uint64_t session_id; /* Tracing session id */ @@ -358,6 +373,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 +404,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; @@ -455,4 +489,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 */