Session create/release tested.
[lttng-ust.git] / libust / ltt-events.c
index e68b5a2cdc186b6c1b9232cab597e1fd781cb2f3..c99b6689200b3c8775569d8bafe05a1d1d088072 100644 (file)
 #include <uuid/uuid.h>
 #include <ust/tracepoint.h>
 #include <errno.h>
-#include "usterr_signal_safe.h"
+#include <sys/shm.h>
+#include <sys/ipc.h>
+#include <ust/lttng-events.h>
+#include <ust/usterr-signal-safe.h>
 #include "ust/core.h"
-#include "ltt-events.h"
 #include "ltt-tracer.h"
 #include "ust/wait.h"
+#include "../libringbuffer/shm.h"
 
 static CDS_LIST_HEAD(sessions);
 static CDS_LIST_HEAD(ltt_transport_list);
@@ -47,10 +50,10 @@ struct ltt_session *ltt_session_create(void)
 {
        struct ltt_session *session;
 
-       pthread_mutex_lock(&sessions_mutex);
        session = zmalloc(sizeof(struct ltt_session));
        if (!session)
                return NULL;
+       pthread_mutex_lock(&sessions_mutex);
        CDS_INIT_LIST_HEAD(&session->chan);
        CDS_INIT_LIST_HEAD(&session->events);
        uuid_generate(session->uuid);
@@ -194,8 +197,7 @@ struct ltt_channel *ltt_channel_create(struct ltt_session *session,
                                       void *buf_addr,
                                       size_t subbuf_size, size_t num_subbuf,
                                       unsigned int switch_timer_interval,
-                                      unsigned int read_timer_interval,
-                                      int *shmid)
+                                      unsigned int read_timer_interval)
 {
        struct ltt_channel *chan;
        struct ltt_transport *transport;
@@ -219,9 +221,9 @@ struct ltt_channel *ltt_channel_create(struct ltt_session *session,
         * headers. Therefore the "chan" information used as input
         * should be already accessible.
         */
-       chan->chan = transport->ops.channel_create("[lttng]", chan, buf_addr,
+       transport->ops.channel_create("[lttng]", chan, buf_addr,
                        subbuf_size, num_subbuf, switch_timer_interval,
-                       read_timer_interval, shmid);
+                       read_timer_interval);
        if (!chan->chan)
                goto create_error;
        chan->enabled = 1;
@@ -245,7 +247,7 @@ active:
 static
 void _ltt_channel_destroy(struct ltt_channel *chan)
 {
-       chan->ops->channel_destroy(chan->chan);
+       chan->ops->channel_destroy(chan);
        cds_list_del(&chan->list);
        lttng_destroy_context(chan->ctx);
        free(chan);
@@ -384,10 +386,10 @@ int lttng_metadata_printf(struct ltt_session *session,
 
        for (pos = 0; pos < len; pos += reserve_len) {
                reserve_len = min_t(size_t,
-                               chan->ops->packet_avail_size(chan->chan),
+                               chan->ops->packet_avail_size(chan->chan, chan->handle),
                                len - pos);
                lib_ring_buffer_ctx_init(&ctx, chan->chan, NULL, reserve_len,
-                                        sizeof(char), -1);
+                                        sizeof(char), -1, chan->handle);
                /*
                 * We don't care about metadata buffer's records lost
                 * count, because we always retry here. Report error if
@@ -435,7 +437,20 @@ int _ltt_field_statedump(struct ltt_session *session,
                                        ? "UTF8"
                                        : "ASCII",
                        field->type.u.basic.integer.base,
-#ifdef BIG_ENDIAN
+#ifdef __BIG_ENDIAN
+                       field->type.u.basic.integer.reverse_byte_order ? " byte_order = le;" : "",
+#else
+                       field->type.u.basic.integer.reverse_byte_order ? " byte_order = be;" : "",
+#endif
+                       field->name);
+               break;
+       case atype_float:
+               ret = lttng_metadata_printf(session,
+                       "               floating_point { exp_dig = %u; mant_dig = %u; align = %u; } %s;\n",
+                       field->type.u.basic._float.exp_dig,
+                       field->type.u.basic._float.mant_dig,
+                       field->type.u.basic._float.alignment,
+#ifdef __BIG_ENDIAN
                        field->type.u.basic.integer.reverse_byte_order ? " byte_order = le;" : "",
 #else
                        field->type.u.basic.integer.reverse_byte_order ? " byte_order = be;" : "",
@@ -464,7 +479,7 @@ int _ltt_field_statedump(struct ltt_session *session,
                                        ? "UTF8"
                                        : "ASCII",
                        elem_type->u.basic.integer.base,
-#ifdef BIG_ENDIAN
+#ifdef __BIG_ENDIAN
                        elem_type->u.basic.integer.reverse_byte_order ? " byte_order = le;" : "",
 #else
                        elem_type->u.basic.integer.reverse_byte_order ? " byte_order = be;" : "",
@@ -490,7 +505,7 @@ int _ltt_field_statedump(struct ltt_session *session,
                                        ? "UTF8"
                                        : "ASCII"),
                        length_type->u.basic.integer.base,
-#ifdef BIG_ENDIAN
+#ifdef __BIG_ENDIAN
                        length_type->u.basic.integer.reverse_byte_order ? " byte_order = le;" : "",
 #else
                        length_type->u.basic.integer.reverse_byte_order ? " byte_order = be;" : "",
@@ -510,7 +525,7 @@ int _ltt_field_statedump(struct ltt_session *session,
                                        ? "UTF8"
                                        : "ASCII"),
                        elem_type->u.basic.integer.base,
-#ifdef BIG_ENDIAN
+#ifdef __BIG_ENDIAN
                        elem_type->u.basic.integer.reverse_byte_order ? " byte_order = le;" : "",
 #else
                        elem_type->u.basic.integer.reverse_byte_order ? " byte_order = be;" : "",
@@ -737,8 +752,8 @@ int _ltt_event_header_declare(struct ltt_session *session)
        "               } extended;\n"
        "       } v;\n"
        "} align(%u);\n\n",
-       ltt_alignof(uint32_t) * CHAR_BIT,
-       ltt_alignof(uint16_t) * CHAR_BIT
+       lttng_alignof(uint32_t) * CHAR_BIT,
+       lttng_alignof(uint16_t) * CHAR_BIT
        );
 }
 
@@ -789,14 +804,14 @@ int _ltt_session_metadata_statedump(struct ltt_session *session)
                "               uint32_t stream_id;\n"
                "       };\n"
                "};\n\n",
-               ltt_alignof(uint8_t) * CHAR_BIT,
-               ltt_alignof(uint16_t) * CHAR_BIT,
-               ltt_alignof(uint32_t) * CHAR_BIT,
-               ltt_alignof(uint64_t) * CHAR_BIT,
+               lttng_alignof(uint8_t) * CHAR_BIT,
+               lttng_alignof(uint16_t) * CHAR_BIT,
+               lttng_alignof(uint32_t) * CHAR_BIT,
+               lttng_alignof(uint64_t) * CHAR_BIT,
                CTF_VERSION_MAJOR,
                CTF_VERSION_MINOR,
                uuid_s,
-#ifdef BIG_ENDIAN
+#ifdef __BIG_ENDIAN
                "be"
 #else
                "le"
@@ -855,8 +870,7 @@ void ltt_transport_unregister(struct ltt_transport *transport)
        pthread_mutex_unlock(&sessions_mutex);
 }
 
-static
-void __attribute__((destructor)) ltt_events_exit(void)
+void ltt_events_exit(void)
 {
        struct ltt_session *session, *tmpsession;
 
This page took 0.025628 seconds and 4 git commands to generate.