#include <lttng/lttng.h>
#include <common/hashtable/hashtable.h>
+#include <common/defaults.h>
+#include "consumer.h"
#include "ust-ctl.h"
-/* UST Stream list */
-struct ltt_ust_stream_list {
- unsigned int count;
- struct cds_list_head head;
+struct ltt_ust_ht_key {
+ const char *name;
+ const struct lttng_filter_bytecode *filter;
+ enum lttng_ust_loglevel_type loglevel;
};
/* Context hash table nodes */
struct ltt_ust_event {
unsigned int enabled;
struct lttng_ust_event attr;
- struct lttng_ht *ctx;
struct lttng_ht_node_str node;
-};
-
-/* UST stream */
-struct ltt_ust_stream {
- int handle;
- char pathname[PATH_MAX];
- struct lttng_ust_object_data *obj;
- /* Using a list of streams to keep order. */
- struct cds_list_head list;
+ struct lttng_ust_filter_bytecode *filter;
};
/* UST channel */
unsigned int enabled;
char name[LTTNG_UST_SYM_NAME_LEN];
char pathname[PATH_MAX];
- struct lttng_ust_channel attr;
+ struct lttng_ust_channel_attr attr;
struct lttng_ht *ctx;
struct lttng_ht *events;
struct lttng_ht_node_str node;
int handle;
struct lttng_ust_object_data *obj;
char pathname[PATH_MAX]; /* Trace file path name */
- struct lttng_ust_channel attr;
+ struct lttng_ust_channel_attr attr;
struct lttng_ust_object_data *stream_obj;
};
/* 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,
- unsigned int session_id, struct lttng_domain *domain);
+ unsigned int session_id);
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);
+struct ltt_ust_event *trace_ust_create_event(struct lttng_event *ev,
+ struct lttng_filter_bytecode *filter);
struct ltt_ust_metadata *trace_ust_create_metadata(char *path);
struct ltt_ust_context *trace_ust_create_context(
struct lttng_event_context *ctx);
#else /* HAVE_LIBLTTNG_UST_CTL */
-static inline
-struct ltt_ust_event *trace_ust_find_event_by_name(struct lttng_ht *ht,
- char *name)
+static inline int trace_ust_ht_match_event(struct cds_lfht_node *node,
+ const void *_key)
{
- return NULL;
+ return 0;
+}
+static inline int trace_ust_ht_match_event_by_name(struct cds_lfht_node *node,
+ const void *_key)
+{
+ return 0;
}
-
static inline
struct ltt_ust_channel *trace_ust_find_channel_by_name(struct lttng_ht *ht,
char *name)
}
static inline
-struct ltt_ust_session *trace_ust_create_session(char *path, pid_t pid,
- struct lttng_domain *domain)
+struct ltt_ust_session *trace_ust_create_session(char *path,
+ unsigned int session_id)
{
return NULL;
}
return NULL;
}
static inline
-struct ltt_ust_event *trace_ust_create_event(struct lttng_event *ev)
+struct ltt_ust_event *trace_ust_create_event(struct lttng_event *ev,
+ struct lttng_filter_bytecode *filter)
{
return NULL;
}
{
return NULL;
}
+static inline struct ltt_ust_event *trace_ust_find_event(struct lttng_ht *ht,
+ char *name, struct lttng_filter_bytecode *filter, int loglevel)
+{
+ return NULL;
+}
#endif /* HAVE_LIBLTTNG_UST_CTL */