#include <stdint.h>
+#include <common/compat/uuid.h>
#include "trace-ust.h"
/* lttng-ust supported version. */
*/
struct lttng_ht *ust_app_ht_by_sock;
+/* Stream list containing ust_app_stream. */
+struct ust_app_stream_list {
+ unsigned int count;
+ struct cds_list_head head;
+};
+
struct ust_app_ctx {
int handle;
struct lttng_ust_context ctx;
struct lttng_ust_filter_bytecode *filter;
};
+struct ust_app_stream {
+ int handle;
+ char pathname[PATH_MAX];
+ /* Format is %s_%d respectively channel name and CPU number. */
+ char name[DEFAULT_STREAM_NAME_LEN];
+ struct lttng_ust_object_data *obj;
+ /* Using a list of streams to keep order. */
+ struct cds_list_head list;
+ struct ustctl_consumer_stream *ustream;
+};
+
struct ust_app_channel {
int enabled;
int handle;
+ /* Channel and streams were sent to the UST tracer. */
+ int is_sent;
+ /* Unique key used to identify the channel on the consumer side. */
+ unsigned long key;
+ /* Number of stream that this channel is expected to receive. */
+ unsigned int expected_stream_count;
char name[LTTNG_UST_SYM_NAME_LEN];
- struct lttng_ust_channel attr;
struct lttng_ust_object_data *obj;
- struct ltt_ust_stream_list streams;
+ struct ustctl_consumer_channel_attr attr;
+ struct ustctl_consumer_channel *channel;
+ struct ust_app_stream_list streams;
struct lttng_ht *ctx;
struct lttng_ht *events;
struct lttng_ht_node_str node;
int started; /* allows detection of start vs restart. */
int handle; /* used has unique identifier for app session */
int id; /* session unique identifier */
- struct ltt_ust_metadata *metadata;
+ struct ust_app_channel *metadata;
struct lttng_ht *channels; /* Registered channels */
struct lttng_ht_node_ulong node;
char path[PATH_MAX];
/* UID/GID of the user owning the session */
uid_t uid;
gid_t gid;
+ struct cds_list_head teardown_node;
+ /* Universal unique identifier used by the tracer. */
+ unsigned char uuid[UUID_STR_LEN];
};
/*
struct lttng_ht *sessions;
struct lttng_ht_node_ulong pid_n;
struct lttng_ht_node_ulong sock_n;
+ /*
+ * This is a list of ust app session that, once the app is going into
+ * teardown mode, in the RCU call, each node in this list is removed and
+ * deleted.
+ *
+ * Element of the list are added when an application unregisters after each
+ * ht_del of ust_app_session associated to this app. This list is NOT used
+ * when a session is destroyed.
+ */
+ struct cds_list_head teardown_head;
};
#ifdef HAVE_LIBLTTNG_UST_CTL
int ust_app_stop_trace(struct ltt_ust_session *usess, struct ust_app *app);
int ust_app_start_trace_all(struct ltt_ust_session *usess);
int ust_app_stop_trace_all(struct ltt_ust_session *usess);
-int ust_app_destroy_trace(struct ltt_ust_session *usess, struct ust_app *app);
int ust_app_destroy_trace_all(struct ltt_ust_session *usess);
int ust_app_list_events(struct lttng_event **events);
int ust_app_list_event_fields(struct lttng_event_field **fields);
struct ust_app *ust_app_find_by_pid(pid_t pid);
int ust_app_validate_version(int sock);
int ust_app_calibrate_glb(struct lttng_ust_calibrate *calibrate);
+struct ust_app_stream *ust_app_alloc_stream(void);
#else /* HAVE_LIBLTTNG_UST_CTL */