Fix: use lttng_waiter instead of futex in notification thread
[lttng-tools.git] / src / bin / lttng-sessiond / ust-metadata.c
index e49f237437922c8b987ecb12898e89013ce31775..fb1f1152180aad9d714831a9dfc70e1ec2f2a4ee 100644 (file)
@@ -28,6 +28,7 @@
 #include <unistd.h>
 #include <inttypes.h>
 #include <common/common.h>
+#include <common/time.h>
 
 #include "ust-registry.h"
 #include "ust-clock.h"
@@ -37,7 +38,6 @@
 #define max_t(type, a, b)      ((type) ((a) > (b) ? (a) : (b)))
 #endif
 
-#define NSEC_PER_SEC                   1000000000ULL
 #define NR_CLOCK_OFFSET_SAMPLES                10
 
 struct offset_sample {
@@ -74,7 +74,6 @@ int fls(unsigned int x)
                r -= 2;
        }
        if (!(x & 0x80000000U)) {
-               x <<= 1;
                r -= 1;
        }
        return r;
@@ -262,6 +261,7 @@ int ust_metadata_enum_statedump(struct ust_registry_session *session,
        if (ret) {
                goto end;
        }
+       nesting++;
        /* Dump all entries */
        for (i = 0; i < nr_entries; i++) {
                const struct ustctl_enum_entry *entry = &entries[i];
@@ -299,24 +299,56 @@ int ust_metadata_enum_statedump(struct ust_registry_session *session,
                                goto end;
                        }
                }
-               ret = lttng_metadata_printf(session,
-                               "\" = ");
+               ret = lttng_metadata_printf(session, "\"");
                if (ret) {
                        goto end;
                }
-               if (entry->start == entry->end) {
-                       ret = lttng_metadata_printf(session,
-                                       "%d,\n",
-                                       entry->start);
+
+               if (entry->u.extra.options &
+                               USTCTL_UST_ENUM_ENTRY_OPTION_IS_AUTO) {
+                       ret = lttng_metadata_printf(session, ",\n");
+                       if (ret) {
+                               goto end;
+                       }
                } else {
                        ret = lttng_metadata_printf(session,
-                                       "%d ... %d,\n",
-                                       entry->start, entry->end);
-               }
-               if (ret) {
-                       goto end;
+                                       " = ");
+                       if (ret) {
+                               goto end;
+                       }
+
+                       if (entry->start.signedness) {
+                               ret = lttng_metadata_printf(session,
+                                       "%lld", (long long) entry->start.value);
+                       } else {
+                               ret = lttng_metadata_printf(session,
+                                       "%llu", entry->start.value);
+                       }
+                       if (ret) {
+                               goto end;
+                       }
+
+                       if (entry->start.signedness == entry->end.signedness &&
+                                       entry->start.value ==
+                                               entry->end.value) {
+                               ret = lttng_metadata_printf(session, ",\n");
+                       } else {
+                               if (entry->end.signedness) {
+                                       ret = lttng_metadata_printf(session,
+                                               " ... %lld,\n",
+                                               (long long) entry->end.value);
+                               } else {
+                                       ret = lttng_metadata_printf(session,
+                                               " ... %llu,\n",
+                                               entry->end.value);
+                               }
+                       }
+                       if (ret) {
+                               goto end;
+                       }
                }
        }
+       nesting--;
        sanitize_ctf_identifier(identifier, field_name);
        ret = print_tabs(session, nesting);
        if (ret) {
@@ -786,7 +818,7 @@ int measure_single_clock_offset(struct offset_sample *sample)
        int ret;
 
        monotonic[0] = trace_clock_read64();
-       ret = clock_gettime(CLOCK_REALTIME, &rts);
+       ret = lttng_clock_gettime(CLOCK_REALTIME, &rts);
        if (ret < 0) {
                return ret;
        }
This page took 0.025763 seconds and 4 git commands to generate.