API refactoring: introduce probe context
[lttng-ust.git] / tests / compile / test-app-ctx / hello.c
index ec51263572090336db394eb90cbef9cef77b438e..85df998486c3c56f6d2a7980e9e4b88e97de75c5 100644 (file)
@@ -1,20 +1,8 @@
 /*
- * Copyright (C) 2009  Pierre-Marc Fournier
- * Copyright (C) 2011  Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+ * SPDX-License-Identifier: LGPL-2.1-only
  *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; version 2.1 of
- * the License.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ * Copyright (C) 2009 Pierre-Marc Fournier
+ * Copyright (C) 2011 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
  */
 
 #include <fcntl.h>
@@ -37,70 +25,73 @@ struct mmsghdr;
 #include <stdlib.h>
 #include <stdbool.h>
 
-#define TRACEPOINT_DEFINE
+#define LTTNG_UST_TRACEPOINT_DEFINE
 #include "ust_tests_hello.h"
 
-/* Internal header. */
 #include <lttng/ust-events.h>
-#include <lttng/ringbuffer-config.h>
-#include <lttng/ust-context-provider.h>
+#include <lttng/ust-ringbuffer-context.h>
+/* Internal header. */
+#include <common/ust-context-provider.h>
 
 static __thread unsigned int test_count;
 
+static
 void test_inc_count(void)
 {
        test_count++;
 }
 
 static
