X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fsessiond-comm%2Fsessiond-comm.h;h=1e51ae12352af6334c9293c013e8064027e9fe04;hp=229b91e5901cae11e83a4675f48c047e8e07c32f;hb=8684af09caa3ca7014048753361c23d00f8e3be6;hpb=0c89d7959f4af7a2b39e925b2e8dc3a8954ccfa5 diff --git a/src/common/sessiond-comm/sessiond-comm.h b/src/common/sessiond-comm/sessiond-comm.h index 229b91e59..1e51ae123 100644 --- a/src/common/sessiond-comm/sessiond-comm.h +++ b/src/common/sessiond-comm/sessiond-comm.h @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -59,10 +60,10 @@ enum lttcomm_sessiond_command { LTTNG_CALIBRATE = 1, LTTNG_DISABLE_CHANNEL = 2, LTTNG_DISABLE_EVENT = 3, - LTTNG_DISABLE_ALL_EVENT = 4, + LTTNG_LIST_SYSCALLS = 4, LTTNG_ENABLE_CHANNEL = 5, LTTNG_ENABLE_EVENT = 6, - LTTNG_ENABLE_ALL_EVENT = 7, + /* 7 */ /* Session daemon command */ LTTNG_CREATE_SESSION = 8, LTTNG_DESTROY_SESSION = 9, @@ -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,11 @@ enum lttcomm_sessiond_command { LTTNG_SNAPSHOT_RECORD = 28, LTTNG_CREATE_SESSION_SNAPSHOT = 29, LTTNG_CREATE_SESSION_LIVE = 30, + LTTNG_SAVE_SESSION = 31, + LTTNG_TRACK_PID = 32, + LTTNG_UNTRACK_PID = 33, + LTTNG_LIST_TRACKER_PIDS = 34, + LTTNG_SET_SESSION_SHM_PATH = 40, }; enum lttcomm_relayd_command { @@ -106,14 +112,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 +141,8 @@ 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. */ + LTTCOMM_CONSUMERD_CHAN_NOT_FOUND, /* Channel not found. */ /* MUST be last element */ LTTCOMM_NR, /* Last element */ @@ -220,25 +231,46 @@ struct lttcomm_session_msg { struct lttng_session session; struct lttng_domain domain; union { - struct { - char channel_name[LTTNG_SYMBOL_NAME_LEN]; - char name[NAME_MAX]; - } LTTNG_PACKED disable; /* Event data */ struct { char channel_name[LTTNG_SYMBOL_NAME_LEN]; - struct lttng_event event; + struct lttng_event event LTTNG_PACKED; + /* 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; + struct { + char channel_name[LTTNG_SYMBOL_NAME_LEN]; + struct lttng_event event LTTNG_PACKED; + /* Length of following filter expression. */ + uint32_t expression_len; + /* Length of following bytecode for filter. */ + uint32_t bytecode_len; + /* + * After this structure, the following variable-length + * items are transmitted: + * - unsigned char filter_expression[expression_len] + * - unsigned char filter_bytecode[bytecode_len] + */ + } LTTNG_PACKED disable; /* Create channel */ struct { - struct lttng_channel chan; + struct lttng_channel chan LTTNG_PACKED; } LTTNG_PACKED channel; /* Context */ struct { char channel_name[LTTNG_SYMBOL_NAME_LEN]; - struct lttng_event_context ctx; + struct lttng_event_context ctx LTTNG_PACKED; } LTTNG_PACKED context; /* Use by register_consumer */ struct { @@ -255,16 +287,25 @@ struct lttcomm_session_msg { uint32_t size; } LTTNG_PACKED uri; struct { - struct lttng_snapshot_output output; + struct lttng_snapshot_output output LTTNG_PACKED; } LTTNG_PACKED snapshot_output; struct { uint32_t wait; - struct lttng_snapshot_output output; + struct lttng_snapshot_output output LTTNG_PACKED; } LTTNG_PACKED snapshot_record; struct { uint32_t nb_uri; unsigned int timer_interval; /* usec */ } LTTNG_PACKED session_live; + struct { + struct lttng_save_session_attr attr; /* struct already packed */ + } LTTNG_PACKED save_session; + struct { + char shm_path[PATH_MAX]; + } LTTNG_PACKED set_shm_path; + struct { + uint32_t pid; + } LTTNG_PACKED pid_tracker; } u; } LTTNG_PACKED; @@ -284,6 +325,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. */ @@ -381,6 +434,8 @@ struct lttcomm_consumer_msg { * because the application can be in the tracing for instance. */ uint32_t ust_app_uid; + char root_shm_path[PATH_MAX]; + char shm_path[PATH_MAX]; } LTTNG_PACKED ask_channel; struct { uint64_t key; @@ -409,8 +464,12 @@ struct lttcomm_consumer_msg { uint32_t metadata; /* This a metadata snapshot. */ uint64_t relayd_id; /* Relayd id if apply. */ uint64_t key; - uint64_t max_stream_size; + uint64_t nb_packets_per_stream; } LTTNG_PACKED snapshot_channel; + struct { + uint64_t channel_key; + uint64_t net_seq_idx; + } LTTNG_PACKED sent_streams; } u; } LTTNG_PACKED; @@ -418,11 +477,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;