.gitignore: ignore local vscode workspace settings file
[lttng-tools.git] / src / common / sessiond-comm / sessiond-comm.hpp
index ae3111855468f19a1c5551fd2f802e026694a88a..c8ac0cf41e60318b4634bf2ee4f25b1637ae6680 100644 (file)
 #ifndef _LTTNG_SESSIOND_COMM_H
 #define _LTTNG_SESSIOND_COMM_H
 
-#include <limits.h>
-#include <lttng/lttng.h>
-#include <lttng/snapshot-internal.hpp>
-#include <lttng/save-internal.hpp>
-#include <lttng/channel-internal.hpp>
-#include <lttng/trigger/trigger-internal.hpp>
-#include <lttng/rotate-internal.hpp>
+#include "inet.hpp"
+#include "inet6.hpp"
+
 #include <common/compat/socket.hpp>
-#include <common/uri.hpp>
+#include <common/compiler.hpp>
 #include <common/defaults.hpp>
-#include <common/uuid.hpp>
 #include <common/macros.hpp>
 #include <common/optional.hpp>
+#include <common/unix.hpp>
+#include <common/uri.hpp>
+#include <common/uuid.hpp>
+
+#include <lttng/channel-internal.hpp>
+#include <lttng/lttng.h>
+#include <lttng/rotate-internal.hpp>
+#include <lttng/save-internal.hpp>
+#include <lttng/snapshot-internal.hpp>
+#include <lttng/trigger/trigger-internal.hpp>
 
 #include <arpa/inet.h>
+#include <limits.h>
 #include <netinet/in.h>
 #include <stdint.h>
 #include <sys/un.h>
 
-#include "inet.hpp"
-#include "inet6.hpp"
-#include <common/unix.hpp>
-
 /* 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 */
This page took 0.035618 seconds and 4 git commands to generate.