X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fsessiond-comm%2Fsessiond-comm.h;h=0d9f4a699479568db957669a2e9814d50a56e323;hp=bbc7ce5a8e403156e1bedc38ba574ffdccc390ea;hb=795a978d0fddb43019e4031932cf98840c54f504;hpb=00c76ceaeb0074e47167be56c0920284e6a0360e diff --git a/src/common/sessiond-comm/sessiond-comm.h b/src/common/sessiond-comm/sessiond-comm.h index bbc7ce5a8..0d9f4a699 100644 --- a/src/common/sessiond-comm/sessiond-comm.h +++ b/src/common/sessiond-comm/sessiond-comm.h @@ -6,12 +6,12 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 2 only, * as published by the Free Software Foundation. - * + * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. - * + * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. @@ -25,7 +25,6 @@ #ifndef _LTTNG_SESSIOND_COMM_H #define _LTTNG_SESSIOND_COMM_H -#define _GNU_SOURCE #include #include #include @@ -60,10 +59,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, @@ -91,6 +90,10 @@ enum lttcomm_sessiond_command { 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 { @@ -138,6 +141,7 @@ enum lttcomm_return_code { 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 */ @@ -214,8 +218,8 @@ struct lttcomm_proto_ops { int (*listen) (struct lttcomm_sock *sock, int backlog); ssize_t (*recvmsg) (struct lttcomm_sock *sock, void *buf, size_t len, int flags); - ssize_t (*sendmsg) (struct lttcomm_sock *sock, void *buf, size_t len, - int flags); + ssize_t (*sendmsg) (struct lttcomm_sock *sock, const void *buf, + size_t len, int flags); }; /* @@ -226,14 +230,10 @@ 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. */ @@ -248,14 +248,30 @@ struct lttcomm_session_msg { * - 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; + uint32_t provider_name_len; + uint32_t context_name_len; } LTTNG_PACKED context; /* Use by register_consumer */ struct { @@ -272,19 +288,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 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; @@ -313,9 +335,12 @@ struct lttng_filter_bytecode { struct lttng_event_exclusion { uint32_t count; char padding[LTTNG_EVENT_EXCLUSION_PADDING]; - char names[LTTNG_SYMBOL_NAME_LEN][0]; + char names[0][LTTNG_SYMBOL_NAME_LEN]; } LTTNG_PACKED; +#define LTTNG_EVENT_EXCLUSION_NAME_AT(_exclusion, _i) \ + (&(_exclusion)->names[_i][0]) + /* * Data structure for the response from sessiond to the lttng client. */ @@ -323,6 +348,7 @@ struct lttcomm_lttng_msg { uint32_t cmd_type; /* enum lttcomm_sessiond_command */ uint32_t ret_code; /* enum lttcomm_return_code */ uint32_t pid; /* pid_t */ + uint32_t cmd_header_size; uint32_t data_size; /* Contains: trace_name + data */ char payload[]; @@ -413,6 +439,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; @@ -441,7 +469,7 @@ 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;