#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
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 */
/* An lttng_session_descriptor follows. */
} LTTNG_PACKED create_session;
} u;
+ /* Count of fds sent. */
+ uint32_t fd_count;
} LTTNG_PACKED;
#define LTTNG_FILTER_MAX_LEN 65536
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 {
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. */
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 */
struct {
uint64_t key;
} LTTNG_PACKED clear_channel;
+ struct {
+ uint64_t key;
+ } LTTNG_PACKED open_channel_packets;
} u;
} LTTNG_PACKED;