X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fcommon%2Fsessiond-comm%2Fsessiond-comm.h;h=e65d358ada81c3bc0d286fe532fbda95273e8e47;hb=refs%2Fheads%2Fsow-2020-0002-rev2;hp=fd1ceae117c279210071326ab3544ebe58ad2253;hpb=159b042f34366d0fde5dcd73b4231c558922a664;p=lttng-tools.git diff --git a/src/common/sessiond-comm/sessiond-comm.h b/src/common/sessiond-comm/sessiond-comm.h index fd1ceae11..e65d358ad 100644 --- a/src/common/sessiond-comm/sessiond-comm.h +++ b/src/common/sessiond-comm/sessiond-comm.h @@ -41,7 +41,12 @@ #define LTTNG_SESSIOND_COMM_MAX_LISTEN 64 /* Maximum number of FDs that can be sent over a Unix socket */ -#define LTTCOMM_MAX_SEND_FDS 4 +#if defined(__linux__) +/* Based on the kernel's SCM_MAX_FD which is 253 since 2.6.38 (255 before) */ +#define LTTCOMM_MAX_SEND_FDS 253 +#else +#define LTTCOMM_MAX_SEND_FDS 16 +#endif /* * Get the error code index from 0 since LTTCOMM_OK start at 1000 @@ -101,8 +106,117 @@ enum lttcomm_sessiond_command { LTTNG_SESSION_LIST_ROTATION_SCHEDULES = 48, LTTNG_CREATE_SESSION_EXT = 49, LTTNG_CLEAR_SESSION = 50, + LTTNG_LIST_TRIGGERS = 51, + LTTNG_ADD_MAP = 52, + LTTNG_ENABLE_MAP = 53, + LTTNG_DISABLE_MAP = 54, + LTTNG_LIST_MAPS = 55, + LTTNG_LIST_MAP_VALUES = 56, }; +static inline +const char *lttcomm_sessiond_command_str(enum lttcomm_sessiond_command cmd) +{ + switch (cmd) { + case LTTNG_ADD_CONTEXT: + return "LTTNG_ADD_CONTEXT"; + case LTTNG_DISABLE_CHANNEL: + return "LTTNG_DISABLE_CHANNEL"; + case LTTNG_DISABLE_EVENT: + return "LTTNG_DISABLE_EVENT"; + case LTTNG_LIST_SYSCALLS: + return "LTTNG_LIST_SYSCALLS"; + case LTTNG_ENABLE_CHANNEL: + return "LTTNG_ENABLE_CHANNEL"; + case LTTNG_ENABLE_EVENT: + return "LTTNG_ENABLE_EVENT"; + case LTTNG_DESTROY_SESSION: + return "LTTNG_DESTROY_SESSION"; + case LTTNG_LIST_CHANNELS: + return "LTTNG_LIST_CHANNELS"; + case LTTNG_LIST_DOMAINS: + return "LTTNG_LIST_DOMAINS"; + case LTTNG_LIST_EVENTS: + return "LTTNG_LIST_EVENTS"; + case LTTNG_LIST_SESSIONS: + return "LTTNG_LIST_SESSIONS"; + case LTTNG_LIST_TRACEPOINTS: + return "LTTNG_LIST_TRACEPOINTS"; + case LTTNG_REGISTER_CONSUMER: + return "LTTNG_REGISTER_CONSUMER"; + case LTTNG_START_TRACE: + return "LTTNG_START_TRACE"; + case LTTNG_STOP_TRACE: + return "LTTNG_STOP_TRACE"; + case LTTNG_LIST_TRACEPOINT_FIELDS: + return "LTTNG_LIST_TRACEPOINT_FIELDS"; + case LTTNG_DISABLE_CONSUMER: + return "LTTNG_DISABLE_CONSUMER"; + case LTTNG_ENABLE_CONSUMER: + return "LTTNG_ENABLE_CONSUMER"; + case LTTNG_SET_CONSUMER_URI: + return "LTTNG_SET_CONSUMER_URI"; + case LTTNG_DATA_PENDING: + return "LTTNG_DATA_PENDING"; + case LTTNG_SNAPSHOT_ADD_OUTPUT: + return "LTTNG_SNAPSHOT_ADD_OUTPUT"; + case LTTNG_SNAPSHOT_DEL_OUTPUT: + return "LTTNG_SNAPSHOT_DEL_OUTPUT"; + case LTTNG_SNAPSHOT_LIST_OUTPUT: + return "LTTNG_SNAPSHOT_LIST_OUTPUT"; + case LTTNG_SNAPSHOT_RECORD: + return "LTTNG_SNAPSHOT_RECORD"; + case LTTNG_SAVE_SESSION: + return "LTTNG_SAVE_SESSION"; + case LTTNG_PROCESS_ATTR_TRACKER_ADD_INCLUDE_VALUE: + return "LTTNG_PROCESS_ATTR_TRACKER_ADD_INCLUDE_VALUE"; + case LTTNG_PROCESS_ATTR_TRACKER_REMOVE_INCLUDE_VALUE: + return "LTTNG_PROCESS_ATTR_TRACKER_REMOVE_INCLUDE_VALUE"; + case LTTNG_PROCESS_ATTR_TRACKER_GET_POLICY: + return "LTTNG_PROCESS_ATTR_TRACKER_GET_POLICY"; + case LTTNG_PROCESS_ATTR_TRACKER_SET_POLICY: + return "LTTNG_PROCESS_ATTR_TRACKER_SET_POLICY"; + case LTTNG_PROCESS_ATTR_TRACKER_GET_INCLUSION_SET: + return "LTTNG_PROCESS_ATTR_TRACKER_GET_INCLUSION_SET"; + case LTTNG_SET_SESSION_SHM_PATH: + return "LTTNG_SET_SESSION_SHM_PATH"; + case LTTNG_REGENERATE_METADATA: + return "LTTNG_REGENERATE_METADATA"; + case LTTNG_REGENERATE_STATEDUMP: + return "LTTNG_REGENERATE_STATEDUMP"; + case LTTNG_REGISTER_TRIGGER: + return "LTTNG_REGISTER_TRIGGER"; + case LTTNG_UNREGISTER_TRIGGER: + return "LTTNG_UNREGISTER_TRIGGER"; + case LTTNG_ROTATE_SESSION: + return "LTTNG_ROTATE_SESSION"; + case LTTNG_ROTATION_GET_INFO: + return "LTTNG_ROTATION_GET_INFO"; + case LTTNG_ROTATION_SET_SCHEDULE: + return "LTTNG_ROTATION_SET_SCHEDULE"; + case LTTNG_SESSION_LIST_ROTATION_SCHEDULES: + return "LTTNG_SESSION_LIST_ROTATION_SCHEDULES"; + case LTTNG_CREATE_SESSION_EXT: + return "LTTNG_CREATE_SESSION_EXT"; + case LTTNG_CLEAR_SESSION: + return "LTTNG_CLEAR_SESSION"; + case LTTNG_LIST_TRIGGERS: + return "LTTNG_LIST_TRIGGERS"; + case LTTNG_ADD_MAP: + return "LTTNG_ADD_MAP"; + case LTTNG_ENABLE_MAP: + return "LTTNG_ENABLE_MAP"; + case LTTNG_DISABLE_MAP: + return "LTTNG_DISABLE_MAP"; + case LTTNG_LIST_MAPS: + return "LTTNG_LIST_MAPS"; + case LTTNG_LIST_MAP_VALUES: + return "LTTNG_LIST_MAP_VALUES"; + default: + abort(); + } +} + enum lttcomm_relayd_command { RELAYD_ADD_STREAM = 1, RELAYD_CREATE_SESSION = 2, @@ -179,6 +293,7 @@ enum lttcomm_return_code { LTTCOMM_CONSUMERD_TRACE_CHUNK_EXISTS_REMOTE,/* Trace chunk exists on relay daemon. */ LTTCOMM_CONSUMERD_UNKNOWN_TRACE_CHUNK, /* Unknown trace chunk. */ LTTCOMM_CONSUMERD_RELAYD_CLEAR_DISALLOWED, /* Relayd does not accept clear command. */ + LTTCOMM_CONSUMERD_UNKNOWN_ERROR, /* Unknown error. */ /* MUST be last element */ LTTCOMM_NR, /* Last element */ @@ -277,7 +392,7 @@ struct lttcomm_session_msg { /* Event data */ struct { char channel_name[LTTNG_SYMBOL_NAME_LEN]; - struct lttng_event event LTTNG_PACKED; + struct lttng_event event; /* Length of following filter expression. */ uint32_t expression_len; /* Length of following bytecode for filter. */ @@ -296,7 +411,7 @@ struct lttcomm_session_msg { } LTTNG_PACKED enable; struct { char channel_name[LTTNG_SYMBOL_NAME_LEN]; - struct lttng_event event LTTNG_PACKED; + struct lttng_event event; /* Length of following filter expression. */ uint32_t expression_len; /* Length of following bytecode for filter. */ @@ -310,14 +425,25 @@ struct lttcomm_session_msg { } LTTNG_PACKED disable; /* Create channel */ struct { - struct lttng_channel chan LTTNG_PACKED; - /* struct lttng_channel_extended is already packed. */ + struct lttng_channel chan; struct lttng_channel_extended extended; } LTTNG_PACKED channel; + /* Add map */ + struct { + uint32_t length; + } LTTNG_PACKED add_map; + /* Enable map */ + struct { + char map_name[LTTNG_SYMBOL_NAME_LEN]; + } LTTNG_PACKED enable_map; + /* Disable map */ + struct { + char map_name[LTTNG_SYMBOL_NAME_LEN]; + } LTTNG_PACKED disable_map; /* Context */ struct { char channel_name[LTTNG_SYMBOL_NAME_LEN]; - struct lttng_event_context ctx LTTNG_PACKED; + struct lttng_event_context ctx; uint32_t provider_name_len; uint32_t context_name_len; } LTTNG_PACKED context; @@ -336,18 +462,18 @@ struct lttcomm_session_msg { uint32_t size; } LTTNG_PACKED uri; struct { - struct lttng_snapshot_output output LTTNG_PACKED; + struct lttng_snapshot_output output; } LTTNG_PACKED snapshot_output; struct { uint32_t wait; - struct lttng_snapshot_output output LTTNG_PACKED; + struct lttng_snapshot_output output; } 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 */ + struct lttng_save_session_attr attr; } LTTNG_PACKED save_session; struct { char shm_path[PATH_MAX]; @@ -409,7 +535,13 @@ struct lttcomm_session_msg { uint64_t session_descriptor_size; /* An lttng_session_descriptor follows. */ } LTTNG_PACKED create_session; + struct { + uint32_t map_length; + uint32_t query_length; + } LTTNG_PACKED list_map_values; } u; + /* Count of fds sent. */ + uint32_t fd_count; } LTTNG_PACKED; #define LTTNG_FILTER_MAX_LEN 65536 @@ -421,7 +553,7 @@ struct lttcomm_session_msg { * starts at reloc_table_offset. */ #define LTTNG_FILTER_PADDING 32 -struct lttng_filter_bytecode { +struct lttng_bytecode { uint32_t len; /* len of data */ uint32_t reloc_table_offset; uint64_t seqnum; @@ -501,6 +633,7 @@ struct lttcomm_lttng_msg { uint32_t pid; /* pid_t */ uint32_t cmd_header_size; uint32_t data_size; + uint32_t fd_count; } LTTNG_PACKED; struct lttcomm_lttng_output_id { @@ -534,6 +667,8 @@ struct lttcomm_consumer_msg { uint32_t monitor; /* timer to check the streams usage in live mode (usec). */ unsigned int live_timer_interval; + /* is part of a live session */ + uint8_t is_live; /* timer to sample a channel's positions (usec). */ unsigned int monitor_timer_interval; } LTTNG_PACKED channel; /* Only used by Kernel. */ @@ -567,6 +702,7 @@ struct lttcomm_consumer_msg { uint32_t switch_timer_interval; /* usec */ uint32_t read_timer_interval; /* usec */ unsigned int live_timer_interval; /* usec */ + uint8_t is_live; /* is part of a live session */ uint32_t monitor_timer_interval; /* usec */ int32_t output; /* splice, mmap */ int32_t type; /* metadata or per_cpu */ @@ -702,6 +838,9 @@ struct lttcomm_consumer_msg { struct { uint64_t key; } LTTNG_PACKED clear_channel; + struct { + uint64_t key; + } LTTNG_PACKED open_channel_packets; } u; } LTTNG_PACKED;