Tracepoint loglevel: setup all loglevel information at build time
[lttng-ust.git] / include / lttng / ust-events.h
index cb794b40a511efc0c0f1fd1989c4aace3d2940b4..6b4863fd494540b921c6158544b94a8d3ebf3929 100644 (file)
@@ -1,14 +1,21 @@
-#ifndef _UST_LTTNG_EVENTS_H
-#define _UST_LTTNG_EVENTS_H
+#ifndef _LTTNG_UST_EVENTS_H
+#define _LTTNG_UST_EVENTS_H
 
 /*
- * ust/lttng-events.h
+ * lttng/ust-events.h
  *
  * Copyright 2010 (c) - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
  *
  * Holds LTTng per-session event registry.
  *
- * Dual LGPL v2.1/GPL v2 license.
+ * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
+ * OR IMPLIED.  ANY USE IS AT YOUR OWN RISK.
+ *
+ * Permission is hereby granted to use or copy this program
+ * for any purpose,  provided the above notices are retained on all copies.
+ * Permission to modify the code and to distribute modified code is granted,
+ * provided the above notices are retained, and a notice that the code was
+ * modified is included with the above copyright notice.
  */
 
 #include <urcu/list.h>
@@ -176,20 +183,34 @@ 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_loglevel_iter {
+       struct lttng_probe_desc *desc;
+       const struct tracepoint_loglevel_entry *loglevel;
+};
+
 struct ust_pending_probe;
 
 /*
@@ -216,13 +237,13 @@ struct lttng_ust_shm_handle;
 
 struct ltt_channel_ops {
        struct ltt_channel *(*channel_create)(const char *name,
-                               struct ltt_channel *ltt_chan,
                                void *buf_addr,
                                size_t subbuf_size, size_t num_subbuf,
                                unsigned int switch_timer_interval,
                                unsigned int read_timer_interval,
                                int *shm_fd, int *wait_fd,
-                               uint64_t *memory_map_size);
+                               uint64_t *memory_map_size,
+                               struct ltt_channel *chan_priv_init);
        void (*channel_destroy)(struct ltt_channel *ltt_chan);
        struct lttng_ust_lib_ring_buffer *(*buffer_read_open)(struct channel *chan,
                                struct lttng_ust_shm_handle *handle,
@@ -250,7 +271,12 @@ struct ltt_channel_ops {
 };
 
 struct ltt_channel {
-       unsigned int id;
+       /*
+        * The pointers located in this private data are NOT safe to be
+        * dereferenced by the consumer. The only operations the
+        * consumer process is designed to be allowed to do is to read
+        * and perform subbuffer flush.
+        */
        struct channel *chan;           /* Channel buffers */
        int enabled;
        struct lttng_ctx *ctx;
@@ -264,6 +290,11 @@ struct ltt_channel {
        int header_type;                /* 0: unset, 1: compact, 2: large */
        struct lttng_ust_shm_handle *handle;    /* shared-memory handle */
        int metadata_dumped:1;
+
+       /* Channel ID, available for consumer too */
+       unsigned int id;
+       /* Copy of session UUID for consumer (availability through shm) */
+       uuid_t uuid;                    /* Trace session unique ID */
 };
 
 struct ltt_session {
@@ -297,7 +328,8 @@ struct ltt_channel *ltt_channel_create(struct ltt_session *session,
                                       unsigned int switch_timer_interval,
                                       unsigned int read_timer_interval,
                                       int *shm_fd, int *wait_fd,
-                                      uint64_t *memory_map_size);
+                                      uint64_t *memory_map_size,
+                                      struct ltt_channel *chan_priv_init);
 struct ltt_channel *ltt_global_channel_create(struct ltt_session *session,
                                       int overwrite, void *buf_addr,
                                       size_t subbuf_size, size_t num_subbuf,
@@ -306,9 +338,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);
@@ -339,11 +372,10 @@ int lttng_add_procname_to_ctx(struct lttng_ctx **ctx);
 void lttng_context_vtid_reset(void);
 void lttng_context_vpid_reset(void);
 
-const struct lttng_ust_lib_ring_buffer_config *lttng_client_callbacks_metadata;
-const struct lttng_ust_lib_ring_buffer_config *lttng_client_callbacks_discard;
-const struct lttng_ust_lib_ring_buffer_config *lttng_client_callbacks_overwrite;
+const struct lttng_ust_lib_ring_buffer_client_cb *lttng_client_callbacks_metadata;
+const struct lttng_ust_lib_ring_buffer_client_cb *lttng_client_callbacks_discard;
+const struct lttng_ust_lib_ring_buffer_client_cb *lttng_client_callbacks_overwrite;
 
-struct cds_list_head ltt_transport_list;
 struct ltt_transport *ltt_transport_find(const char *name);
 
-#endif /* _UST_LTTNG_EVENTS_H */
+#endif /* _LTTNG_UST_EVENTS_H */
This page took 0.028641 seconds and 4 git commands to generate.