-size_t test_get_size(struct lttng_ctx_field *field, size_t offset)
+size_t test_get_size(void *priv __attribute__((unused)),
+                    struct lttng_ust_probe_ctx *probe_ctx __attribute__((unused)),
+                    size_t offset)
 {
        int sel = test_count % _NR_LTTNG_UST_DYNAMIC_TYPES;
        size_t size = 0;
 
-       size += lib_ring_buffer_align(offset, lttng_alignof(char));
+       size += lttng_ust_ring_buffer_align(offset, lttng_ust_rb_alignof(char));
        size += sizeof(char);           /* tag */
        switch (sel) {
        case LTTNG_UST_DYNAMIC_TYPE_NONE:
                break;
        case LTTNG_UST_DYNAMIC_TYPE_S8:
-               size += lib_ring_buffer_align(offset, lttng_alignof(int8_t));
+               size += lttng_ust_ring_buffer_align(offset, lttng_ust_rb_alignof(int8_t));
                size += sizeof(int8_t);         /* variant */
                break;
        case LTTNG_UST_DYNAMIC_TYPE_S16:
-               size += lib_ring_buffer_align(offset, lttng_alignof(int16_t));
+               size += lttng_ust_ring_buffer_align(offset, lttng_ust_rb_alignof(int16_t));
                size += sizeof(int16_t);        /* variant */
                break;
        case LTTNG_UST_DYNAMIC_TYPE_S32:
-               size += lib_ring_buffer_align(offset, lttng_alignof(int32_t));
+               size += lttng_ust_ring_buffer_align(offset, lttng_ust_rb_alignof(int32_t));
                size += sizeof(int32_t);        /* variant */
                break;
        case LTTNG_UST_DYNAMIC_TYPE_S64:
-               size += lib_ring_buffer_align(offset, lttng_alignof(int64_t));
+               size += lttng_ust_ring_buffer_align(offset, lttng_ust_rb_alignof(int64_t));
                size += sizeof(int64_t);        /* variant */
                break;
        case LTTNG_UST_DYNAMIC_TYPE_U8:
-               size += lib_ring_buffer_align(offset, lttng_alignof(uint8_t));
+               size += lttng_ust_ring_buffer_align(offset, lttng_ust_rb_alignof(uint8_t));
                size += sizeof(uint8_t);                /* variant */
                break;
        case LTTNG_UST_DYNAMIC_TYPE_U16:
-               size += lib_ring_buffer_align(offset, lttng_alignof(uint16_t));
+               size += lttng_ust_ring_buffer_align(offset, lttng_ust_rb_alignof(uint16_t));
                size += sizeof(uint16_t);       /* variant */
                break;
        case LTTNG_UST_DYNAMIC_TYPE_U32:
-               size += lib_ring_buffer_align(offset, lttng_alignof(uint32_t));
+               size += lttng_ust_ring_buffer_align(offset, lttng_ust_rb_alignof(uint32_t));
                size += sizeof(uint32_t);       /* variant */
                break;
        case LTTNG_UST_DYNAMIC_TYPE_U64:
-               size += lib_ring_buffer_align(offset, lttng_alignof(uint64_t));
+               size += lttng_ust_ring_buffer_align(offset, lttng_ust_rb_alignof(uint64_t));
                size += sizeof(uint64_t);       /* variant */
                break;
        case LTTNG_UST_DYNAMIC_TYPE_FLOAT:
-               size += lib_ring_buffer_align(offset, lttng_alignof(float));
+               size += lttng_ust_ring_buffer_align(offset, lttng_ust_rb_alignof(float));
                size += sizeof(float);          /* variant */
                break;
        case LTTNG_UST_DYNAMIC_TYPE_DOUBLE:
-               size += lib_ring_buffer_align(offset, lttng_alignof(double));
+               size += lttng_ust_ring_buffer_align(offset, lttng_ust_rb_alignof(double));
                size += sizeof(double);         /* variant */
                break;
        case LTTNG_UST_DYNAMIC_TYPE_STRING:
@@ -114,15 +105,15 @@ size_t test_get_size(struct lttng_ctx_field *field, size_t offset)
 }
 
 static
-void test_record(struct lttng_ctx_field *field,
-                struct lttng_ust_lib_ring_buffer_ctx *ctx,
-                struct lttng_channel *chan)
+void test_record(void *priv __attribute__((unused)),
+                struct lttng_ust_probe_ctx *probe_ctx __attribute__((unused)),
+                struct lttng_ust_ring_buffer_ctx *ctx,
+                struct lttng_ust_channel_buffer *lttng_chan_buf)
 {
        int sel = test_count % _NR_LTTNG_UST_DYNAMIC_TYPES;
        char sel_char = (char) sel;
 
-       lib_ring_buffer_align_ctx(ctx, lttng_alignof(char));
-       chan->ops->event_write(ctx, &sel_char, sizeof(sel_char));
+       lttng_chan_buf->ops->event_write(ctx, &sel_char, sizeof(sel_char), lttng_ust_rb_alignof(char));
        switch (sel) {
        case LTTNG_UST_DYNAMIC_TYPE_NONE:
                break;
@@ -130,86 +121,76 @@ void test_record(struct lttng_ctx_field *field,
        {
                int8_t v = -8;
 
-               lib_ring_buffer_align_ctx(ctx, lttng_alignof(v));
-               chan->ops->event_write(ctx, &v, sizeof(v));
+               lttng_chan_buf->ops->event_write(ctx, &v, sizeof(v), lttng_ust_rb_alignof(v));
                break;
        }
        case LTTNG_UST_DYNAMIC_TYPE_S16:
        {
                int16_t v = -16;
 
-               lib_ring_buffer_align_ctx(ctx, lttng_alignof(v));
-               chan->ops->event_write(ctx, &v, sizeof(v));
+               lttng_chan_buf->ops->event_write(ctx, &v, sizeof(v), lttng_ust_rb_alignof(v));
                break;
        }
        case LTTNG_UST_DYNAMIC_TYPE_S32:
        {
                int32_t v = -32;
 
-               lib_ring_buffer_align_ctx(ctx, lttng_alignof(v));
-               chan->ops->event_write(ctx, &v, sizeof(v));
+               lttng_chan_buf->ops->event_write(ctx, &v, sizeof(v), lttng_ust_rb_alignof(v));
                break;
        }
        case LTTNG_UST_DYNAMIC_TYPE_S64:
        {
                int64_t v = -64;
 
-               lib_ring_buffer_align_ctx(ctx, lttng_alignof(v));
-               chan->ops->event_write(ctx, &v, sizeof(v));
+               lttng_chan_buf->ops->event_write(ctx, &v, sizeof(v), lttng_ust_rb_alignof(v));
                break;
        }
        case LTTNG_UST_DYNAMIC_TYPE_U8:
        {
                uint8_t v = 8;
 
-               lib_ring_buffer_align_ctx(ctx, lttng_alignof(v));
-               chan->ops->event_write(ctx, &v, sizeof(v));
+               lttng_chan_buf->ops->event_write(ctx, &v, sizeof(v), lttng_ust_rb_alignof(v));
                break;
        }
        case LTTNG_UST_DYNAMIC_TYPE_U16:
        {
                uint16_t v = 16;
 
-               lib_ring_buffer_align_ctx(ctx, lttng_alignof(v));
-               chan->ops->event_write(ctx, &v, sizeof(v));
+               lttng_chan_buf->ops->event_write(ctx, &v, sizeof(v), lttng_ust_rb_alignof(v));
                break;
        }
        case LTTNG_UST_DYNAMIC_TYPE_U32:
        {
                uint32_t v = 32;
 
-               lib_ring_buffer_align_ctx(ctx, lttng_alignof(v));
-               chan->ops->event_write(ctx, &v, sizeof(v));
+               lttng_chan_buf->ops->event_write(ctx, &v, sizeof(v), lttng_ust_rb_alignof(v));
                break;
        }
        case LTTNG_UST_DYNAMIC_TYPE_U64:
        {
                uint64_t v = 64;
 
-               lib_ring_buffer_align_ctx(ctx, lttng_alignof(v));
-               chan->ops->event_write(ctx, &v, sizeof(v));
+               lttng_chan_buf->ops->event_write(ctx, &v, sizeof(v), lttng_ust_rb_alignof(v));
                break;
        }
        case LTTNG_UST_DYNAMIC_TYPE_FLOAT:
        {
                float f = 22322.0;
 
-               lib_ring_buffer_align_ctx(ctx, lttng_alignof(f));
-               chan->ops->event_write(ctx, &f, sizeof(f));
+               lttng_chan_buf->ops->event_write(ctx, &f, sizeof(f), lttng_ust_rb_alignof(f));
                break;
        }
        case LTTNG_UST_DYNAMIC_TYPE_DOUBLE:
        {
                double d = 2.0;
 
-               lib_ring_buffer_align_ctx(ctx, lttng_alignof(d));
-               chan->ops->event_write(ctx, &d, sizeof(d));
+               lttng_chan_buf->ops->event_write(ctx, &d, sizeof(d), lttng_ust_rb_alignof(d));
                break;
        }
        case LTTNG_UST_DYNAMIC_TYPE_STRING:
        {
                const char *str = "teststr";
-               chan->ops->event_write(ctx, str, strlen(str) + 1);
+               lttng_chan_buf->ops->event_write(ctx, str, strlen(str) + 1, 1);
                break;
        }
        default:
@@ -218,8 +199,9 @@ void test_record(struct lttng_ctx_field *field,
 }
 
 static
-void test_get_value(struct lttng_ctx_field *field,
-               struct lttng_ctx_value *value)
+void test_get_value(void *priv __attribute__((unused)),
+               struct lttng_ust_probe_ctx *probe_ctx __attribute__((unused)),
+               struct lttng_ust_ctx_value *value)
 {
        int sel = test_count % _NR_LTTNG_UST_DYNAMIC_TYPES;
 
@@ -265,19 +247,23 @@ void test_get_value(struct lttng_ctx_field *field,
        }
 }
 
+static char myprovider_name[] = "$app.myprovider";
 struct lttng_ust_context_provider myprovider = {
-       .name = "$app.myprovider",
+       .struct_size = sizeof(struct lttng_ust_context_provider),
+       .name = myprovider_name,
        .get_size = test_get_size,
        .record = test_record,
        .get_value = test_get_value,
 };
 
-void inthandler(int sig)
+static
+void inthandler(int sig __attribute__((unused)))
 {
        printf("in SIGUSR1 handler\n");
-       tracepoint(ust_tests_hello, tptest_sighandler);
+       lttng_ust_tracepoint(ust_tests_hello, tptest_sighandler);
 }
 
+static
 int init_int_handler(void)
 {
        int result;
@@ -305,10 +291,9 @@ int init_int_handler(void)
        return 0;
 }
 
-void test_inc_count(void);
-
 int main(int argc, char **argv)
 {
+       struct lttng_ust_registered_context_provider *reg_provider;
        int i, netint;
        long values[] = { 1, 2, 3 };
        char text[10] = "test";
@@ -322,7 +307,8 @@ int main(int argc, char **argv)
        if (argc == 2)
                delay = atoi(argv[1]);
 
-       if (lttng_ust_context_provider_register(&myprovider))
+       reg_provider = lttng_ust_context_provider_register(&myprovider);
+       if (!reg_provider)
                abort();
 
        fprintf(stderr, "Hello, World!\n");
@@ -332,12 +318,12 @@ int main(int argc, char **argv)
        fprintf(stderr, "Tracing... ");
        for (i = 0; i < 1000000; i++) {
                netint = htonl(i);
-               tracepoint(ust_tests_hello, tptest, i, netint, values,
+               lttng_ust_tracepoint(ust_tests_hello, tptest, i, netint, values,
                           text, strlen(text), dbl, flt, mybool);
                test_inc_count();
                //usleep(100000);
        }
-       lttng_ust_context_provider_unregister(&myprovider);
+       lttng_ust_context_provider_unregister(reg_provider);
        fprintf(stderr, " done.\n");
        return 0;
 }
This page took 0.028489 seconds and 4 git commands to generate.