Add recv fds function to lttng-comm API
[lttng-tools.git] / include / lttng-sessiond-comm.h
index f57b0cd5f51bad2de8701b506b013dbe3d791406..fcdc5a2cf72331234e11dc161e1179e1bb164630 100644 (file)
@@ -28,6 +28,7 @@
 
 #include <limits.h>
 #include <lttng/lttng.h>
+#include <lttng-ust.h>
 
 #define LTTNG_RUNDIR                        "/var/run/lttng"
 
 #define DEFAULT_HOME_CLIENT_UNIX_SOCK       "%s/.client-ltt-sessiond"
 
 /* Queue size of listen(2) */
-#define MAX_LISTEN 10
+#define MAX_LISTEN 64
 
-/* Get the error code index from 0 since
- * LTTCOMM_OK start at 1000
+/*
+ * Get the error code index from 0 since LTTCOMM_OK start at 1000
  */
 #define LTTCOMM_ERR_INDEX(code) (code - LTTCOMM_OK)
 
@@ -63,6 +64,7 @@ enum lttcomm_sessiond_command {
        LTTNG_LIST_EVENTS,
        LTTNG_LIST_SESSIONS,
        LTTNG_LIST_TRACEPOINTS,
+       LTTNG_REGISTER_CONSUMER,
        LTTNG_START_TRACE,
        LTTNG_STOP_TRACE,
 };
@@ -91,6 +93,8 @@ enum lttcomm_return_code {
        LTTCOMM_SELECT_SESS,                    /* Must select a session */
        LTTCOMM_EXIST_SESS,                             /* Session name already exist */
        LTTCOMM_NO_EVENT,                               /* No event found */
+       LTTCOMM_CONNECT_FAIL,           /* Unable to connect to unix socket */
+       LTTCOMM_APP_NOT_FOUND,          /* App not found in traceable app list */
        LTTCOMM_KERN_NA,                                /* Kernel tracer unavalable */
        LTTCOMM_KERN_EVENT_EXIST,       /* Kernel event already exists */
        LTTCOMM_KERN_SESS_FAIL,                 /* Kernel create session failed */
@@ -110,6 +114,9 @@ enum lttcomm_return_code {
        LTTCOMM_KERN_DIR_EXIST,                 /* Kernel trace directory exist */
        LTTCOMM_KERN_NO_SESSION,                /* No kernel session found */
        LTTCOMM_KERN_LIST_FAIL,                 /* Kernel listing events failed */
+       LTTCOMM_UST_SESS_FAIL,                  /* UST create session failed */
+       LTTCOMM_UST_CHAN_NOT_FOUND,     /* UST channel not found */
+       LTTCOMM_UST_CHAN_FAIL,          /* UST create channel failed */
        KCONSUMERD_COMMAND_SOCK_READY,  /* when kconsumerd command socket ready */
        KCONSUMERD_SUCCESS_RECV_FD,             /* success on receiving fds */
        KCONSUMERD_ERROR_RECV_FD,               /* error on receiving fds */
@@ -154,6 +161,10 @@ struct lttcomm_session_msg {
                        char event_name[NAME_MAX];
                        struct lttng_event_context ctx;
                } context;
+               /* Use by register_consumer */
+               struct {
+                       char path[PATH_MAX];
+               } reg;
                /* List */
                struct {
                        char channel_name[NAME_MAX];
@@ -196,6 +207,39 @@ struct lttcomm_kconsumerd_msg {
        enum lttng_event_output output; /* use splice or mmap to consume this fd */
 };
 
+/*
+ * Data structure for the commands sent from sessiond to UST.
+ */
+struct lttcomm_ust_msg {
+       uint32_t handle;
+       uint32_t cmd;
+       union {
+               struct lttng_ust_tracer_version version;
+               struct lttng_ust_channel channel;
+               struct lttng_ust_event event;
+               struct lttng_ust_context context;
+       } u;
+};
+
+/*
+ * Data structure for the response from UST to the session daemon.
+ * cmd_type is sent back in the reply for validation.
+ */
+struct lttcomm_ust_reply {
+       uint32_t handle;
+       uint32_t cmd;
+       uint32_t ret_code;      /* enum lttcomm_return_code */
+       uint32_t ret_val;       /* return value */
+       union {
+               struct {
+                       uint64_t memory_map_size;
+               } channel;
+               struct {
+                       uint64_t memory_map_size;
+               } stream;
+       } u;
+};
+
 extern int lttcomm_create_unix_sock(const char *pathname);
 extern int lttcomm_connect_unix_sock(const char *pathname);
 extern int lttcomm_accept_unix_sock(int sock);
@@ -204,6 +248,9 @@ extern int lttcomm_close_unix_sock(int sock);
 /* Send fd(s) over a unix socket. */
 extern ssize_t lttcomm_send_fds_unix_sock(int sock, void *buf, int *fds,
                size_t nb_fd, size_t len);
+/* Recv fd(s) over a unix socket */
+extern ssize_t lttcomm_recv_fds_unix_sock(int sock, void *buf, int *fds,
+               size_t nb_fd, size_t len);
 extern ssize_t lttcomm_recv_unix_sock(int sock, void *buf, size_t len);
 extern ssize_t lttcomm_send_unix_sock(int sock, void *buf, size_t len);
 extern const char *lttcomm_get_readable_code(enum lttcomm_return_code code);
This page took 0.024646 seconds and 4 git commands to generate.