extern int ust_consumerd64_fd, ust_consumerd32_fd;
+struct ust_app_ht_key {
+ const char *name;
+ const struct lttng_ust_filter_bytecode *filter;
+ enum lttng_ust_loglevel_type loglevel;
+};
+
/*
* Application registration data structure.
*/
*/
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 ust_app_channel {
int enabled;
int handle;
char name[LTTNG_UST_SYM_NAME_LEN];
- struct lttng_ust_channel attr;
+ struct lttng_ust_channel_attr attr;
struct lttng_ust_object_data *obj;
- struct ltt_ust_stream_list streams;
+ struct ust_app_stream_list streams;
struct lttng_ht *ctx;
struct lttng_ht *events;
struct lttng_ht_node_str node;
/* UID/GID of the user owning the session */
uid_t uid;
gid_t gid;
+ struct cds_list_head teardown_node;
};
/*
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 ltt_ust_channel *uchan, struct ltt_ust_event *uevent);
int ust_app_add_ctx_channel_glb(struct ltt_ust_session *usess,
struct ltt_ust_channel *uchan, struct ltt_ust_context *uctx);
-int ust_app_set_filter_event_glb(struct ltt_ust_session *usess,
- struct ltt_ust_channel *uchan, struct ltt_ust_event *uevent,
- struct lttng_filter_bytecode *bytecode);
void ust_app_global_update(struct ltt_ust_session *usess, int sock);
void ust_app_clean_list(void);
{
return 0;
}
-static inline
-int ust_app_set_filter_event_glb(struct ltt_ust_session *usess,
- struct ltt_ust_channel *uchan, struct ltt_ust_event *uevent,
- struct lttng_filter_bytecode *bytecode)
-{
- return 0;
-}
#endif /* HAVE_LIBLTTNG_UST_CTL */