summaryrefslogtreecommitdiffstats
path: root/cpukit/libtrace
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-08-26 14:58:54 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-08-29 10:07:02 +0200
commit58bd67bb358513e6523ee5f94d7df55332a3a7b2 (patch)
tree9fb7d5bcdc4d34286655acef2b5ceece5973f8a8 /cpukit/libtrace
parentscore: Add RTEMS_RETURN_ADDRESS() (diff)
downloadrtems-58bd67bb358513e6523ee5f94d7df55332a3a7b2.tar.bz2
record: Add more system events
Reduce the system dependencies to allow tracing of very low level functions, for example the interrupt disable/enable. Introduce general purpose RTEMS_RECORD_CALLER and RTEMS_RECORD_LINE events. Update #3665.
Diffstat (limited to 'cpukit/libtrace')
-rw-r--r--cpukit/libtrace/record/record-text.c128
-rw-r--r--cpukit/libtrace/record/record-util.c704
2 files changed, 768 insertions, 64 deletions
diff --git a/cpukit/libtrace/record/record-text.c b/cpukit/libtrace/record/record-text.c
index 5652ab051c..09f8d15d95 100644
--- a/cpukit/libtrace/record/record-text.c
+++ b/cpukit/libtrace/record/record-text.c
@@ -43,9 +43,21 @@ static const char * const event_text[] = {
[ RTEMS_RECORD_VERSION ] = "VERSION",
[ RTEMS_RECORD_ACCEPT_ENTRY ] = "ACCEPT_ENTRY",
[ RTEMS_RECORD_ACCEPT_EXIT ] = "ACCEPT_EXIT",
+ [ RTEMS_RECORD_ADDRESS ] = "ADDRESS",
+ [ RTEMS_RECORD_ARG_0 ] = "ARG_0",
+ [ RTEMS_RECORD_ARG_1 ] = "ARG_1",
+ [ RTEMS_RECORD_ARG_2 ] = "ARG_2",
+ [ RTEMS_RECORD_ARG_3 ] = "ARG_3",
+ [ RTEMS_RECORD_ARG_4 ] = "ARG_4",
+ [ RTEMS_RECORD_ARG_5 ] = "ARG_5",
+ [ RTEMS_RECORD_ARG_6 ] = "ARG_6",
+ [ RTEMS_RECORD_ARG_7 ] = "ARG_7",
+ [ RTEMS_RECORD_ARG_8 ] = "ARG_8",
+ [ RTEMS_RECORD_ARG_9 ] = "ARG_9",
[ RTEMS_RECORD_BIND_ENTRY ] = "BIND_ENTRY",
[ RTEMS_RECORD_BIND_EXIT ] = "BIND_EXIT",
[ RTEMS_RECORD_BUFFER ] = "BUFFER",
+ [ RTEMS_RECORD_CALLER ] = "CALLER",
[ RTEMS_RECORD_CHOWN_ENTRY ] = "CHOWN_ENTRY",
[ RTEMS_RECORD_CHOWN_EXIT ] = "CHOWN_EXIT",
[ RTEMS_RECORD_CLOSE_ENTRY ] = "CLOSE_ENTRY",
@@ -90,11 +102,21 @@ static const char * const event_text[] = {
[ RTEMS_RECORD_IP6_OUTPUT ] = "IP6_OUTPUT",
[ RTEMS_RECORD_IP_INPUT ] = "IP_INPUT",
[ RTEMS_RECORD_IP_OUTPUT ] = "IP_OUTPUT",
+ [ RTEMS_RECORD_ISR_DISABLE ] = "ISR_DISABLE",
+ [ RTEMS_RECORD_ISR_ENABLE ] = "ISR_ENABLE",
+ [ RTEMS_RECORD_ISR_LOCK_ACQUIRE_ENTRY ] = "ISR_LOCK_ACQUIRE_ENTRY",
+ [ RTEMS_RECORD_ISR_LOCK_ACQUIRE_EXIT ] = "ISR_LOCK_ACQUIRE_EXIT",
+ [ RTEMS_RECORD_ISR_LOCK_ADDRESS ] = "ISR_LOCK_ADDRESS",
+ [ RTEMS_RECORD_ISR_LOCK_DESTROY ] = "ISR_LOCK_DESTROY",
+ [ RTEMS_RECORD_ISR_LOCK_INITIALIZE ] = "ISR_LOCK_INITIALIZE",
+ [ RTEMS_RECORD_ISR_LOCK_NAME ] = "ISR_LOCK_NAME",
+ [ RTEMS_RECORD_ISR_LOCK_RELEASE ] = "ISR_LOCK_RELEASE",
[ RTEMS_RECORD_KEVENT_ENTRY ] = "KEVENT_ENTRY",
[ RTEMS_RECORD_KEVENT_EXIT ] = "KEVENT_EXIT",
[ RTEMS_RECORD_KQUEUE_ENTRY ] = "KQUEUE_ENTRY",
[ RTEMS_RECORD_KQUEUE_EXIT ] = "KQUEUE_EXIT",
[ RTEMS_RECORD_LENGTH ] = "LENGTH",
+ [ RTEMS_RECORD_LINE ] = "LINE",
[ RTEMS_RECORD_LINK_ENTRY ] = "LINK_ENTRY",
[ RTEMS_RECORD_LINK_EXIT ] = "LINK_EXIT",
[ RTEMS_RECORD_LISTEN_ENTRY ] = "LISTEN_ENTRY",
@@ -173,6 +195,26 @@ static const char * const event_text[] = {
[ RTEMS_RECORD_SBWAIT_EXIT ] = "SBWAIT_EXIT",
[ RTEMS_RECORD_SBWAKEUP_ENTRY ] = "SBWAKEUP_ENTRY",
[ RTEMS_RECORD_SBWAKEUP_EXIT ] = "SBWAKEUP_EXIT",
+ [ RTEMS_RECORD_SCHEDULER_ADD_PROCESSOR ] = "SCHEDULER_ADD_PROCESSOR",
+ [ RTEMS_RECORD_SCHEDULER_ASK_FOR_HELP ] = "SCHEDULER_ASK_FOR_HELP",
+ [ RTEMS_RECORD_SCHEDULER_BLOCK ] = "SCHEDULER_BLOCK",
+ [ RTEMS_RECORD_SCHEDULER_CANCEL_JOB ] = "SCHEDULER_CANCEL_JOB",
+ [ RTEMS_RECORD_SCHEDULER_ID ] = "SCHEDULER_ID",
+ [ RTEMS_RECORD_SCHEDULER_MAP_PRIORITY ] = "SCHEDULER_MAP_PRIORITY",
+ [ RTEMS_RECORD_SCHEDULER_NAME ] = "SCHEDULER_NAME",
+ [ RTEMS_RECORD_SCHEDULER_PIN ] = "SCHEDULER_PIN",
+ [ RTEMS_RECORD_SCHEDULER_RECONSIDER_HELP_REQUEST ] = "SCHEDULER_RECONSIDER_HELP_REQUEST",
+ [ RTEMS_RECORD_SCHEDULER_RELEASE_JOB ] = "SCHEDULER_RELEASE_JOB",
+ [ RTEMS_RECORD_SCHEDULER_REMOVE_PROCESSOR ] = "SCHEDULER_REMOVE_PROCESSOR",
+ [ RTEMS_RECORD_SCHEDULER_SCHEDULE ] = "SCHEDULER_SCHEDULE",
+ [ RTEMS_RECORD_SCHEDULER_SET_AFFINITY ] = "SCHEDULER_SET_AFFINITY",
+ [ RTEMS_RECORD_SCHEDULER_TICK ] = "SCHEDULER_TICK",
+ [ RTEMS_RECORD_SCHEDULER_UNBLOCK ] = "SCHEDULER_UNBLOCK",
+ [ RTEMS_RECORD_SCHEDULER_UNMAP_PRIORITY ] = "SCHEDULER_UNMAP_PRIORITY",
+ [ RTEMS_RECORD_SCHEDULER_UNPIN ] = "SCHEDULER_UNPIN",
+ [ RTEMS_RECORD_SCHEDULER_UPDATE_PRIORITY ] = "SCHEDULER_UPDATE_PRIORITY",
+ [ RTEMS_RECORD_SCHEDULER_WITHDRAW_NODE ] = "SCHEDULER_WITHDRAW_NODE",
+ [ RTEMS_RECORD_SCHEDULER_YIELD ] = "SCHEDULER_YIELD",
[ RTEMS_RECORD_SELECT_ENTRY ] = "SELECT_ENTRY",
[ RTEMS_RECORD_SELECT_EXIT ] = "SELECT_EXIT",
[ RTEMS_RECORD_SEND_ENTRY ] = "SEND_ENTRY",
@@ -231,8 +273,12 @@ static const char * const event_text[] = {
[ RTEMS_RECORD_TCP_INPUT ] = "TCP_INPUT",
[ RTEMS_RECORD_TCP_OUTPUT ] = "TCP_OUTPUT",
[ RTEMS_RECORD_THREAD_BEGIN ] = "THREAD_BEGIN",
+ [ RTEMS_RECORD_THREAD_CONTINUE_ENTRY ] = "THREAD_CONTINUE_ENTRY",
+ [ RTEMS_RECORD_THREAD_CONTINUE_EXIT ] = "THREAD_CONTINUE_EXIT",
[ RTEMS_RECORD_THREAD_CREATE ] = "THREAD_CREATE",
[ RTEMS_RECORD_THREAD_DELETE ] = "THREAD_DELETE",
+ [ RTEMS_RECORD_THREAD_DISPATCH_DISABLE ] = "THREAD_DISPATCH_DISABLE",
+ [ RTEMS_RECORD_THREAD_DISPATCH_ENABLE ] = "THREAD_DISPATCH_ENABLE",
[ RTEMS_RECORD_THREAD_EXIT ] = "THREAD_EXIT",
[ RTEMS_RECORD_THREAD_EXITTED ] = "THREAD_EXITTED",
[ RTEMS_RECORD_THREAD_ID ] = "THREAD_ID",
@@ -241,9 +287,14 @@ static const char * const event_text[] = {
[ RTEMS_RECORD_THREAD_PRIO_CURRENT_LOW ] = "THREAD_PRIO_CURRENT_LOW",
[ RTEMS_RECORD_THREAD_PRIO_REAL_HIGH ] = "THREAD_PRIO_REAL_HIGH",
[ RTEMS_RECORD_THREAD_PRIO_REAL_LOW ] = "THREAD_PRIO_REAL_LOW",
+ [ RTEMS_RECORD_THREAD_QUEUE_ADDRESS ] = "THREAD_QUEUE_ADDRESS",
+ [ RTEMS_RECORD_THREAD_QUEUE_DESTROY ] = "THREAD_QUEUE_DESTROY",
[ RTEMS_RECORD_THREAD_QUEUE_ENQUEUE ] = "THREAD_QUEUE_ENQUEUE",
[ RTEMS_RECORD_THREAD_QUEUE_ENQUEUE_STICKY ] = "THREAD_QUEUE_ENQUEUE_STICKY",
[ RTEMS_RECORD_THREAD_QUEUE_EXTRACT ] = "THREAD_QUEUE_EXTRACT",
+ [ RTEMS_RECORD_THREAD_QUEUE_ID ] = "THREAD_QUEUE_ID",
+ [ RTEMS_RECORD_THREAD_QUEUE_INITIALIZE ] = "THREAD_QUEUE_INITIALIZE",
+ [ RTEMS_RECORD_THREAD_QUEUE_NAME ] = "THREAD_QUEUE_NAME",
[ RTEMS_RECORD_THREAD_QUEUE_SURRENDER ] = "THREAD_QUEUE_SURRENDER",
[ RTEMS_RECORD_THREAD_QUEUE_SURRENDER_STICKY ] = "THREAD_QUEUE_SURRENDER_STICKY",
[ RTEMS_RECORD_THREAD_RESOURCE_OBTAIN ] = "THREAD_RESOURCE_OBTAIN",
@@ -258,6 +309,10 @@ static const char * const event_text[] = {
[ RTEMS_RECORD_THREAD_SWITCH_IN ] = "THREAD_SWITCH_IN",
[ RTEMS_RECORD_THREAD_SWITCH_OUT ] = "THREAD_SWITCH_OUT",
[ RTEMS_RECORD_THREAD_TERMINATE ] = "THREAD_TERMINATE",
+ [ RTEMS_RECORD_THREAD_TIMER_INSERT_MONOTONIC ] = "THREAD_TIMER_INSERT_MONOTONIC",
+ [ RTEMS_RECORD_THREAD_TIMER_INSERT_REALTIME ] = "THREAD_TIMER_INSERT_REALTIME",
+ [ RTEMS_RECORD_THREAD_TIMER_INSERT_TICKS ] = "THREAD_TIMER_INSERT_TICKS",
+ [ RTEMS_RECORD_THREAD_TIMER_REMOVE ] = "THREAD_TIMER_REMOVE",
[ RTEMS_RECORD_UDP_INPUT ] = "UDP_INPUT",
[ RTEMS_RECORD_UDP_OUTPUT ] = "UDP_OUTPUT",
[ RTEMS_RECORD_UMA_ALLOC_PTR ] = "UMA_ALLOC_PTR",
@@ -270,6 +325,14 @@ static const char * const event_text[] = {
[ RTEMS_RECORD_UNMOUNT_EXIT ] = "UNMOUNT_EXIT",
[ RTEMS_RECORD_UPTIME_HIGH ] = "UPTIME_HIGH",
[ RTEMS_RECORD_UPTIME_LOW ] = "UPTIME_LOW",
+ [ RTEMS_RECORD_WATCHDOG_ADDRESS ] = "WATCHDOG_ADDRESS",
+ [ RTEMS_RECORD_WATCHDOG_CPU ] = "WATCHDOG_CPU",
+ [ RTEMS_RECORD_WATCHDOG_INITIALIZE ] = "WATCHDOG_INITIALIZE",
+ [ RTEMS_RECORD_WATCHDOG_INSERT ] = "WATCHDOG_INSERT",
+ [ RTEMS_RECORD_WATCHDOG_PREINITIALIZE ] = "WATCHDOG_PREINITIALIZE",
+ [ RTEMS_RECORD_WATCHDOG_REMOVE ] = "WATCHDOG_REMOVE",
+ [ RTEMS_RECORD_WATCHDOG_ROUTINE ] = "WATCHDOG_ROUTINE",
+ [ RTEMS_RECORD_WATCHDOG_STATE ] = "WATCHDOG_STATE",
[ RTEMS_RECORD_WORKSPACE_ALLOC ] = "WORKSPACE_ALLOC",
[ RTEMS_RECORD_WORKSPACE_FREE ] = "WORKSPACE_FREE",
[ RTEMS_RECORD_WORKSPACE_SIZE ] = "WORKSPACE_SIZE",
@@ -278,70 +341,6 @@ static const char * const event_text[] = {
[ RTEMS_RECORD_WRITE_EXIT ] = "WRITE_EXIT",
[ RTEMS_RECORD_WRITEV_ENTRY ] = "WRITEV_ENTRY",
[ RTEMS_RECORD_WRITEV_EXIT ] = "WRITEV_EXIT",
- [ RTEMS_RECORD_SYSTEM_238 ] = "SYSTEM_238",
- [ RTEMS_RECORD_SYSTEM_239 ] = "SYSTEM_239",
- [ RTEMS_RECORD_SYSTEM_240 ] = "SYSTEM_240",
- [ RTEMS_RECORD_SYSTEM_241 ] = "SYSTEM_241",
- [ RTEMS_RECORD_SYSTEM_242 ] = "SYSTEM_242",
- [ RTEMS_RECORD_SYSTEM_243 ] = "SYSTEM_243",
- [ RTEMS_RECORD_SYSTEM_244 ] = "SYSTEM_244",
- [ RTEMS_RECORD_SYSTEM_245 ] = "SYSTEM_245",
- [ RTEMS_RECORD_SYSTEM_246 ] = "SYSTEM_246",
- [ RTEMS_RECORD_SYSTEM_247 ] = "SYSTEM_247",
- [ RTEMS_RECORD_SYSTEM_248 ] = "SYSTEM_248",
- [ RTEMS_RECORD_SYSTEM_249 ] = "SYSTEM_249",
- [ RTEMS_RECORD_SYSTEM_250 ] = "SYSTEM_250",
- [ RTEMS_RECORD_SYSTEM_251 ] = "SYSTEM_251",
- [ RTEMS_RECORD_SYSTEM_252 ] = "SYSTEM_252",
- [ RTEMS_RECORD_SYSTEM_253 ] = "SYSTEM_253",
- [ RTEMS_RECORD_SYSTEM_254 ] = "SYSTEM_254",
- [ RTEMS_RECORD_SYSTEM_255 ] = "SYSTEM_255",
- [ RTEMS_RECORD_SYSTEM_256 ] = "SYSTEM_256",
- [ RTEMS_RECORD_SYSTEM_257 ] = "SYSTEM_257",
- [ RTEMS_RECORD_SYSTEM_258 ] = "SYSTEM_258",
- [ RTEMS_RECORD_SYSTEM_259 ] = "SYSTEM_259",
- [ RTEMS_RECORD_SYSTEM_260 ] = "SYSTEM_260",
- [ RTEMS_RECORD_SYSTEM_261 ] = "SYSTEM_261",
- [ RTEMS_RECORD_SYSTEM_262 ] = "SYSTEM_262",
- [ RTEMS_RECORD_SYSTEM_263 ] = "SYSTEM_263",
- [ RTEMS_RECORD_SYSTEM_264 ] = "SYSTEM_264",
- [ RTEMS_RECORD_SYSTEM_265 ] = "SYSTEM_265",
- [ RTEMS_RECORD_SYSTEM_266 ] = "SYSTEM_266",
- [ RTEMS_RECORD_SYSTEM_267 ] = "SYSTEM_267",
- [ RTEMS_RECORD_SYSTEM_268 ] = "SYSTEM_268",
- [ RTEMS_RECORD_SYSTEM_269 ] = "SYSTEM_269",
- [ RTEMS_RECORD_SYSTEM_270 ] = "SYSTEM_270",
- [ RTEMS_RECORD_SYSTEM_271 ] = "SYSTEM_271",
- [ RTEMS_RECORD_SYSTEM_272 ] = "SYSTEM_272",
- [ RTEMS_RECORD_SYSTEM_273 ] = "SYSTEM_273",
- [ RTEMS_RECORD_SYSTEM_274 ] = "SYSTEM_274",
- [ RTEMS_RECORD_SYSTEM_275 ] = "SYSTEM_275",
- [ RTEMS_RECORD_SYSTEM_276 ] = "SYSTEM_276",
- [ RTEMS_RECORD_SYSTEM_277 ] = "SYSTEM_277",
- [ RTEMS_RECORD_SYSTEM_278 ] = "SYSTEM_278",
- [ RTEMS_RECORD_SYSTEM_279 ] = "SYSTEM_279",
- [ RTEMS_RECORD_SYSTEM_280 ] = "SYSTEM_280",
- [ RTEMS_RECORD_SYSTEM_281 ] = "SYSTEM_281",
- [ RTEMS_RECORD_SYSTEM_282 ] = "SYSTEM_282",
- [ RTEMS_RECORD_SYSTEM_283 ] = "SYSTEM_283",
- [ RTEMS_RECORD_SYSTEM_284 ] = "SYSTEM_284",
- [ RTEMS_RECORD_SYSTEM_285 ] = "SYSTEM_285",
- [ RTEMS_RECORD_SYSTEM_286 ] = "SYSTEM_286",
- [ RTEMS_RECORD_SYSTEM_287 ] = "SYSTEM_287",
- [ RTEMS_RECORD_SYSTEM_288 ] = "SYSTEM_288",
- [ RTEMS_RECORD_SYSTEM_289 ] = "SYSTEM_289",
- [ RTEMS_RECORD_SYSTEM_290 ] = "SYSTEM_290",
- [ RTEMS_RECORD_SYSTEM_291 ] = "SYSTEM_291",
- [ RTEMS_RECORD_SYSTEM_292 ] = "SYSTEM_292",
- [ RTEMS_RECORD_SYSTEM_293 ] = "SYSTEM_293",
- [ RTEMS_RECORD_SYSTEM_294 ] = "SYSTEM_294",
- [ RTEMS_RECORD_SYSTEM_295 ] = "SYSTEM_295",
- [ RTEMS_RECORD_SYSTEM_296 ] = "SYSTEM_296",
- [ RTEMS_RECORD_SYSTEM_297 ] = "SYSTEM_297",
- [ RTEMS_RECORD_SYSTEM_298 ] = "SYSTEM_298",
- [ RTEMS_RECORD_SYSTEM_299 ] = "SYSTEM_299",
- [ RTEMS_RECORD_SYSTEM_300 ] = "SYSTEM_300",
- [ RTEMS_RECORD_SYSTEM_301 ] = "SYSTEM_301",
[ RTEMS_RECORD_SYSTEM_302 ] = "SYSTEM_302",
[ RTEMS_RECORD_SYSTEM_303 ] = "SYSTEM_303",
[ RTEMS_RECORD_SYSTEM_304 ] = "SYSTEM_304",
@@ -551,6 +550,7 @@ static const char * const event_text[] = {
[ RTEMS_RECORD_SYSTEM_508 ] = "SYSTEM_508",
[ RTEMS_RECORD_SYSTEM_509 ] = "SYSTEM_509",
[ RTEMS_RECORD_SYSTEM_510 ] = "SYSTEM_510",
+ [ RTEMS_RECORD_SYSTEM_511 ] = "SYSTEM_511",
[ RTEMS_RECORD_USER_0 ] = "USER_0",
[ RTEMS_RECORD_USER_1 ] = "USER_1",
[ RTEMS_RECORD_USER_2 ] = "USER_2",
diff --git a/cpukit/libtrace/record/record-util.c b/cpukit/libtrace/record/record-util.c
new file mode 100644
index 0000000000..a7189b1716
--- /dev/null
+++ b/cpukit/libtrace/record/record-util.c
@@ -0,0 +1,704 @@
+/*
+ * 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.
+ */
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <rtems/record.h>
+
+void rtems_record_line( void )
+{
+ rtems_record_produce(
+ RTEMS_RECORD_LINE,
+ (rtems_record_data) RTEMS_RETURN_ADDRESS()
+ );
+}
+
+void rtems_record_line_2(
+ rtems_record_event event,
+ rtems_record_data data
+)
+{
+ rtems_record_produce_2(
+ RTEMS_RECORD_LINE,
+ (rtems_record_data) RTEMS_RETURN_ADDRESS(),
+ event,
+ data
+ );
+}
+
+void rtems_record_line_3(
+ rtems_record_event event_0,
+ rtems_record_data data_0,
+ rtems_record_event event_1,
+ rtems_record_data data_1
+)
+{
+ rtems_record_item items[ 3 ];
+
+ items[ 0 ].event = RTEMS_RECORD_LINE;
+ items[ 0 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 1 ].event = event_0;
+ items[ 1 ].data = data_0;
+ items[ 2 ].event = event_1;
+ items[ 2 ].data = data_1;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void rtems_record_line_arg( rtems_record_data data )
+{
+ rtems_record_produce_2(
+ RTEMS_RECORD_LINE,
+ (rtems_record_data) RTEMS_RETURN_ADDRESS(),
+ RTEMS_RECORD_ARG_0,
+ data
+ );
+}
+
+void rtems_record_line_arg_2(
+ rtems_record_data data_0,
+ rtems_record_data data_1
+)
+{
+ rtems_record_item items[ 3 ];
+
+ items[ 0 ].event = RTEMS_RECORD_LINE;
+ items[ 0 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 1 ].event = RTEMS_RECORD_ARG_0;
+ items[ 1 ].data = data_0;
+ items[ 2 ].event = RTEMS_RECORD_ARG_1;
+ items[ 2 ].data = data_1;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void rtems_record_line_arg_3(
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2
+)
+{
+ rtems_record_item items[ 4 ];
+
+ items[ 0 ].event = RTEMS_RECORD_LINE;
+ items[ 0 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 1 ].event = RTEMS_RECORD_ARG_0;
+ items[ 1 ].data = data_0;
+ items[ 2 ].event = RTEMS_RECORD_ARG_1;
+ items[ 2 ].data = data_1;
+ items[ 3 ].event = RTEMS_RECORD_ARG_2;
+ items[ 3 ].data = data_2;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void rtems_record_line_arg_4(
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2,
+ rtems_record_data data_3
+)
+{
+ rtems_record_item items[ 5 ];
+
+ items[ 0 ].event = RTEMS_RECORD_LINE;
+ items[ 0 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 1 ].event = RTEMS_RECORD_ARG_0;
+ items[ 1 ].data = data_0;
+ items[ 2 ].event = RTEMS_RECORD_ARG_1;
+ items[ 2 ].data = data_1;
+ items[ 3 ].event = RTEMS_RECORD_ARG_2;
+ items[ 3 ].data = data_2;
+ items[ 4 ].event = RTEMS_RECORD_ARG_3;
+ items[ 4 ].data = data_3;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void rtems_record_line_arg_5(
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2,
+ rtems_record_data data_3,
+ rtems_record_data data_4
+)
+{
+ rtems_record_item items[ 6 ];
+
+ items[ 0 ].event = RTEMS_RECORD_LINE;
+ items[ 0 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 1 ].event = RTEMS_RECORD_ARG_0;
+ items[ 1 ].data = data_0;
+ items[ 2 ].event = RTEMS_RECORD_ARG_1;
+ items[ 2 ].data = data_1;
+ items[ 3 ].event = RTEMS_RECORD_ARG_2;
+ items[ 3 ].data = data_2;
+ items[ 4 ].event = RTEMS_RECORD_ARG_3;
+ items[ 4 ].data = data_3;
+ items[ 5 ].event = RTEMS_RECORD_ARG_4;
+ items[ 5 ].data = data_4;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void rtems_record_line_arg_6(
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2,
+ rtems_record_data data_3,
+ rtems_record_data data_4,
+ rtems_record_data data_5
+)
+{
+ rtems_record_item items[ 7 ];
+
+ items[ 0 ].event = RTEMS_RECORD_LINE;
+ items[ 0 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 1 ].event = RTEMS_RECORD_ARG_0;
+ items[ 1 ].data = data_0;
+ items[ 2 ].event = RTEMS_RECORD_ARG_1;
+ items[ 2 ].data = data_1;
+ items[ 3 ].event = RTEMS_RECORD_ARG_2;
+ items[ 3 ].data = data_2;
+ items[ 4 ].event = RTEMS_RECORD_ARG_3;
+ items[ 4 ].data = data_3;
+ items[ 5 ].event = RTEMS_RECORD_ARG_4;
+ items[ 5 ].data = data_4;
+ items[ 6 ].event = RTEMS_RECORD_ARG_5;
+ items[ 6 ].data = data_5;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void rtems_record_line_arg_7(
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2,
+ rtems_record_data data_3,
+ rtems_record_data data_4,
+ rtems_record_data data_5,
+ rtems_record_data data_6
+)
+{
+ rtems_record_item items[ 8 ];
+
+ items[ 0 ].event = RTEMS_RECORD_LINE;
+ items[ 0 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 1 ].event = RTEMS_RECORD_ARG_0;
+ items[ 1 ].data = data_0;
+ items[ 2 ].event = RTEMS_RECORD_ARG_1;
+ items[ 2 ].data = data_1;
+ items[ 3 ].event = RTEMS_RECORD_ARG_2;
+ items[ 3 ].data = data_2;
+ items[ 4 ].event = RTEMS_RECORD_ARG_3;
+ items[ 4 ].data = data_3;
+ items[ 5 ].event = RTEMS_RECORD_ARG_4;
+ items[ 5 ].data = data_4;
+ items[ 6 ].event = RTEMS_RECORD_ARG_5;
+ items[ 6 ].data = data_5;
+ items[ 7 ].event = RTEMS_RECORD_ARG_6;
+ items[ 7 ].data = data_6;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void rtems_record_line_arg_8(
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2,
+ rtems_record_data data_3,
+ rtems_record_data data_4,
+ rtems_record_data data_5,
+ rtems_record_data data_6,
+ rtems_record_data data_7
+)
+{
+ rtems_record_item items[ 9 ];
+
+ items[ 0 ].event = RTEMS_RECORD_LINE;
+ items[ 0 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 1 ].event = RTEMS_RECORD_ARG_0;
+ items[ 1 ].data = data_0;
+ items[ 2 ].event = RTEMS_RECORD_ARG_1;
+ items[ 2 ].data = data_1;
+ items[ 3 ].event = RTEMS_RECORD_ARG_2;
+ items[ 3 ].data = data_2;
+ items[ 4 ].event = RTEMS_RECORD_ARG_3;
+ items[ 4 ].data = data_3;
+ items[ 5 ].event = RTEMS_RECORD_ARG_4;
+ items[ 5 ].data = data_4;
+ items[ 6 ].event = RTEMS_RECORD_ARG_5;
+ items[ 6 ].data = data_5;
+ items[ 7 ].event = RTEMS_RECORD_ARG_6;
+ items[ 7 ].data = data_6;
+ items[ 8 ].event = RTEMS_RECORD_ARG_7;
+ items[ 8 ].data = data_7;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void rtems_record_line_arg_9(
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2,
+ rtems_record_data data_3,
+ rtems_record_data data_4,
+ rtems_record_data data_5,
+ rtems_record_data data_6,
+ rtems_record_data data_7,
+ rtems_record_data data_8
+)
+{
+ rtems_record_item items[ 10 ];
+
+ items[ 0 ].event = RTEMS_RECORD_LINE;
+ items[ 0 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 1 ].event = RTEMS_RECORD_ARG_0;
+ items[ 1 ].data = data_0;
+ items[ 2 ].event = RTEMS_RECORD_ARG_1;
+ items[ 2 ].data = data_1;
+ items[ 3 ].event = RTEMS_RECORD_ARG_2;
+ items[ 3 ].data = data_2;
+ items[ 4 ].event = RTEMS_RECORD_ARG_3;
+ items[ 4 ].data = data_3;
+ items[ 5 ].event = RTEMS_RECORD_ARG_4;
+ items[ 5 ].data = data_4;
+ items[ 6 ].event = RTEMS_RECORD_ARG_5;
+ items[ 6 ].data = data_5;
+ items[ 7 ].event = RTEMS_RECORD_ARG_6;
+ items[ 7 ].data = data_6;
+ items[ 8 ].event = RTEMS_RECORD_ARG_7;
+ items[ 8 ].data = data_7;
+ items[ 9 ].event = RTEMS_RECORD_ARG_8;
+ items[ 9 ].data = data_8;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void rtems_record_line_arg_10(
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2,
+ rtems_record_data data_3,
+ rtems_record_data data_4,
+ rtems_record_data data_5,
+ rtems_record_data data_6,
+ rtems_record_data data_7,
+ rtems_record_data data_8,
+ rtems_record_data data_9
+)
+{
+ rtems_record_item items[ 11 ];
+
+ items[ 0 ].event = RTEMS_RECORD_LINE;
+ items[ 0 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 1 ].event = RTEMS_RECORD_ARG_0;
+ items[ 1 ].data = data_0;
+ items[ 2 ].event = RTEMS_RECORD_ARG_1;
+ items[ 2 ].data = data_1;
+ items[ 3 ].event = RTEMS_RECORD_ARG_2;
+ items[ 3 ].data = data_2;
+ items[ 4 ].event = RTEMS_RECORD_ARG_3;
+ items[ 4 ].data = data_3;
+ items[ 5 ].event = RTEMS_RECORD_ARG_4;
+ items[ 5 ].data = data_4;
+ items[ 6 ].event = RTEMS_RECORD_ARG_5;
+ items[ 6 ].data = data_5;
+ items[ 7 ].event = RTEMS_RECORD_ARG_6;
+ items[ 7 ].data = data_6;
+ items[ 8 ].event = RTEMS_RECORD_ARG_7;
+ items[ 8 ].data = data_7;
+ items[ 9 ].event = RTEMS_RECORD_ARG_8;
+ items[ 9 ].data = data_8;
+ items[ 10 ].event = RTEMS_RECORD_ARG_9;
+ items[ 10 ].data = data_9;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Caller( void *return_address )
+{
+ rtems_record_produce_2(
+ RTEMS_RECORD_CALLER,
+ (rtems_record_data) return_address,
+ RTEMS_RECORD_LINE,
+ (rtems_record_data) RTEMS_RETURN_ADDRESS()
+ );
+}
+
+void _Record_Caller_3(
+ void *return_address,
+ rtems_record_event event,
+ rtems_record_data data
+)
+{
+ rtems_record_item items[ 3 ];
+
+ items[ 0 ].event = RTEMS_RECORD_CALLER;
+ items[ 0 ].data = (rtems_record_data) return_address;
+ items[ 1 ].event = RTEMS_RECORD_LINE;
+ items[ 1 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 2 ].event = event;
+ items[ 2 ].data = data;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Caller_4(
+ void *return_address,
+ rtems_record_event event_0,
+ rtems_record_data data_0,
+ rtems_record_event event_1,
+ rtems_record_data data_1
+)
+{
+ rtems_record_item items[ 4 ];
+
+ items[ 0 ].event = RTEMS_RECORD_CALLER;
+ items[ 0 ].data = (rtems_record_data) return_address;
+ items[ 1 ].event = RTEMS_RECORD_LINE;
+ items[ 1 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 2 ].event = event_0;
+ items[ 2 ].data = data_0;
+ items[ 3 ].event = event_1;
+ items[ 3 ].data = data_1;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Caller_arg( void *return_address, rtems_record_data data )
+{
+ rtems_record_item items[ 3 ];
+
+ items[ 0 ].event = RTEMS_RECORD_CALLER;
+ items[ 0 ].data = (rtems_record_data) return_address;
+ items[ 1 ].event = RTEMS_RECORD_LINE;
+ items[ 1 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 2 ].event = RTEMS_RECORD_ARG_0;
+ items[ 2 ].data = data;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Caller_arg_2(
+ void *return_address,
+ rtems_record_data data_0,
+ rtems_record_data data_1
+)
+{
+ rtems_record_item items[ 4 ];
+
+ items[ 0 ].event = RTEMS_RECORD_CALLER;
+ items[ 0 ].data = (rtems_record_data) return_address;
+ items[ 1 ].event = RTEMS_RECORD_LINE;
+ items[ 1 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 2 ].event = RTEMS_RECORD_ARG_0;
+ items[ 2 ].data = data_0;
+ items[ 3 ].event = RTEMS_RECORD_ARG_1;
+ items[ 3 ].data = data_1;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Caller_arg_3(
+ void *return_address,
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2
+)
+{
+ rtems_record_item items[ 5 ];
+
+ items[ 0 ].event = RTEMS_RECORD_CALLER;
+ items[ 0 ].data = (rtems_record_data) return_address;
+ items[ 1 ].event = RTEMS_RECORD_LINE;
+ items[ 1 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 2 ].event = RTEMS_RECORD_ARG_0;
+ items[ 2 ].data = data_0;
+ items[ 3 ].event = RTEMS_RECORD_ARG_1;
+ items[ 3 ].data = data_1;
+ items[ 4 ].event = RTEMS_RECORD_ARG_2;
+ items[ 4 ].data = data_2;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Caller_arg_4(
+ void *return_address,
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2,
+ rtems_record_data data_3
+)
+{
+ rtems_record_item items[ 6 ];
+
+ items[ 0 ].event = RTEMS_RECORD_CALLER;
+ items[ 0 ].data = (rtems_record_data) return_address;
+ items[ 1 ].event = RTEMS_RECORD_LINE;
+ items[ 1 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 2 ].event = RTEMS_RECORD_ARG_0;
+ items[ 2 ].data = data_0;
+ items[ 3 ].event = RTEMS_RECORD_ARG_1;
+ items[ 3 ].data = data_1;
+ items[ 4 ].event = RTEMS_RECORD_ARG_2;
+ items[ 4 ].data = data_2;
+ items[ 5 ].event = RTEMS_RECORD_ARG_3;
+ items[ 5 ].data = data_3;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Caller_arg_5(
+ void *return_address,
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2,
+ rtems_record_data data_3,
+ rtems_record_data data_4
+)
+{
+ rtems_record_item items[ 7 ];
+
+ items[ 0 ].event = RTEMS_RECORD_CALLER;
+ items[ 0 ].data = (rtems_record_data) return_address;
+ items[ 1 ].event = RTEMS_RECORD_LINE;
+ items[ 1 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 2 ].event = RTEMS_RECORD_ARG_0;
+ items[ 2 ].data = data_0;
+ items[ 3 ].event = RTEMS_RECORD_ARG_1;
+ items[ 3 ].data = data_1;
+ items[ 4 ].event = RTEMS_RECORD_ARG_2;
+ items[ 4 ].data = data_2;
+ items[ 5 ].event = RTEMS_RECORD_ARG_3;
+ items[ 5 ].data = data_3;
+ items[ 6 ].event = RTEMS_RECORD_ARG_4;
+ items[ 6 ].data = data_4;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Caller_arg_6(
+ void *return_address,
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2,
+ rtems_record_data data_3,
+ rtems_record_data data_4,
+ rtems_record_data data_5
+)
+{
+ rtems_record_item items[ 8 ];
+
+ items[ 0 ].event = RTEMS_RECORD_CALLER;
+ items[ 0 ].data = (rtems_record_data) return_address;
+ items[ 1 ].event = RTEMS_RECORD_LINE;
+ items[ 1 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 2 ].event = RTEMS_RECORD_ARG_0;
+ items[ 2 ].data = data_0;
+ items[ 3 ].event = RTEMS_RECORD_ARG_1;
+ items[ 3 ].data = data_1;
+ items[ 4 ].event = RTEMS_RECORD_ARG_2;
+ items[ 4 ].data = data_2;
+ items[ 5 ].event = RTEMS_RECORD_ARG_3;
+ items[ 5 ].data = data_3;
+ items[ 6 ].event = RTEMS_RECORD_ARG_4;
+ items[ 6 ].data = data_4;
+ items[ 7 ].event = RTEMS_RECORD_ARG_5;
+ items[ 7 ].data = data_5;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Caller_arg_7(
+ void *return_address,
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2,
+ rtems_record_data data_3,
+ rtems_record_data data_4,
+ rtems_record_data data_5,
+ rtems_record_data data_6
+)
+{
+ rtems_record_item items[ 9 ];
+
+ items[ 0 ].event = RTEMS_RECORD_CALLER;
+ items[ 0 ].data = (rtems_record_data) return_address;
+ items[ 1 ].event = RTEMS_RECORD_LINE;
+ items[ 1 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 2 ].event = RTEMS_RECORD_ARG_0;
+ items[ 2 ].data = data_0;
+ items[ 3 ].event = RTEMS_RECORD_ARG_1;
+ items[ 3 ].data = data_1;
+ items[ 4 ].event = RTEMS_RECORD_ARG_2;
+ items[ 4 ].data = data_2;
+ items[ 5 ].event = RTEMS_RECORD_ARG_3;
+ items[ 5 ].data = data_3;
+ items[ 6 ].event = RTEMS_RECORD_ARG_4;
+ items[ 6 ].data = data_4;
+ items[ 7 ].event = RTEMS_RECORD_ARG_5;
+ items[ 7 ].data = data_5;
+ items[ 8 ].event = RTEMS_RECORD_ARG_6;
+ items[ 8 ].data = data_6;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Caller_arg_8(
+ void *return_address,
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2,
+ rtems_record_data data_3,
+ rtems_record_data data_4,
+ rtems_record_data data_5,
+ rtems_record_data data_6,
+ rtems_record_data data_7
+)
+{
+ rtems_record_item items[ 10 ];
+
+ items[ 0 ].event = RTEMS_RECORD_CALLER;
+ items[ 0 ].data = (rtems_record_data) return_address;
+ items[ 1 ].event = RTEMS_RECORD_LINE;
+ items[ 1 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 2 ].event = RTEMS_RECORD_ARG_0;
+ items[ 2 ].data = data_0;
+ items[ 3 ].event = RTEMS_RECORD_ARG_1;
+ items[ 3 ].data = data_1;
+ items[ 4 ].event = RTEMS_RECORD_ARG_2;
+ items[ 4 ].data = data_2;
+ items[ 5 ].event = RTEMS_RECORD_ARG_3;
+ items[ 5 ].data = data_3;
+ items[ 6 ].event = RTEMS_RECORD_ARG_4;
+ items[ 6 ].data = data_4;
+ items[ 7 ].event = RTEMS_RECORD_ARG_5;
+ items[ 7 ].data = data_5;
+ items[ 8 ].event = RTEMS_RECORD_ARG_6;
+ items[ 8 ].data = data_6;
+ items[ 9 ].event = RTEMS_RECORD_ARG_7;
+ items[ 9 ].data = data_7;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Caller_arg_9(
+ void *return_address,
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2,
+ rtems_record_data data_3,
+ rtems_record_data data_4,
+ rtems_record_data data_5,
+ rtems_record_data data_6,
+ rtems_record_data data_7,
+ rtems_record_data data_8
+)
+{
+ rtems_record_item items[ 11 ];
+
+ items[ 0 ].event = RTEMS_RECORD_CALLER;
+ items[ 0 ].data = (rtems_record_data) return_address;
+ items[ 1 ].event = RTEMS_RECORD_LINE;
+ items[ 1 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 2 ].event = RTEMS_RECORD_ARG_0;
+ items[ 2 ].data = data_0;
+ items[ 3 ].event = RTEMS_RECORD_ARG_1;
+ items[ 3 ].data = data_1;
+ items[ 4 ].event = RTEMS_RECORD_ARG_2;
+ items[ 4 ].data = data_2;
+ items[ 5 ].event = RTEMS_RECORD_ARG_3;
+ items[ 5 ].data = data_3;
+ items[ 6 ].event = RTEMS_RECORD_ARG_4;
+ items[ 6 ].data = data_4;
+ items[ 7 ].event = RTEMS_RECORD_ARG_5;
+ items[ 7 ].data = data_5;
+ items[ 8 ].event = RTEMS_RECORD_ARG_6;
+ items[ 8 ].data = data_6;
+ items[ 9 ].event = RTEMS_RECORD_ARG_7;
+ items[ 9 ].data = data_7;
+ items[ 10 ].event = RTEMS_RECORD_ARG_8;
+ items[ 10 ].data = data_8;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Caller_arg_10(
+ void *return_address,
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2,
+ rtems_record_data data_3,
+ rtems_record_data data_4,
+ rtems_record_data data_5,
+ rtems_record_data data_6,
+ rtems_record_data data_7,
+ rtems_record_data data_8,
+ rtems_record_data data_9
+)
+{
+ rtems_record_item items[ 12 ];
+
+ items[ 0 ].event = RTEMS_RECORD_CALLER;
+ items[ 0 ].data = (rtems_record_data) return_address;
+ items[ 1 ].event = RTEMS_RECORD_LINE;
+ items[ 1 ].data = (rtems_record_data) RTEMS_RETURN_ADDRESS();
+ items[ 2 ].event = RTEMS_RECORD_ARG_0;
+ items[ 2 ].data = data_0;
+ items[ 3 ].event = RTEMS_RECORD_ARG_1;
+ items[ 3 ].data = data_1;
+ items[ 4 ].event = RTEMS_RECORD_ARG_2;
+ items[ 4 ].data = data_2;
+ items[ 5 ].event = RTEMS_RECORD_ARG_3;
+ items[ 5 ].data = data_3;
+ items[ 6 ].event = RTEMS_RECORD_ARG_4;
+ items[ 6 ].data = data_4;
+ items[ 7 ].event = RTEMS_RECORD_ARG_5;
+ items[ 7 ].data = data_5;
+ items[ 8 ].event = RTEMS_RECORD_ARG_6;
+ items[ 8 ].data = data_6;
+ items[ 9 ].event = RTEMS_RECORD_ARG_7;
+ items[ 9 ].data = data_7;
+ items[ 10 ].event = RTEMS_RECORD_ARG_8;
+ items[ 10 ].data = data_8;
+ items[ 11 ].event = RTEMS_RECORD_ARG_9;
+ items[ 11 ].data = data_9;
+ rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+uint32_t rtems_record_interrupt_disable( void )
+{
+ uint32_t level;
+ rtems_record_context context;
+
+ _CPU_ISR_Disable( level );
+ rtems_record_prepare_critical( &context, _Per_CPU_Get() );
+ rtems_record_add(
+ &context,
+ RTEMS_RECORD_ISR_DISABLE,
+ (rtems_record_data) RTEMS_RETURN_ADDRESS()
+ );
+ rtems_record_commit_critical( &context );
+
+ return level;
+}
+
+void rtems_record_interrupt_enable( uint32_t level )
+{
+ rtems_record_context context;
+
+ rtems_record_prepare_critical( &context, _Per_CPU_Get() );
+ rtems_record_add(
+ &context,
+ RTEMS_RECORD_ISR_ENABLE,
+ (rtems_record_data) RTEMS_RETURN_ADDRESS()
+ );
+ rtems_record_commit_critical( &context );
+ _CPU_ISR_Enable( level );
+}