X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=include%2Fust-comm.h;h=a5e0957235ff2503e73ec8f8dfd3f17356e05735;hb=fb31eb73d8a4a6d9784ed5c335b7fa3b9684108c;hp=ae53f158e83dc338ae09e43047ef8adda154a1fc;hpb=751d4e910613be142f5590ed91590a8e3f3299ef;p=lttng-ust.git diff --git a/include/ust-comm.h b/include/ust-comm.h index ae53f158..a5e09572 100644 --- a/include/ust-comm.h +++ b/include/ust-comm.h @@ -26,20 +26,26 @@ * These declarations should NOT be considered stable API. */ +#include #include #include #include #include #include +#include #include +#ifndef LTTNG_PACKED +#error "LTTNG_PACKED should be defined" +#endif + /* * Default timeout the application waits for the sessiond to send its * "register done" command. Can be overridden with the environment * 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 LTTNG_SYSTEM_RUNDIR #define LTTNG_DEFAULT_HOME_RUNDIR ".lttng" @@ -50,6 +56,9 @@ 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; @@ -91,6 +100,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; @@ -144,6 +156,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; @@ -167,7 +195,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); @@ -210,6 +239,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) */ @@ -220,11 +250,23 @@ 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,