X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=include%2Fust-comm.h;h=6a08b306b1b9ade6b44cf722d8b3d26a73281600;hb=ef1a13e0de71e01d19a9d1b2d4abdac5e34eb9bc;hp=c3564dc66a6baa1692bdd9130e6a04877a825cfd;hpb=ff51799104d4b7255b7e00c839260fd4650e5113;p=lttng-ust.git diff --git a/include/ust-comm.h b/include/ust-comm.h index c3564dc6..6a08b306 100644 --- a/include/ust-comm.h +++ b/include/ust-comm.h @@ -31,6 +31,8 @@ #include #include #include +#include +#include /* * Default timeout the application waits for the sessiond to send its @@ -38,9 +40,9 @@ * variable "LTTNG_UST_REGISTER_TIMEOUT". Note that if the sessiond is not * found, the application proceeds directly without any delay. */ -#define LTTNG_UST_DEFAULT_CONSTRUCTOR_TIMEOUT_MS 3000 +#define LTTNG_UST_DEFAULT_CONSTRUCTOR_TIMEOUT_MS CONFIG_LTTNG_UST_DEFAULT_CONSTRUCTOR_TIMEOUT_MS -#define LTTNG_DEFAULT_RUNDIR "/var/run/lttng" +#define LTTNG_DEFAULT_RUNDIR LTTNG_SYSTEM_RUNDIR #define LTTNG_DEFAULT_HOME_RUNDIR ".lttng" /* Queue size of listen(2) */ @@ -48,6 +50,10 @@ #define LTTNG_UST_COMM_REG_MSG_PADDING 64 struct lttng_event_field; +struct lttng_ctx_field; +struct lttng_enum_entry; +struct lttng_integer_type; +struct lttng_session; struct ustctl_reg_msg { uint32_t magic; @@ -89,6 +95,9 @@ struct ustcomm_ust_msg { uint32_t reloc_offset; uint64_t seqnum; } LTTNG_PACKED filter; + struct { + uint32_t count; /* how many names follow */ + } LTTNG_PACKED exclusion; char padding[USTCOMM_MSG_PADDING2]; } u; } LTTNG_PACKED; @@ -102,7 +111,7 @@ struct ustcomm_ust_msg { struct ustcomm_ust_reply { uint32_t handle; uint32_t cmd; - uint32_t ret_code; /* enum ustcomm_return_code */ + int32_t ret_code; /* enum ustcomm_return_code */ uint32_t ret_val; /* return value */ char padding[USTCOMM_REPLY_PADDING1]; union { @@ -142,6 +151,22 @@ struct ustcomm_notify_event_reply { char padding[USTCOMM_NOTIFY_EVENT_REPLY_PADDING]; } LTTNG_PACKED; +#define USTCOMM_NOTIFY_ENUM_MSG_PADDING 32 +struct ustcomm_notify_enum_msg { + uint32_t session_objd; + char enum_name[LTTNG_UST_SYM_NAME_LEN]; + uint32_t entries_len; + char padding[USTCOMM_NOTIFY_ENUM_MSG_PADDING]; + /* followed by enum entries */ +} LTTNG_PACKED; + +#define USTCOMM_NOTIFY_EVENT_REPLY_PADDING 32 +struct ustcomm_notify_enum_reply { + int32_t ret_code; /* 0: ok, negative: error code */ + uint64_t enum_id; + char padding[USTCOMM_NOTIFY_EVENT_REPLY_PADDING]; +} LTTNG_PACKED; + #define USTCOMM_NOTIFY_CHANNEL_MSG_PADDING 32 struct ustcomm_notify_channel_msg { uint32_t session_objd; @@ -165,7 +190,8 @@ struct ustcomm_notify_channel_reply { */ extern int ustcomm_create_unix_sock(const char *pathname); -extern int ustcomm_connect_unix_sock(const char *pathname); +extern int ustcomm_connect_unix_sock(const char *pathname, + long timeout); extern int ustcomm_accept_unix_sock(int sock); extern int ustcomm_listen_unix_sock(int sock); extern int ustcomm_close_unix_sock(int sock); @@ -185,7 +211,7 @@ extern int ustcomm_send_app_cmd(int sock, int ustcomm_recv_fd(int sock); ssize_t ustcomm_recv_channel_from_sessiond(int sock, - void **chan_data, uint64_t len); + void **chan_data, uint64_t len, int *wakeup_fd); int ustcomm_recv_stream_from_sessiond(int sock, uint64_t *memory_map_size, int *shm_fd, int *wakeup_fd); @@ -208,6 +234,7 @@ int ustcomm_send_reg_msg(int sock, * Returns -EPIPE or -ECONNRESET if other end has hung up. */ int ustcomm_register_event(int sock, + struct lttng_session *session, int session_objd, /* session descriptor */ int channel_objd, /* channel descriptor */ const char *event_name, /* event name (input) */ @@ -218,15 +245,27 @@ int ustcomm_register_event(int sock, const char *model_emf_uri, uint32_t *id); /* event id (output) */ +/* + * Returns 0 on success, negative error value on error. + * Returns -EPIPE or -ECONNRESET if other end has hung up. + */ +int ustcomm_register_enum(int sock, + int session_objd, /* session descriptor */ + const char *enum_name, /* enum name (input) */ + size_t nr_entries, /* entries */ + const struct lttng_enum_entry *entries, + uint64_t *id); /* enum id (output) */ + /* * Returns 0 on success, negative error value on error. * Returns -EPIPE or -ECONNRESET if other end has hung up. */ int ustcomm_register_channel(int sock, + struct lttng_session *session, int session_objd, /* session descriptor */ int channel_objd, /* channel descriptor */ size_t nr_ctx_fields, - const struct lttng_event_field *ctx_fields, + const struct lttng_ctx_field *ctx_fields, uint32_t *chan_id, /* channel id (output) */ int *header_type); /* header type (output) */