X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fbin%2Flttng-sessiond%2Ftrace-ust.h;h=efca4d23b8989dc37650565e9037879372e09ff9;hb=18eace3ba4aeaa6b869c8ad9ec1273381b4cbdee;hp=4513bafee6847581aa0f401a52cd17f880028b85;hpb=d14d33bf091e72b23b1f90ea18a0a01bed098b76;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/trace-ust.h b/src/bin/lttng-sessiond/trace-ust.h index 4513bafee..efca4d23b 100644 --- a/src/bin/lttng-sessiond/trace-ust.h +++ b/src/bin/lttng-sessiond/trace-ust.h @@ -20,14 +20,21 @@ #include #include -#include #include #include #include +#include +#include "consumer.h" #include "ust-ctl.h" +struct ltt_ust_ht_key { + const char *name; + const struct lttng_filter_bytecode *filter; + enum lttng_ust_loglevel_type loglevel; +}; + /* UST Stream list */ struct ltt_ust_stream_list { unsigned int count; @@ -44,14 +51,16 @@ struct ltt_ust_context { struct ltt_ust_event { unsigned int enabled; struct lttng_ust_event attr; - struct lttng_ht *ctx; struct lttng_ht_node_str node; + struct lttng_ust_filter_bytecode *filter; }; /* UST stream */ struct ltt_ust_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; @@ -112,23 +121,37 @@ struct ltt_ust_session { /* UID/GID of the user owning the session */ uid_t uid; gid_t gid; + /* + * Two consumer_output object are needed where one is for the current + * output object and the second one is the temporary object used to store + * URI being set by the lttng_set_consumer_uri call. Once + * lttng_enable_consumer is called, the two pointers are swapped. + */ + struct consumer_output *consumer; + struct consumer_output *tmp_consumer; + /* Sequence number for filters so the tracer knows the ordering. */ + uint64_t filter_seq_num; }; #ifdef HAVE_LIBLTTNG_UST_CTL +int trace_ust_ht_match_event(struct cds_lfht_node *node, const void *_key); +int trace_ust_ht_match_event_by_name(struct cds_lfht_node *node, + const void *_key); + /* * Lookup functions. NULL is returned if not found. */ -struct ltt_ust_event *trace_ust_find_event_by_name(struct lttng_ht *ht, - char *name); +struct ltt_ust_event *trace_ust_find_event(struct lttng_ht *ht, + char *name, struct lttng_filter_bytecode *filter, int loglevel); struct ltt_ust_channel *trace_ust_find_channel_by_name(struct lttng_ht *ht, char *name); /* * Create functions malloc() the data structure. */ -struct ltt_ust_session *trace_ust_create_session(char *path, int session_id, - struct lttng_domain *domain); +struct ltt_ust_session *trace_ust_create_session(char *path, + unsigned int session_id, struct lttng_domain *domain); struct ltt_ust_channel *trace_ust_create_channel(struct lttng_channel *attr, char *path); struct ltt_ust_event *trace_ust_create_event(struct lttng_event *ev); @@ -147,13 +170,6 @@ void trace_ust_destroy_event(struct ltt_ust_event *event); #else /* HAVE_LIBLTTNG_UST_CTL */ -static inline -struct ltt_ust_event *trace_ust_find_event_by_name(struct lttng_ht *ht, - char *name) -{ - return NULL; -} - static inline struct ltt_ust_channel *trace_ust_find_channel_by_name(struct lttng_ht *ht, char *name)