summaryrefslogtreecommitdiffstats
path: root/testsuites/libtests/record02/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'testsuites/libtests/record02/init.c')
-rw-r--r--testsuites/libtests/record02/init.c132
1 files changed, 132 insertions, 0 deletions
diff --git a/testsuites/libtests/record02/init.c b/testsuites/libtests/record02/init.c
new file mode 100644
index 0000000000..642d3d5422
--- /dev/null
+++ b/testsuites/libtests/record02/init.c
@@ -0,0 +1,132 @@
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (C) 2018, 2019 embedded brains GmbH
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <rtems/record.h>
+#include <rtems/recordclient.h>
+#include <rtems.h>
+
+#include <string.h>
+
+#include "tmacros.h"
+
+const char rtems_test_name[] = "RECORD 2";
+
+typedef struct {
+ rtems_record_client_context client;
+} test_context;
+
+static test_context test_instance;
+
+static rtems_record_client_status client_handler(
+ uint32_t seconds,
+ uint32_t nanoseconds,
+ uint32_t cpu,
+ rtems_record_event event,
+ uint64_t data,
+ void *arg
+)
+{
+ const char *event_text;
+
+ (void) arg;
+
+ if ( seconds != 0 && nanoseconds != 0 ) {
+ printf( "%" PRIu32 ".%09" PRIu32 ":", seconds, nanoseconds );
+ } else {
+ printf( "*:" );
+ }
+
+ event_text = rtems_record_event_text( event );
+
+ if ( event_text != NULL ) {
+ printf( "%" PRIu32 ":%s:%" PRIx64 "\n", cpu, event_text, data );
+ } else {
+ printf( "%" PRIu32 ":%i:%" PRIx64 "\n", cpu, event, data );
+ }
+
+ return RTEMS_RECORD_CLIENT_SUCCESS;
+}
+
+static void drain_visitor(
+ const rtems_record_item *items,
+ size_t count,
+ void *arg
+)
+{
+ test_context *ctx;
+ rtems_record_client_status cs;
+
+ ctx = arg;
+ cs = rtems_record_client_run(&ctx->client, items, count * sizeof(*items));
+ rtems_test_assert(cs == RTEMS_RECORD_CLIENT_SUCCESS);
+}
+
+static void Init(rtems_task_argument arg)
+{
+ test_context *ctx;
+ Record_Stream_header header;
+ rtems_record_client_status cs;
+ int i;
+
+ TEST_BEGIN();
+ ctx = &test_instance;
+
+ for (i = 0; i < 10; ++i) {
+ rtems_task_wake_after(1);
+ }
+
+ rtems_record_client_init(&ctx->client, client_handler, NULL);
+ _Record_Stream_header_initialize(&header);
+ cs = rtems_record_client_run(&ctx->client, &header, sizeof(header));
+ rtems_test_assert(cs == RTEMS_RECORD_CLIENT_SUCCESS);
+ rtems_record_drain(drain_visitor, ctx);
+
+ TEST_END();
+ rtems_test_exit(0);
+}
+
+#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+
+#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
+
+#define CONFIGURE_MAXIMUM_TASKS 1
+
+#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
+
+#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+#define CONFIGURE_RECORD_PER_PROCESSOR_ITEMS 128
+
+#define CONFIGURE_RECORD_EXTENSIONS_ENABLED
+
+#define CONFIGURE_INIT
+
+#include <rtems/confdefs.h>