X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fsessiond-comm%2Fsessiond-comm.hpp;h=c8ac0cf41e60318b4634bf2ee4f25b1637ae6680;hb=HEAD;hp=ae3111855468f19a1c5551fd2f802e026694a88a;hpb=c9e313bc594f40a86eed237dce222c0fc99c957f;p=lttng-tools.git diff --git a/src/common/sessiond-comm/sessiond-comm.hpp b/src/common/sessiond-comm/sessiond-comm.hpp index ae3111855..c8ac0cf41 100644 --- a/src/common/sessiond-comm/sessiond-comm.hpp +++ b/src/common/sessiond-comm/sessiond-comm.hpp @@ -14,229 +14,228 @@ #ifndef _LTTNG_SESSIOND_COMM_H #define _LTTNG_SESSIOND_COMM_H -#include -#include -#include -#include -#include -#include -#include +#include "inet.hpp" +#include "inet6.hpp" + #include -#include +#include #include -#include #include #include +#include +#include +#include + +#include +#include +#include +#include +#include +#include #include +#include #include #include #include -#include "inet.hpp" -#include "inet6.hpp" -#include - /* Queue size of listen(2) */ #define LTTNG_SESSIOND_COMM_MAX_LISTEN 64 /* Maximum number of FDs that can be sent over a Unix socket */ #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 +#define LTTCOMM_MAX_SEND_FDS 253 #else -#define LTTCOMM_MAX_SEND_FDS 16 +#define LTTCOMM_MAX_SEND_FDS 16 #endif enum lttcomm_sessiond_command { - /* Tracer command */ - LTTNG_ADD_CONTEXT = 0, - /* LTTNG_CALIBRATE used to be here */ - LTTNG_DISABLE_CHANNEL = 2, - LTTNG_DISABLE_EVENT = 3, - LTTNG_LIST_SYSCALLS = 4, - LTTNG_ENABLE_CHANNEL = 5, - LTTNG_ENABLE_EVENT = 6, - /* 7 */ - /* Session daemon command */ - /* 8 */ - LTTNG_DESTROY_SESSION = 9, - LTTNG_LIST_CHANNELS = 10, - LTTNG_LIST_DOMAINS = 11, - LTTNG_LIST_EVENTS = 12, - LTTNG_LIST_SESSIONS = 13, - LTTNG_LIST_TRACEPOINTS = 14, - LTTNG_REGISTER_CONSUMER = 15, - LTTNG_START_TRACE = 16, - LTTNG_STOP_TRACE = 17, - LTTNG_LIST_TRACEPOINT_FIELDS = 18, - - /* Consumer */ - LTTNG_DISABLE_CONSUMER = 19, - LTTNG_ENABLE_CONSUMER = 20, - LTTNG_SET_CONSUMER_URI = 21, - /* 22 */ - /* 23 */ - LTTNG_DATA_PENDING = 24, - LTTNG_SNAPSHOT_ADD_OUTPUT = 25, - LTTNG_SNAPSHOT_DEL_OUTPUT = 26, - LTTNG_SNAPSHOT_LIST_OUTPUT = 27, - LTTNG_SNAPSHOT_RECORD = 28, - /* 29 */ - /* 30 */ - LTTNG_SAVE_SESSION = 31, - LTTNG_PROCESS_ATTR_TRACKER_ADD_INCLUDE_VALUE = 32, - LTTNG_PROCESS_ATTR_TRACKER_REMOVE_INCLUDE_VALUE = 33, - LTTNG_PROCESS_ATTR_TRACKER_GET_POLICY = 34, - LTTNG_PROCESS_ATTR_TRACKER_SET_POLICY = 35, - LTTNG_PROCESS_ATTR_TRACKER_GET_INCLUSION_SET = 36, - LTTNG_SET_SESSION_SHM_PATH = 40, - LTTNG_REGENERATE_METADATA = 41, - LTTNG_REGENERATE_STATEDUMP = 42, - LTTNG_REGISTER_TRIGGER = 43, - LTTNG_UNREGISTER_TRIGGER = 44, - LTTNG_ROTATE_SESSION = 45, - LTTNG_ROTATION_GET_INFO = 46, - LTTNG_ROTATION_SET_SCHEDULE = 47, - LTTNG_SESSION_LIST_ROTATION_SCHEDULES = 48, - LTTNG_CREATE_SESSION_EXT = 49, - LTTNG_CLEAR_SESSION = 50, - LTTNG_LIST_TRIGGERS = 51, - LTTNG_EXECUTE_ERROR_QUERY = 52, + LTTCOMM_SESSIOND_COMMAND_MIN, + LTTCOMM_SESSIOND_COMMAND_ADD_CONTEXT, + LTTCOMM_SESSIOND_COMMAND_DISABLE_CHANNEL, + LTTCOMM_SESSIOND_COMMAND_DISABLE_EVENT, + LTTCOMM_SESSIOND_COMMAND_LIST_SYSCALLS, + LTTCOMM_SESSIOND_COMMAND_ENABLE_CHANNEL, + LTTCOMM_SESSIOND_COMMAND_ENABLE_EVENT, + LTTCOMM_SESSIOND_COMMAND_DESTROY_SESSION, + LTTCOMM_SESSIOND_COMMAND_LIST_CHANNELS, + LTTCOMM_SESSIOND_COMMAND_LIST_DOMAINS, + LTTCOMM_SESSIOND_COMMAND_LIST_EVENTS, + LTTCOMM_SESSIOND_COMMAND_LIST_SESSIONS, + LTTCOMM_SESSIOND_COMMAND_LIST_TRACEPOINTS, + LTTCOMM_SESSIOND_COMMAND_REGISTER_CONSUMER, + LTTCOMM_SESSIOND_COMMAND_START_TRACE, + LTTCOMM_SESSIOND_COMMAND_STOP_TRACE, + LTTCOMM_SESSIOND_COMMAND_LIST_TRACEPOINT_FIELDS, + LTTCOMM_SESSIOND_COMMAND_DISABLE_CONSUMER, + LTTCOMM_SESSIOND_COMMAND_ENABLE_CONSUMER, + LTTCOMM_SESSIOND_COMMAND_SET_CONSUMER_URI, + LTTCOMM_SESSIOND_COMMAND_DATA_PENDING, + LTTCOMM_SESSIOND_COMMAND_SNAPSHOT_ADD_OUTPUT, + LTTCOMM_SESSIOND_COMMAND_SNAPSHOT_DEL_OUTPUT, + LTTCOMM_SESSIOND_COMMAND_SNAPSHOT_LIST_OUTPUT, + LTTCOMM_SESSIOND_COMMAND_SNAPSHOT_RECORD, + LTTCOMM_SESSIOND_COMMAND_SAVE_SESSION, + LTTCOMM_SESSIOND_COMMAND_PROCESS_ATTR_TRACKER_ADD_INCLUDE_VALUE, + LTTCOMM_SESSIOND_COMMAND_PROCESS_ATTR_TRACKER_REMOVE_INCLUDE_VALUE, + LTTCOMM_SESSIOND_COMMAND_PROCESS_ATTR_TRACKER_GET_POLICY, + LTTCOMM_SESSIOND_COMMAND_PROCESS_ATTR_TRACKER_SET_POLICY, + LTTCOMM_SESSIOND_COMMAND_PROCESS_ATTR_TRACKER_GET_INCLUSION_SET, + LTTCOMM_SESSIOND_COMMAND_SET_SESSION_SHM_PATH, + LTTCOMM_SESSIOND_COMMAND_REGENERATE_METADATA, + LTTCOMM_SESSIOND_COMMAND_REGENERATE_STATEDUMP, + LTTCOMM_SESSIOND_COMMAND_REGISTER_TRIGGER, + LTTCOMM_SESSIOND_COMMAND_UNREGISTER_TRIGGER, + LTTCOMM_SESSIOND_COMMAND_ROTATE_SESSION, + LTTCOMM_SESSIOND_COMMAND_ROTATION_GET_INFO, + LTTCOMM_SESSIOND_COMMAND_ROTATION_SET_SCHEDULE, + LTTCOMM_SESSIOND_COMMAND_SESSION_LIST_ROTATION_SCHEDULES, + LTTCOMM_SESSIOND_COMMAND_CREATE_SESSION_EXT, + LTTCOMM_SESSIOND_COMMAND_CLEAR_SESSION, + LTTCOMM_SESSIOND_COMMAND_LIST_TRIGGERS, + LTTCOMM_SESSIOND_COMMAND_EXECUTE_ERROR_QUERY, + LTTCOMM_SESSIOND_COMMAND_KERNEL_TRACER_STATUS, + LTTCOMM_SESSIOND_COMMAND_MAX, }; -static inline -const char *lttcomm_sessiond_command_str(enum lttcomm_sessiond_command cmd) +static inline bool lttcomm_sessiond_command_is_valid(enum lttcomm_sessiond_command cmd) +{ + return cmd > LTTCOMM_SESSIOND_COMMAND_MIN && cmd < LTTCOMM_SESSIOND_COMMAND_MAX; +} + +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_EXECUTE_ERROR_QUERY: - return "LTTNG_EXECUTE_ERROR_QUERY"; + case LTTCOMM_SESSIOND_COMMAND_ADD_CONTEXT: + return "ADD_CONTEXT"; + case LTTCOMM_SESSIOND_COMMAND_DISABLE_CHANNEL: + return "DISABLE_CHANNEL"; + case LTTCOMM_SESSIOND_COMMAND_DISABLE_EVENT: + return "DISABLE_EVENT"; + case LTTCOMM_SESSIOND_COMMAND_LIST_SYSCALLS: + return "LIST_SYSCALLS"; + case LTTCOMM_SESSIOND_COMMAND_ENABLE_CHANNEL: + return "ENABLE_CHANNEL"; + case LTTCOMM_SESSIOND_COMMAND_ENABLE_EVENT: + return "ENABLE_EVENT"; + case LTTCOMM_SESSIOND_COMMAND_DESTROY_SESSION: + return "DESTROY_SESSION"; + case LTTCOMM_SESSIOND_COMMAND_LIST_CHANNELS: + return "LIST_CHANNELS"; + case LTTCOMM_SESSIOND_COMMAND_LIST_DOMAINS: + return "LIST_DOMAINS"; + case LTTCOMM_SESSIOND_COMMAND_LIST_EVENTS: + return "LIST_EVENTS"; + case LTTCOMM_SESSIOND_COMMAND_LIST_SESSIONS: + return "LIST_SESSIONS"; + case LTTCOMM_SESSIOND_COMMAND_LIST_TRACEPOINTS: + return "LIST_TRACEPOINTS"; + case LTTCOMM_SESSIOND_COMMAND_REGISTER_CONSUMER: + return "REGISTER_CONSUMER"; + case LTTCOMM_SESSIOND_COMMAND_START_TRACE: + return "START_TRACE"; + case LTTCOMM_SESSIOND_COMMAND_STOP_TRACE: + return "STOP_TRACE"; + case LTTCOMM_SESSIOND_COMMAND_LIST_TRACEPOINT_FIELDS: + return "LIST_TRACEPOINT_FIELDS"; + case LTTCOMM_SESSIOND_COMMAND_DISABLE_CONSUMER: + return "DISABLE_CONSUMER"; + case LTTCOMM_SESSIOND_COMMAND_ENABLE_CONSUMER: + return "ENABLE_CONSUMER"; + case LTTCOMM_SESSIOND_COMMAND_SET_CONSUMER_URI: + return "SET_CONSUMER_URI"; + case LTTCOMM_SESSIOND_COMMAND_DATA_PENDING: + return "DATA_PENDING"; + case LTTCOMM_SESSIOND_COMMAND_SNAPSHOT_ADD_OUTPUT: + return "SNAPSHOT_ADD_OUTPUT"; + case LTTCOMM_SESSIOND_COMMAND_SNAPSHOT_DEL_OUTPUT: + return "SNAPSHOT_DEL_OUTPUT"; + case LTTCOMM_SESSIOND_COMMAND_SNAPSHOT_LIST_OUTPUT: + return "SNAPSHOT_LIST_OUTPUT"; + case LTTCOMM_SESSIOND_COMMAND_SNAPSHOT_RECORD: + return "SNAPSHOT_RECORD"; + case LTTCOMM_SESSIOND_COMMAND_SAVE_SESSION: + return "SAVE_SESSION"; + case LTTCOMM_SESSIOND_COMMAND_PROCESS_ATTR_TRACKER_ADD_INCLUDE_VALUE: + return "PROCESS_ATTR_TRACKER_ADD_INCLUDE_VALUE"; + case LTTCOMM_SESSIOND_COMMAND_PROCESS_ATTR_TRACKER_REMOVE_INCLUDE_VALUE: + return "PROCESS_ATTR_TRACKER_REMOVE_INCLUDE_VALUE"; + case LTTCOMM_SESSIOND_COMMAND_PROCESS_ATTR_TRACKER_GET_POLICY: + return "PROCESS_ATTR_TRACKER_GET_POLICY"; + case LTTCOMM_SESSIOND_COMMAND_PROCESS_ATTR_TRACKER_SET_POLICY: + return "PROCESS_ATTR_TRACKER_SET_POLICY"; + case LTTCOMM_SESSIOND_COMMAND_PROCESS_ATTR_TRACKER_GET_INCLUSION_SET: + return "PROCESS_ATTR_TRACKER_GET_INCLUSION_SET"; + case LTTCOMM_SESSIOND_COMMAND_SET_SESSION_SHM_PATH: + return "SET_SESSION_SHM_PATH"; + case LTTCOMM_SESSIOND_COMMAND_REGENERATE_METADATA: + return "REGENERATE_METADATA"; + case LTTCOMM_SESSIOND_COMMAND_REGENERATE_STATEDUMP: + return "REGENERATE_STATEDUMP"; + case LTTCOMM_SESSIOND_COMMAND_REGISTER_TRIGGER: + return "REGISTER_TRIGGER"; + case LTTCOMM_SESSIOND_COMMAND_UNREGISTER_TRIGGER: + return "UNREGISTER_TRIGGER"; + case LTTCOMM_SESSIOND_COMMAND_ROTATE_SESSION: + return "ROTATE_SESSION"; + case LTTCOMM_SESSIOND_COMMAND_ROTATION_GET_INFO: + return "ROTATION_GET_INFO"; + case LTTCOMM_SESSIOND_COMMAND_ROTATION_SET_SCHEDULE: + return "ROTATION_SET_SCHEDULE"; + case LTTCOMM_SESSIOND_COMMAND_SESSION_LIST_ROTATION_SCHEDULES: + return "SESSION_LIST_ROTATION_SCHEDULES"; + case LTTCOMM_SESSIOND_COMMAND_CREATE_SESSION_EXT: + return "CREATE_SESSION_EXT"; + case LTTCOMM_SESSIOND_COMMAND_CLEAR_SESSION: + return "CLEAR_SESSION"; + case LTTCOMM_SESSIOND_COMMAND_LIST_TRIGGERS: + return "LIST_TRIGGERS"; + case LTTCOMM_SESSIOND_COMMAND_EXECUTE_ERROR_QUERY: + return "EXECUTE_ERROR_QUERY"; + case LTTCOMM_SESSIOND_COMMAND_KERNEL_TRACER_STATUS: + return "KERNEL_TRACER_STATUS"; default: abort(); } } enum lttcomm_relayd_command { - RELAYD_ADD_STREAM = 1, - RELAYD_CREATE_SESSION = 2, - RELAYD_START_DATA = 3, - RELAYD_UPDATE_SYNC_INFO = 4, - RELAYD_VERSION = 5, - RELAYD_SEND_METADATA = 6, - RELAYD_CLOSE_STREAM = 7, - RELAYD_DATA_PENDING = 8, - RELAYD_QUIESCENT_CONTROL = 9, - RELAYD_BEGIN_DATA_PENDING = 10, - RELAYD_END_DATA_PENDING = 11, - RELAYD_ADD_INDEX = 12, - RELAYD_SEND_INDEX = 13, - RELAYD_CLOSE_INDEX = 14, + RELAYD_ADD_STREAM = 1, + RELAYD_CREATE_SESSION = 2, + RELAYD_START_DATA = 3, + RELAYD_UPDATE_SYNC_INFO = 4, + RELAYD_VERSION = 5, + RELAYD_SEND_METADATA = 6, + RELAYD_CLOSE_STREAM = 7, + RELAYD_DATA_PENDING = 8, + RELAYD_QUIESCENT_CONTROL = 9, + RELAYD_BEGIN_DATA_PENDING = 10, + RELAYD_END_DATA_PENDING = 11, + RELAYD_ADD_INDEX = 12, + RELAYD_SEND_INDEX = 13, + RELAYD_CLOSE_INDEX = 14, /* Live-reading commands (2.4+). */ - RELAYD_LIST_SESSIONS = 15, + RELAYD_LIST_SESSIONS = 15, /* All streams of the channel have been sent to the relayd (2.4+). */ - RELAYD_STREAMS_SENT = 16, + RELAYD_STREAMS_SENT = 16, /* Ask the relay to reset the metadata trace file (2.8+) */ - RELAYD_RESET_METADATA = 17, + RELAYD_RESET_METADATA = 17, /* Ask the relay to rotate a set of stream files (2.11+) */ - RELAYD_ROTATE_STREAMS = 18, + RELAYD_ROTATE_STREAMS = 18, /* Ask the relay to create a trace chunk (2.11+) */ - RELAYD_CREATE_TRACE_CHUNK = 19, + RELAYD_CREATE_TRACE_CHUNK = 19, /* Ask the relay to close a trace chunk (2.11+) */ - RELAYD_CLOSE_TRACE_CHUNK = 20, + RELAYD_CLOSE_TRACE_CHUNK = 20, /* Ask the relay whether a trace chunk exists (2.11+) */ - RELAYD_TRACE_CHUNK_EXISTS = 21, + RELAYD_TRACE_CHUNK_EXISTS = 21, /* Get the current configuration of a relayd peer (2.12+) */ - RELAYD_GET_CONFIGURATION = 22, + RELAYD_GET_CONFIGURATION = 22, /* Feature branch specific commands start at 10000. */ }; -static inline -const char *lttcomm_relayd_command_str(lttcomm_relayd_command cmd) +static inline const char *lttcomm_relayd_command_str(lttcomm_relayd_command cmd) { switch (cmd) { case RELAYD_ADD_STREAM: @@ -292,7 +291,7 @@ const char *lttcomm_relayd_command_str(lttcomm_relayd_command cmd) * lttcomm error code. */ enum lttcomm_return_code { - LTTCOMM_CONSUMERD_SUCCESS = 0, /* Everything went fine. */ + LTTCOMM_CONSUMERD_SUCCESS = 0, /* Everything went fine. */ /* * Some code paths use -1 to express an error, others * negate this consumer return code. Starting codes at @@ -300,39 +299,39 @@ enum lttcomm_return_code { * and legitimate status codes. */ LTTCOMM_CONSUMERD_COMMAND_SOCK_READY = 100, /* Command socket ready */ - LTTCOMM_CONSUMERD_SUCCESS_RECV_FD, /* Success on receiving fds */ - LTTCOMM_CONSUMERD_ERROR_RECV_FD, /* Error on receiving fds */ - LTTCOMM_CONSUMERD_ERROR_RECV_CMD, /* Error on receiving command */ - LTTCOMM_CONSUMERD_POLL_ERROR, /* Error in polling thread */ - LTTCOMM_CONSUMERD_POLL_NVAL, /* Poll on closed fd */ - LTTCOMM_CONSUMERD_POLL_HUP, /* All fds have hungup */ - LTTCOMM_CONSUMERD_EXIT_SUCCESS, /* Consumerd exiting normally */ - LTTCOMM_CONSUMERD_EXIT_FAILURE, /* Consumerd exiting on error */ - LTTCOMM_CONSUMERD_OUTFD_ERROR, /* Error opening the tracefile */ - LTTCOMM_CONSUMERD_SPLICE_EBADF, /* EBADF from splice(2) */ - LTTCOMM_CONSUMERD_SPLICE_EINVAL, /* EINVAL from splice(2) */ - LTTCOMM_CONSUMERD_SPLICE_ENOMEM, /* ENOMEM from splice(2) */ - LTTCOMM_CONSUMERD_SPLICE_ESPIPE, /* ESPIPE from splice(2) */ - 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 */ - LTTCOMM_CONSUMERD_CHANNEL_FAIL, /* Channel creation failed. */ - LTTCOMM_CONSUMERD_CHAN_NOT_FOUND, /* Channel not found. */ - LTTCOMM_CONSUMERD_ALREADY_SET, /* Resource already set. */ - LTTCOMM_CONSUMERD_ROTATION_FAIL, /* Rotation has failed. */ - LTTCOMM_CONSUMERD_SNAPSHOT_FAILED, /* snapshot has failed. */ - LTTCOMM_CONSUMERD_CREATE_TRACE_CHUNK_FAILED,/* Trace chunk creation failed. */ + LTTCOMM_CONSUMERD_SUCCESS_RECV_FD, /* Success on receiving fds */ + LTTCOMM_CONSUMERD_ERROR_RECV_FD, /* Error on receiving fds */ + LTTCOMM_CONSUMERD_ERROR_RECV_CMD, /* Error on receiving command */ + LTTCOMM_CONSUMERD_POLL_ERROR, /* Error in polling thread */ + LTTCOMM_CONSUMERD_POLL_NVAL, /* Poll on closed fd */ + LTTCOMM_CONSUMERD_POLL_HUP, /* All fds have hungup */ + LTTCOMM_CONSUMERD_EXIT_SUCCESS, /* Consumerd exiting normally */ + LTTCOMM_CONSUMERD_EXIT_FAILURE, /* Consumerd exiting on error */ + LTTCOMM_CONSUMERD_OUTFD_ERROR, /* Error opening the tracefile */ + LTTCOMM_CONSUMERD_SPLICE_EBADF, /* EBADF from splice(2) */ + LTTCOMM_CONSUMERD_SPLICE_EINVAL, /* EINVAL from splice(2) */ + LTTCOMM_CONSUMERD_SPLICE_ENOMEM, /* ENOMEM from splice(2) */ + LTTCOMM_CONSUMERD_SPLICE_ESPIPE, /* ESPIPE from splice(2) */ + 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 */ + LTTCOMM_CONSUMERD_CHANNEL_FAIL, /* Channel creation failed. */ + LTTCOMM_CONSUMERD_CHAN_NOT_FOUND, /* Channel not found. */ + LTTCOMM_CONSUMERD_ALREADY_SET, /* Resource already set. */ + LTTCOMM_CONSUMERD_ROTATION_FAIL, /* Rotation has failed. */ + LTTCOMM_CONSUMERD_SNAPSHOT_FAILED, /* snapshot has failed. */ + LTTCOMM_CONSUMERD_CREATE_TRACE_CHUNK_FAILED, /* Trace chunk creation failed. */ LTTCOMM_CONSUMERD_CLOSE_TRACE_CHUNK_FAILED, /* Trace chunk close failed. */ - LTTCOMM_CONSUMERD_INVALID_PARAMETERS, /* Invalid parameters. */ + LTTCOMM_CONSUMERD_INVALID_PARAMETERS, /* Invalid parameters. */ LTTCOMM_CONSUMERD_TRACE_CHUNK_EXISTS_LOCAL, /* Trace chunk exists on consumer daemon. */ - 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. */ + 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 */ + LTTCOMM_NR, /* Last element */ }; /* lttng socket protocol. */ @@ -345,8 +344,8 @@ enum lttcomm_sock_proto { * Index in the net_families array below. Please keep in sync! */ enum lttcomm_sock_domain { - LTTCOMM_INET = 0, - LTTCOMM_INET6 = 1, + LTTCOMM_INET = 0, + LTTCOMM_INET6 = 1, }; enum lttcomm_metadata_command { @@ -395,19 +394,17 @@ struct lttcomm_relayd_sock { struct lttcomm_net_family { int family; - int (*create) (struct lttcomm_sock *sock, int type, int proto); + int (*create)(struct lttcomm_sock *sock, int type, int proto); }; struct lttcomm_proto_ops { - int (*bind) (struct lttcomm_sock *sock); - int (*close) (struct lttcomm_sock *sock); - int (*connect) (struct lttcomm_sock *sock); - struct lttcomm_sock *(*accept) (struct lttcomm_sock *sock); - 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, const void *buf, - size_t len, int flags); + int (*bind)(struct lttcomm_sock *sock); + int (*close)(struct lttcomm_sock *sock); + int (*connect)(struct lttcomm_sock *sock); + struct lttcomm_sock *(*accept)(struct lttcomm_sock *sock); + 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, const void *buf, size_t len, int flags); }; struct process_attr_integral_value_comm { @@ -421,7 +418,7 @@ struct process_attr_integral_value_comm { * Data structure received from lttng client to session daemon. */ struct lttcomm_session_msg { - uint32_t cmd_type; /* enum lttcomm_sessiond_command */ + uint32_t cmd_type; /* enum lttcomm_sessiond_command */ struct lttng_session session; struct lttng_domain domain; union { @@ -466,7 +463,7 @@ struct lttcomm_session_msg { } LTTNG_PACKED snapshot_record; struct { uint32_t nb_uri; - unsigned int timer_interval; /* usec */ + unsigned int timer_interval; /* usec */ } LTTNG_PACKED session_live; struct { struct lttng_save_session_attr attr; @@ -540,17 +537,17 @@ struct lttcomm_session_msg { uint32_t fd_count; } LTTNG_PACKED; -#define LTTNG_FILTER_MAX_LEN 65536 -#define LTTNG_SESSION_DESCRIPTOR_MAX_LEN 65536 +#define LTTNG_FILTER_MAX_LEN 65536 +#define LTTNG_SESSION_DESCRIPTOR_MAX_LEN 65536 /* * Filter bytecode data. The reloc table is located at the end of the * bytecode. It is made of tuples: (uint16_t, var. len. string). It * starts at reloc_table_offset. */ -#define LTTNG_FILTER_PADDING 32 +#define LTTNG_FILTER_PADDING 32 struct lttng_bytecode { - uint32_t len; /* len of data */ + uint32_t len; /* len of data */ uint32_t reloc_table_offset; uint64_t seqnum; char padding[LTTNG_FILTER_PADDING]; @@ -562,15 +559,14 @@ struct lttng_bytecode { * 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 +#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]; + char names[LTTNG_FLEXIBLE_ARRAY_MEMBER_LENGTH][LTTNG_SYMBOL_NAME_LEN]; } LTTNG_PACKED; -#define LTTNG_EVENT_EXCLUSION_NAME_AT(_exclusion, _i) \ - ((_exclusion)->names[_i]) +#define LTTNG_EVENT_EXCLUSION_NAME_AT(_exclusion, _i) ((_exclusion)->names[_i]) /* * Listing command header. @@ -606,7 +602,7 @@ struct lttcomm_event_extended_header { } LTTNG_PACKED; /* - * Command header of the reply to an LTTNG_DESTROY_SESSION command. + * Command header of the reply to an LTTCOMM_SESSIOND_COMMAND_DESTROY_SESSION command. */ struct lttcomm_session_destroy_command_header { /* enum lttng_session */ @@ -624,9 +620,9 @@ struct lttcomm_tracker_command_header { * Data structure for the response from sessiond to the lttng client. */ 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_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; uint32_t fd_count; @@ -642,7 +638,7 @@ struct lttcomm_lttng_output_id { * operation. */ struct lttcomm_consumer_msg { - uint32_t cmd_type; /* enum lttng_consumer_command */ + uint32_t cmd_type; /* enum lttng_consumer_command */ union { struct { uint64_t channel_key; @@ -671,10 +667,10 @@ struct lttcomm_consumer_msg { struct { uint64_t stream_key; uint64_t channel_key; - int32_t cpu; /* On which CPU this stream is assigned. */ + 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. */ + } LTTNG_PACKED stream; /* Only used by Kernel. */ struct { uint64_t net_index; enum lttng_stream_type type; @@ -693,33 +689,33 @@ struct lttcomm_consumer_msg { uint64_t session_id; } LTTNG_PACKED data_pending; struct { - uint64_t subbuf_size; /* bytes */ - uint64_t num_subbuf; /* power of 2 */ - 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 */ - 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 */ - uint64_t session_id; /* Tracing session id */ - char pathname[PATH_MAX]; /* Channel file path. */ - char name[LTTNG_SYMBOL_NAME_LEN]; /* Channel name. */ + uint64_t subbuf_size; /* bytes */ + uint64_t num_subbuf; /* power of 2 */ + 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 */ + 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 */ + uint64_t session_id; /* Tracing session id */ + char pathname[PATH_MAX]; /* Channel file path. */ + char name[LTTNG_SYMBOL_NAME_LEN]; /* Channel name. */ /* Credentials used to open the UST buffer shared mappings. */ struct { uint32_t uid; uint32_t gid; } LTTNG_PACKED buffer_credentials; - uint64_t relayd_id; /* Relayd id if apply. */ - uint64_t key; /* Unique channel key. */ + uint64_t relayd_id; /* Relayd id if apply. */ + uint64_t key; /* Unique channel key. */ /* ID of the session's current trace chunk. */ LTTNG_OPTIONAL_COMM(uint64_t) LTTNG_PACKED chunk_id; - unsigned char uuid[LTTNG_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. */ + unsigned char uuid[LTTNG_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; /* @@ -740,29 +736,29 @@ struct lttcomm_consumer_msg { uint64_t key; } LTTNG_PACKED destroy_channel; struct { - uint64_t key; /* Metadata channel key. */ - uint64_t target_offset; /* Offset in the consumer */ - uint64_t len; /* Length of metadata to be received. */ + uint64_t key; /* Metadata channel key. */ + uint64_t target_offset; /* Offset in the consumer */ + uint64_t len; /* Length of metadata to be received. */ uint64_t version; /* Version of the metadata. */ } LTTNG_PACKED push_metadata; struct { - uint64_t key; /* Metadata channel key. */ + uint64_t key; /* Metadata channel key. */ } LTTNG_PACKED close_metadata; struct { - uint64_t key; /* Metadata channel key. */ + uint64_t key; /* Metadata channel key. */ } LTTNG_PACKED setup_metadata; struct { - uint64_t key; /* Channel key. */ + uint64_t key; /* Channel key. */ } LTTNG_PACKED flush_channel; struct { - uint64_t key; /* Channel key. */ + uint64_t key; /* Channel key. */ } LTTNG_PACKED clear_quiescent_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. */ + uint32_t metadata; /* This a metadata snapshot. */ + uint64_t relayd_id; /* Relayd id if apply. */ uint64_t key; uint64_t nb_packets_per_stream; } LTTNG_PACKED snapshot_channel; @@ -814,7 +810,8 @@ struct lttcomm_consumer_msg { LTTNG_OPTIONAL_COMM(struct { uint32_t uid; uint32_t gid; - } LTTNG_PACKED ) LTTNG_PACKED credentials; + } LTTNG_PACKED) + LTTNG_PACKED credentials; } LTTNG_PACKED create_trace_chunk; struct { LTTNG_OPTIONAL_COMM(uint64_t) LTTNG_PACKED relayd_id; @@ -830,7 +827,7 @@ struct lttcomm_consumer_msg { uint64_t chunk_id; } LTTNG_PACKED trace_chunk_exists; struct { - lttng_uuid sessiond_uuid; + uint8_t sessiond_uuid[LTTNG_UUID_LEN]; } LTTNG_PACKED init; struct { uint64_t key; @@ -848,6 +845,8 @@ struct lttcomm_consumer_msg { struct lttcomm_consumer_channel_monitor_msg { /* Key of the sampled channel. */ uint64_t key; + /* Id of the sampled channel's session. */ + uint64_t session_id; /* * Lowest and highest usage (bytes) at the moment the sample was taken. */ @@ -855,7 +854,7 @@ struct lttcomm_consumer_channel_monitor_msg { /* * Sum of all the consumed positions for a channel. */ - uint64_t total_consumed; + uint64_t consumed_since_last_sample; } LTTNG_PACKED; /* @@ -903,8 +902,8 @@ struct lttcomm_ust_msg { struct lttcomm_ust_reply { uint32_t handle; uint32_t cmd; - uint32_t ret_code; /* enum lttcomm_return_code */ - uint32_t ret_val; /* return value */ + uint32_t ret_code; /* enum lttcomm_return_code */ + uint32_t ret_val; /* return value */ union { struct { uint64_t memory_map_size; @@ -921,38 +920,38 @@ struct lttcomm_ust_reply { const char *lttcomm_get_readable_code(enum lttcomm_return_code code); int lttcomm_init_inet_sockaddr(struct lttcomm_sockaddr *sockaddr, - const char *ip, unsigned int port); + const char *ip, + unsigned int port); int lttcomm_init_inet6_sockaddr(struct lttcomm_sockaddr *sockaddr, - const char *ip, unsigned int port); + const char *ip, + unsigned int port); struct lttcomm_sock *lttcomm_alloc_sock(enum lttcomm_sock_proto proto); int lttcomm_populate_sock_from_open_socket(struct lttcomm_sock *sock, - int fd, - enum lttcomm_sock_proto protocol); + int fd, + enum lttcomm_sock_proto protocol); int lttcomm_create_sock(struct lttcomm_sock *sock); struct lttcomm_sock *lttcomm_alloc_sock_from_uri(struct lttng_uri *uri); void lttcomm_destroy_sock(struct lttcomm_sock *sock); struct lttcomm_sock *lttcomm_alloc_copy_sock(struct lttcomm_sock *src); -void lttcomm_copy_sock(struct lttcomm_sock *dst, - struct lttcomm_sock *src); +void lttcomm_copy_sock(struct lttcomm_sock *dst, struct lttcomm_sock *src); /* Relayd socket object. */ -struct lttcomm_relayd_sock *lttcomm_alloc_relayd_sock( - struct lttng_uri *uri, uint32_t major, uint32_t minor); +struct lttcomm_relayd_sock * +lttcomm_alloc_relayd_sock(struct lttng_uri *uri, uint32_t major, uint32_t minor); int lttcomm_setsockopt_rcv_timeout(int sock, unsigned int msec); int lttcomm_setsockopt_snd_timeout(int sock, unsigned int msec); -int lttcomm_sock_get_port(const struct lttcomm_sock *sock, - uint16_t *port); +int lttcomm_sock_get_port(const struct lttcomm_sock *sock, uint16_t *port); /* * Set a port to an lttcomm_sock. This will have no effect is the socket is * already bound. */ int lttcomm_sock_set_port(struct lttcomm_sock *sock, uint16_t port); -void lttcomm_init(void); +void lttcomm_init(); /* Get network timeout, in milliseconds */ -unsigned long lttcomm_get_network_timeout(void); +unsigned long lttcomm_get_network_timeout(); -#endif /* _LTTNG_SESSIOND_COMM_H */ +#endif /* _LTTNG_SESSIOND_COMM_H */