Use iterator on tracepoint probes instead of tracepoints per se
[lttng-ust.git] / include / lttng / ust-events.h
index 1c7140ff69ef528baf148af2fab14c0faeb5bbf1..0a03193920229cc6406f51b0752b4744309f587c 100644 (file)
@@ -156,7 +156,7 @@ struct lttng_enum {
        const char *name;
        struct lttng_type container_type;
        const struct lttng_enum_entry *entries;
-       nsigned int len;
+       unsigned int len;
 };
 
 /* Event field description */
@@ -183,20 +183,39 @@ struct lttng_ctx {
        unsigned int allocated_fields;
 };
 
+struct tracepoint_loglevel_entry  {
+       const char *identifier;
+       long value;
+};
+
 struct lttng_event_desc {
        const char *name;
        void *probe_callback;
        const struct lttng_event_ctx *ctx;      /* context */
        const struct lttng_event_field *fields; /* event payload */
        unsigned int nr_fields;
+       const struct tracepoint_loglevel_entry **loglevel;
 };
 
 struct lttng_probe_desc {
-       const struct lttng_event_desc *event_desc;
+       const char *provider;
+       const struct lttng_event_desc **event_desc;
        unsigned int nr_events;
+       const struct tracepoint_loglevel_entry **loglevels;
+       unsigned int nr_loglevels;
        struct cds_list_head head;              /* chain registered probes */
 };
 
+struct tp_list_entry {
+       struct lttng_ust_tracepoint_iter tp;
+       struct cds_list_head head;
+};
+
+struct lttng_ust_tracepoint_list {
+       struct tp_list_entry *iter;
+       struct cds_list_head head;
+};
+
 struct ust_pending_probe;
 
 /*
@@ -215,7 +234,7 @@ struct ltt_event {
        } u;
        struct cds_list_head list;              /* Event list */
        struct ust_pending_probe *pending_probe;
-       int metadata_dumped:1;
+       unsigned int metadata_dumped:1;
 };
 
 struct channel;
@@ -275,7 +294,7 @@ struct ltt_channel {
        struct ltt_channel_ops *ops;
        int header_type;                /* 0: unset, 1: compact, 2: large */
        struct lttng_ust_shm_handle *handle;    /* shared-memory handle */
-       int metadata_dumped:1;
+       unsigned int metadata_dumped:1;
 
        /* Channel ID, available for consumer too */
        unsigned int id;
@@ -293,7 +312,7 @@ struct ltt_session {
        struct cds_list_head list;      /* Session list */
        unsigned int free_chan_id;      /* Next chan ID to allocate */
        uuid_t uuid;                    /* Trace session unique ID */
-       int metadata_dumped:1;
+       unsigned int metadata_dumped:1;
 };
 
 struct ltt_transport {
@@ -324,9 +343,10 @@ struct ltt_channel *ltt_global_channel_create(struct ltt_session *session,
                                       int *shm_fd, int *wait_fd,
                                       uint64_t *memory_map_size);
 
-struct ltt_event *ltt_event_create(struct ltt_channel *chan,
-                                  struct lttng_ust_event *event_param,
-                                  void *filter);
+int ltt_event_create(struct ltt_channel *chan,
+               struct lttng_ust_event *event_param,
+               void *filter,
+               struct ltt_event **event);
 
 int ltt_channel_enable(struct ltt_channel *channel);
 int ltt_channel_disable(struct ltt_channel *channel);
@@ -363,4 +383,9 @@ const struct lttng_ust_lib_ring_buffer_client_cb *lttng_client_callbacks_overwri
 
 struct ltt_transport *ltt_transport_find(const char *name);
 
+int ltt_probes_get_event_list(struct lttng_ust_tracepoint_list *list);
+void ltt_probes_prune_event_list(struct lttng_ust_tracepoint_list *list);
+struct lttng_ust_tracepoint_iter *
+       lttng_ust_tracepoint_list_get_iter_next(struct lttng_ust_tracepoint_list *list);
+
 #endif /* _LTTNG_UST_EVENTS_H */
This page took 0.024721 seconds and 4 git commands to generate.