Add CTF enum type support for UST registry
[lttng-tools.git] / src / bin / lttng-sessiond / ust-registry.h
index b51b505f12994b0b8219b4efb846f32e2f5f5523..a8466ebf58c64c9260968e77a8e0573925f9b959 100644 (file)
@@ -45,6 +45,8 @@ struct ust_registry_session {
        uint32_t next_channel_id;
        /* Once this value reaches UINT32_MAX, no more id can be allocated. */
        uint32_t used_channel_id;
+       /* Next enumeration ID available. */
+       uint64_t next_enum_id;
        /* Universal unique identifier used by the tracer. */
        unsigned char uuid[UUID_LEN];
 
@@ -91,6 +93,9 @@ struct ust_registry_session {
        /* User and group owning the session. */
        uid_t uid;
        gid_t gid;
+
+       /* Enumerations table. */
+       struct lttng_ht *enums;
 };
 
 struct ust_registry_channel {
@@ -155,6 +160,17 @@ struct ust_registry_event {
        struct lttng_ht_node_u64 node;
 };
 
+struct ust_registry_enum {
+       char name[LTTNG_UST_SYM_NAME_LEN];
+       struct ustctl_enum_entry *entries;
+       size_t nr_entries;
+       uint64_t id;    /* enum id in session */
+       /* Enumeration node in session hash table. */
+       struct lttng_ht_node_str node;
+       /* For delayed reclaim. */
+       struct rcu_head rcu_head;
+};
+
 /*
  * Validate that the id has reached the maximum allowed or not.
  *
@@ -260,6 +276,13 @@ int ust_metadata_channel_statedump(struct ust_registry_session *session,
 int ust_metadata_event_statedump(struct ust_registry_session *session,
                struct ust_registry_channel *chan,
                struct ust_registry_event *event);
+int ust_registry_create_or_find_enum(struct ust_registry_session *session,
+               int session_objd, char *name,
+               struct ustctl_enum_entry *entries, size_t nr_entries,
+               uint64_t *enum_id);
+struct ust_registry_enum *
+       ust_registry_lookup_enum_by_id(struct ust_registry_session *session,
+               const char *name, uint64_t id);
 
 #else /* HAVE_LIBLTTNG_UST_CTL */
 
@@ -339,6 +362,21 @@ int ust_metadata_event_statedump(struct ust_registry_session *session,
 {
        return 0;
 }
+static inline
+int ust_registry_create_or_find_enum(struct ust_registry_session *session,
+               int session_objd, char *name,
+               struct ustctl_enum_entry *entries, size_t nr_entries,
+               uint64_t *enum_id)
+{
+       return 0;
+}
+static inline
+struct ust_registry_enum *
+       ust_registry_lookup_enum_by_id(struct ust_registry_session *session,
+               const char *name, uint64_t id)
+{
+       return NULL;
+}
 
 #endif /* HAVE_LIBLTTNG_UST_CTL */
 
This page took 0.025516 seconds and 5 git commands to generate.