X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=include%2Fust-comm.h;h=4dbd5c8999d00f49495a6841951a63500df68d86;hb=76644b7eab2612bb24ce3dc6d67d5a654c4b7f8f;hp=ba800900e1011fc8121723f08b8b2e3a0972fae6;hpb=ff0f57289ff0e6be25424081fabbbfc0e3b1b565;p=lttng-ust.git diff --git a/include/ust-comm.h b/include/ust-comm.h index ba800900..4dbd5c89 100644 --- a/include/ust-comm.h +++ b/include/ust-comm.h @@ -26,11 +26,18 @@ * These declarations should NOT be considered stable API. */ +#include #include #include #include #include #include +#include +#include "helper.h" + +#ifndef LTTNG_PACKED +#error "LTTNG_PACKED should be defined" +#endif /* * Default timeout the application waits for the sessiond to send its @@ -38,9 +45,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 +55,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 +100,26 @@ 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; + struct { + uint32_t data_size; /* following capture data */ + uint32_t reloc_offset; + uint64_t seqnum; + } LTTNG_PACKED capture; + struct lttng_ust_counter counter; + struct lttng_ust_counter_global counter_global; + struct lttng_ust_counter_cpu counter_cpu; + /* + * For LTTNG_UST_EVENT_NOTIFIER_CREATE, a struct + * lttng_ust_event_notifier implicitly follows struct + * ustcomm_ust_msg. + */ + struct { + /* Length of struct lttng_ust_event_notifier */ + uint32_t len; + } event_notifier; char padding[USTCOMM_MSG_PADDING2]; } u; } LTTNG_PACKED; @@ -102,7 +133,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 +173,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 +212,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); @@ -189,6 +237,16 @@ ssize_t ustcomm_recv_channel_from_sessiond(int sock, int ustcomm_recv_stream_from_sessiond(int sock, uint64_t *memory_map_size, int *shm_fd, int *wakeup_fd); +LTTNG_HIDDEN +ssize_t ustcomm_recv_event_notifier_notif_fd_from_sessiond(int sock, + int *event_notifier_notif_fd); + +LTTNG_HIDDEN +ssize_t ustcomm_recv_counter_from_sessiond(int sock, + void **counter_data, uint64_t len); +LTTNG_HIDDEN +int ustcomm_recv_counter_shm_from_sessiond(int sock, + int *shm_fd); /* * Returns 0 on success, negative error value on error. @@ -208,6 +266,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 +277,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) */