[rtems commit] record: Add system events

Sebastian Huber sebh at rtems.org
Fri Aug 30 13:03:44 UTC 2019


Module:    rtems
Branch:    master
Commit:    1c72ad73ae2a2ee74a33edd1f8b6303444c76d01
Changeset: http://git.rtems.org/rtems/commit/?id=1c72ad73ae2a2ee74a33edd1f8b6303444c76d01

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Fri Aug 30 13:22:54 2019 +0200

record: Add system events

Add system events for memory allocation/free.

Update #3665.

---

 cpukit/include/rtems/record.h        | 907 +++++++++++++++++++++++++++++++++--
 cpukit/include/rtems/recorddata.h    |  62 +--
 cpukit/libtrace/record/record-text.c |  60 +--
 cpukit/libtrace/record/record-util.c | 540 +++++++++++++++++++++
 testsuites/libtests/record02/init.c  |  22 +
 5 files changed, 1489 insertions(+), 102 deletions(-)

diff --git a/cpukit/include/rtems/record.h b/cpukit/include/rtems/record.h
index f400f02..4e1c469 100644
--- a/cpukit/include/rtems/record.h
+++ b/cpukit/include/rtems/record.h
@@ -281,6 +281,204 @@ void _Record_Caller_arg_10(
   rtems_record_data  data_9
 );
 
+void _Record_Entry_2(
+  void               *return_address,
+  rtems_record_event  event,
+  rtems_record_data   data_0,
+  rtems_record_data   data_1
+);
+
+void _Record_Entry_3(
+  void               *return_address,
+  rtems_record_event  event,
+  rtems_record_data   data_0,
+  rtems_record_data   data_1,
+  rtems_record_data   data_2
+);
+
+void _Record_Entry_4(
+  void               *return_address,
+  rtems_record_event  event,
+  rtems_record_data   data_0,
+  rtems_record_data   data_1,
+  rtems_record_data   data_2,
+  rtems_record_data   data_3
+);
+
+void _Record_Entry_5(
+  void               *return_address,
+  rtems_record_event  event,
+  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
+);
+
+void _Record_Entry_6(
+  void               *return_address,
+  rtems_record_event  event,
+  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
+);
+
+void _Record_Entry_7(
+  void               *return_address,
+  rtems_record_event  event,
+  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
+);
+
+void _Record_Entry_8(
+  void               *return_address,
+  rtems_record_event  event,
+  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
+);
+
+void _Record_Entry_9(
+  void               *return_address,
+  rtems_record_event  event,
+  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
+);
+
+void _Record_Entry_10(
+  void               *return_address,
+  rtems_record_event  event,
+  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
+);
+
+void _Record_Exit_2(
+  void               *return_address,
+  rtems_record_event  event,
+  rtems_record_data   data_0,
+  rtems_record_data   data_1
+);
+
+void _Record_Exit_3(
+  void               *return_address,
+  rtems_record_event  event,
+  rtems_record_data   data_0,
+  rtems_record_data   data_1,
+  rtems_record_data   data_2
+);
+
+void _Record_Exit_4(
+  void               *return_address,
+  rtems_record_event  event,
+  rtems_record_data   data_0,
+  rtems_record_data   data_1,
+  rtems_record_data   data_2,
+  rtems_record_data   data_3
+);
+
+void _Record_Exit_5(
+  void               *return_address,
+  rtems_record_event  event,
+  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
+);
+
+void _Record_Exit_6(
+  void               *return_address,
+  rtems_record_event  event,
+  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
+);
+
+void _Record_Exit_7(
+  void               *return_address,
+  rtems_record_event  event,
+  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
+);
+
+void _Record_Exit_8(
+  void               *return_address,
+  rtems_record_event  event,
+  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
+);
+
+void _Record_Exit_9(
+  void               *return_address,
+  rtems_record_event  event,
+  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
+);
+
+void _Record_Exit_10(
+  void               *return_address,
+  rtems_record_event  event,
+  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
+);
+
 /**
  * @addtogroup RTEMSRecord
  *
@@ -686,7 +884,6 @@ void rtems_record_line_arg_10(
  * The RTEMS_RECORD_LINE event data is the address of the call to
  * rtems_record_caller().
  */
-
 #define rtems_record_caller() _Record_Caller( RTEMS_RETURN_ADDRESS() )
 
 /**
@@ -854,12 +1051,12 @@ void rtems_record_line_arg_10(
  * @param data_5 The RTEMS_RECORD_ARG_5 event data.
  */
 #define rtems_record_caller_arg_6( \
- data_0, \
- data_1, \
- data_2, \
- data_3, \
- data_4, \
- data_5 \
+  data_0, \
+  data_1, \
+  data_2, \
+  data_3, \
+  data_4, \
+  data_5 \
 ) \
   _Record_Caller_arg_6( \
     RTEMS_RETURN_ADDRESS(), \
@@ -890,13 +1087,13 @@ void rtems_record_line_arg_10(
  * @param data_6 The RTEMS_RECORD_ARG_6 event data.
  */
 #define rtems_record_caller_arg_7( \
- data_0, \
- data_1, \
- data_2, \
- data_3, \
- data_4, \
- data_5, \
- data_6 \
+  data_0, \
+  data_1, \
+  data_2, \
+  data_3, \
+  data_4, \
+  data_5, \
+  data_6 \
 ) \
   _Record_Caller_arg_7( \
     RTEMS_RETURN_ADDRESS(), \
@@ -929,14 +1126,14 @@ void rtems_record_line_arg_10(
  * @param data_7 The RTEMS_RECORD_ARG_7 event data.
  */
 #define rtems_record_caller_arg_8( \
- data_0, \
- data_1, \
- data_2, \
- data_3, \
- data_4, \
- data_5, \
- data_6, \
- data_7 \
+  data_0, \
+  data_1, \
+  data_2, \
+  data_3, \
+  data_4, \
+  data_5, \
+  data_6, \
+  data_7 \
 ) \
   _Record_Caller_arg_8( \
     RTEMS_RETURN_ADDRESS(), \
@@ -971,15 +1168,15 @@ void rtems_record_line_arg_10(
  * @param data_8 The RTEMS_RECORD_ARG_8 event data.
  */
 #define rtems_record_caller_arg_9( \
- data_0, \
- data_1, \
- data_2, \
- data_3, \
- data_4, \
- data_5, \
- data_6, \
- data_7, \
- data_8 \
+  data_0, \
+  data_1, \
+  data_2, \
+  data_3, \
+  data_4, \
+  data_5, \
+  data_6, \
+  data_7, \
+  data_8 \
 ) \
   _Record_Caller_arg_9( \
     RTEMS_RETURN_ADDRESS(), \
@@ -1016,16 +1213,16 @@ void rtems_record_line_arg_10(
  * @param data_10 The RTEMS_RECORD_ARG_10 event data.
  */
 #define rtems_record_caller_arg_10( \
- data_0, \
- data_1, \
- data_2, \
- data_3, \
- data_4, \
- data_5, \
- data_6, \
- data_7, \
- data_8, \
- data_9 \
+  data_0, \
+  data_1, \
+  data_2, \
+  data_3, \
+  data_4, \
+  data_5, \
+  data_6, \
+  data_7, \
+  data_8, \
+  data_9 \
 ) \
   _Record_Caller_arg_10( \
     RTEMS_RETURN_ADDRESS(), \
@@ -1042,6 +1239,634 @@ void rtems_record_line_arg_10(
   )
 
 /**
+ * @brief Generates the specified entry event.
+ *
+ * The event data of the specified entry event is the return address of the
+ * function calling rtems_record_entry().
+ *
+ * @param event The entry event.
+ */
+#define rtems_record_entry( event ) \
+  rtems_record_produce( event, (rtems_record_data) RTEMS_RETURN_ADDRESS() )
+
+/**
+ * @brief Generates the specified entry event and an argument event.
+ *
+ * The event data of the specified entry event is the return address of the
+ * function calling rtems_record_entry_1().
+ *
+ * @param event The entry event.
+ * @param data The RTEMS_RECORD_ARG_0 event data.
+ */
+#define rtems_record_entry_1( event, data ) \
+  rtems_record_produce_2( \
+    event, \
+    (rtems_record_data) RTEMS_RETURN_ADDRESS(), \
+    RTEMS_RECORD_ARG_0, \
+    data \
+  )
+
+/**
+ * @brief Generates the specified entry event and two argument events.
+ *
+ * The event data of the specified entry event is the return address of the
+ * function calling rtems_record_entry_2().
+ *
+ * @param event The entry event.
+ * @param data_0 The RTEMS_RECORD_ARG_0 event data.
+ * @param data_1 The RTEMS_RECORD_ARG_1 event data.
+ */
+#define rtems_record_entry_2( event, data_0, data_1 ) \
+  _Record_Entry_2( RTEMS_RETURN_ADDRESS(), event, data_0, data_1 )
+
+/**
+ * @brief Generates the specified entry event and three argument events.
+ *
+ * The event data of the specified entry event is the return address of the
+ * function calling rtems_record_entry_3().
+ *
+ * @param event The entry event.
+ * @param data_0 The RTEMS_RECORD_ARG_0 event data.
+ * @param data_1 The RTEMS_RECORD_ARG_1 event data.
+ * @param data_2 The RTEMS_RECORD_ARG_2 event data.
+ */
+#define rtems_record_entry_3( event, data_0, data_1, data_2 ) \
+  _Record_Entry_3( \
+    RTEMS_RETURN_ADDRESS(), \
+    event, \
+    data_0, \
+    data_1, \
+    data_2 \
+  )
+
+/**
+ * @brief Generates the specified entry event and four argument events.
+ *
+ * The event data of the specified entry event is the return address of the
+ * function calling rtems_record_entry_4().
+ *
+ * @param event The entry event.
+ * @param data_0 The RTEMS_RECORD_ARG_0 event data.
+ * @param data_1 The RTEMS_RECORD_ARG_1 event data.
+ * @param data_2 The RTEMS_RECORD_ARG_2 event data.
+ * @param data_3 The RTEMS_RECORD_ARG_3 event data.
+ */
+#define rtems_record_entry_4( event, data_0, data_1, data_2, data_3 ) \
+  _Record_Entry_4( \
+    RTEMS_RETURN_ADDRESS(), \
+    event, \
+    data_0, \
+    data_1, \
+    data_2, \
+    data_3 \
+  )
+
+/**
+ * @brief Generates the specified entry event and five argument events.
+ *
+ * The event data of the specified entry event is the return address of the
+ * function calling rtems_record_entry_5().
+ *
+ * @param event The entry event.
+ * @param data_0 The RTEMS_RECORD_ARG_0 event data.
+ * @param data_1 The RTEMS_RECORD_ARG_1 event data.
+ * @param data_2 The RTEMS_RECORD_ARG_2 event data.
+ * @param data_3 The RTEMS_RECORD_ARG_3 event data.
+ * @param data_4 The RTEMS_RECORD_ARG_4 event data.
+ */
+#define rtems_record_entry_5( \
+  event, \
+  data_0, \
+  data_1, \
+  data_2, \
+  data_3, \
+  data_4 \
+) \
+  _Record_Entry_5( \
+    RTEMS_RETURN_ADDRESS(), \
+    event, \
+    data_0, \
+    data_1, \
+    data_2, \
+    data_3, \
+    data_4 \
+  )
+
+/**
+ * @brief Generates the specified entry event and six argument events.
+ *
+ * The event data of the specified entry event is the return address of the
+ * function calling rtems_record_entry_6().
+ *
+ * @param event The entry event.
+ * @param data_0 The RTEMS_RECORD_ARG_0 event data.
+ * @param data_1 The RTEMS_RECORD_ARG_1 event data.
+ * @param data_2 The RTEMS_RECORD_ARG_2 event data.
+ * @param data_3 The RTEMS_RECORD_ARG_3 event data.
+ * @param data_4 The RTEMS_RECORD_ARG_4 event data.
+ * @param data_5 The RTEMS_RECORD_ARG_5 event data.
+ */
+#define rtems_record_entry_6( \
+  event, \
+  data_0, \
+  data_1, \
+  data_2, \
+  data_3, \
+  data_4, \
+  data_5 \
+) \
+  _Record_Entry_6( \
+    RTEMS_RETURN_ADDRESS(), \
+    event, \
+    data_0, \
+    data_1, \
+    data_2, \
+    data_3, \
+    data_4, \
+    data_5 \
+  )
+
+/**
+ * @brief Generates the specified entry event and seven argument events.
+ *
+ * The event data of the specified entry event is the return address of the
+ * function calling rtems_record_entry_7().
+ *
+ * @param event The entry event.
+ * @param data_0 The RTEMS_RECORD_ARG_0 event data.
+ * @param data_1 The RTEMS_RECORD_ARG_1 event data.
+ * @param data_2 The RTEMS_RECORD_ARG_2 event data.
+ * @param data_3 The RTEMS_RECORD_ARG_3 event data.
+ * @param data_4 The RTEMS_RECORD_ARG_4 event data.
+ * @param data_5 The RTEMS_RECORD_ARG_5 event data.
+ * @param data_6 The RTEMS_RECORD_ARG_6 event data.
+ */
+#define rtems_record_entry_7( \
+  event, \
+  data_0, \
+  data_1, \
+  data_2, \
+  data_3, \
+  data_4, \
+  data_5, \
+  data_6 \
+) \
+  _Record_Entry_7( \
+    RTEMS_RETURN_ADDRESS(), \
+    event, \
+    data_0, \
+    data_1, \
+    data_2, \
+    data_3, \
+    data_4, \
+    data_5, \
+    data_6 \
+  )
+
+/**
+ * @brief Generates the specified entry event and eight argument events.
+ *
+ * The event data of the specified entry event is the return address of the
+ * function calling rtems_record_entry_8().
+ *
+ * @param event The entry event.
+ * @param data_0 The RTEMS_RECORD_ARG_0 event data.
+ * @param data_1 The RTEMS_RECORD_ARG_1 event data.
+ * @param data_2 The RTEMS_RECORD_ARG_2 event data.
+ * @param data_3 The RTEMS_RECORD_ARG_3 event data.
+ * @param data_4 The RTEMS_RECORD_ARG_4 event data.
+ * @param data_5 The RTEMS_RECORD_ARG_5 event data.
+ * @param data_6 The RTEMS_RECORD_ARG_6 event data.
+ * @param data_7 The RTEMS_RECORD_ARG_7 event data.
+ */
+#define rtems_record_entry_8( \
+  event, \
+  data_0, \
+  data_1, \
+  data_2, \
+  data_3, \
+  data_4, \
+  data_5, \
+  data_6, \
+  data_7 \
+) \
+  _Record_Entry_8( \
+    RTEMS_RETURN_ADDRESS(), \
+    event, \
+    data_0, \
+    data_1, \
+    data_2, \
+    data_3, \
+    data_4, \
+    data_5, \
+    data_6, \
+    data_7 \
+  )
+
+/**
+ * @brief Generates the specified entry event and nine argument events.
+ *
+ * The event data of the specified entry event is the return address of the
+ * function calling rtems_record_entry_9().
+ *
+ * @param event The entry event.
+ * @param data_0 The RTEMS_RECORD_ARG_0 event data.
+ * @param data_1 The RTEMS_RECORD_ARG_1 event data.
+ * @param data_2 The RTEMS_RECORD_ARG_2 event data.
+ * @param data_3 The RTEMS_RECORD_ARG_3 event data.
+ * @param data_4 The RTEMS_RECORD_ARG_4 event data.
+ * @param data_5 The RTEMS_RECORD_ARG_5 event data.
+ * @param data_6 The RTEMS_RECORD_ARG_6 event data.
+ * @param data_7 The RTEMS_RECORD_ARG_7 event data.
+ * @param data_8 The RTEMS_RECORD_ARG_8 event data.
+ */
+#define rtems_record_entry_9( \
+  event, \
+  data_0, \
+  data_1, \
+  data_2, \
+  data_3, \
+  data_4, \
+  data_5, \
+  data_6, \
+  data_7, \
+  data_8 \
+) \
+  _Record_Entry_9( \
+    RTEMS_RETURN_ADDRESS(), \
+    event, \
+    data_0, \
+    data_1, \
+    data_2, \
+    data_3, \
+    data_4, \
+    data_5, \
+    data_6, \
+    data_7, \
+    data_8 \
+  )
+
+/**
+ * @brief Generates the specified entry event and ten argument events.
+ *
+ * The event data of the specified entry event is the return address of the function
+ * calling rtems_record_entry_10().
+ *
+ * @param event The entry event.
+ * @param data_0 The RTEMS_RECORD_ARG_0 event data.
+ * @param data_1 The RTEMS_RECORD_ARG_1 event data.
+ * @param data_2 The RTEMS_RECORD_ARG_2 event data.
+ * @param data_3 The RTEMS_RECORD_ARG_3 event data.
+ * @param data_4 The RTEMS_RECORD_ARG_4 event data.
+ * @param data_5 The RTEMS_RECORD_ARG_5 event data.
+ * @param data_6 The RTEMS_RECORD_ARG_6 event data.
+ * @param data_7 The RTEMS_RECORD_ARG_7 event data.
+ * @param data_8 The RTEMS_RECORD_ARG_8 event data.
+ * @param data_10 The RTEMS_RECORD_ARG_10 event data.
+ */
+#define rtems_record_entry_10( \
+  event, \
+  data_0, \
+  data_1, \
+  data_2, \
+  data_3, \
+  data_4, \
+  data_5, \
+  data_6, \
+  data_7, \
+  data_8, \
+  data_9 \
+) \
+  _Record_Entry_10( \
+    RTEMS_RETURN_ADDRESS(), \
+    event, \
+    data_0, \
+    data_1, \
+    data_2, \
+    data_3, \
+    data_4, \
+    data_5, \
+    data_6, \
+    data_7, \
+    data_8, \
+    data_9 \
+  )
+
+/**
+ * @brief Generates the specified exit event.
+ *
+ * The event data of the specified exit event is the return address of the
+ * function calling rtems_record_exit().
+ *
+ * @param event The exit event.
+ */
+#define rtems_record_exit( event ) \
+  rtems_record_produce( event, (rtems_record_data) RTEMS_RETURN_ADDRESS() )
+
+/**
+ * @brief Generates the specified exit event and a return event.
+ *
+ * The event data of the specified exit event is the return address of the
+ * function calling rtems_record_exit_1().
+ *
+ * @param event The exit event.
+ * @param data The RTEMS_RECORD_RETURN_0 event data.
+ */
+#define rtems_record_exit_1( event, data ) \
+  rtems_record_produce_2( \
+    event, \
+    (rtems_record_data) RTEMS_RETURN_ADDRESS(), \
+    RTEMS_RECORD_RETURN_0, \
+    data \
+  )
+
+/**
+ * @brief Generates the specified exit event and two argument events.
+ *
+ * The event data of the specified exit event is the return address of the
+ * function calling rtems_record_exit_2().
+ *
+ * @param event The exit event.
+ * @param data_0 The RTEMS_RECORD_RETURN_0 event data.
+ * @param data_1 The RTEMS_RECORD_RETURN_1 event data.
+ */
+#define rtems_record_exit_2( event, data_0, data_1 ) \
+  _Record_Entry_2( RTEMS_RETURN_ADDRESS(), event, data_0, data_1 )
+
+/**
+ * @brief Generates the specified exit event and three argument events.
+ *
+ * The event data of the specified exit event is the return address of the
+ * function calling rtems_record_exit_3().
+ *
+ * @param event The exit event.
+ * @param data_0 The RTEMS_RECORD_RETURN_0 event data.
+ * @param data_1 The RTEMS_RECORD_RETURN_1 event data.
+ * @param data_2 The RTEMS_RECORD_RETURN_2 event data.
+ */
+#define rtems_record_exit_3( event, data_0, data_1, data_2 ) \
+  _Record_Exit_3( \
+    RTEMS_RETURN_ADDRESS(), \
+    event, \
+    data_0, \
+    data_1, \
+    data_2 \
+  )
+
+/**
+ * @brief Generates the specified exit event and four argument events.
+ *
+ * The event data of the specified exit event is the return address of the
+ * function calling rtems_record_exit_4().
+ *
+ * @param event The exit event.
+ * @param data_0 The RTEMS_RECORD_RETURN_0 event data.
+ * @param data_1 The RTEMS_RECORD_RETURN_1 event data.
+ * @param data_2 The RTEMS_RECORD_RETURN_2 event data.
+ * @param data_3 The RTEMS_RECORD_RETURN_3 event data.
+ */
+#define rtems_record_exit_4( event, data_0, data_1, data_2, data_3 ) \
+  _Record_Exit_4( \
+    RTEMS_RETURN_ADDRESS(), \
+    event, \
+    data_0, \
+    data_1, \
+    data_2, \
+    data_3 \
+  )
+
+/**
+ * @brief Generates the specified exit event and five argument events.
+ *
+ * The event data of the specified exit event is the return address of the
+ * function calling rtems_record_exit_5().
+ *
+ * @param event The exit event.
+ * @param data_0 The RTEMS_RECORD_RETURN_0 event data.
+ * @param data_1 The RTEMS_RECORD_RETURN_1 event data.
+ * @param data_2 The RTEMS_RECORD_RETURN_2 event data.
+ * @param data_3 The RTEMS_RECORD_RETURN_3 event data.
+ * @param data_4 The RTEMS_RECORD_RETURN_4 event data.
+ */
+#define rtems_record_exit_5( \
+  event, \
+  data_0, \
+  data_1, \
+  data_2, \
+  data_3, \
+  data_4 \
+) \
+  _Record_Exit_5( \
+    RTEMS_RETURN_ADDRESS(), \
+    event, \
+    data_0, \
+    data_1, \
+    data_2, \
+    data_3, \
+    data_4 \
+  )
+
+/**
+ * @brief Generates the specified exit event and six argument events.
+ *
+ * The event data of the specified exit event is the return address of the
+ * function calling rtems_record_exit_6().
+ *
+ * @param event The exit event.
+ * @param data_0 The RTEMS_RECORD_RETURN_0 event data.
+ * @param data_1 The RTEMS_RECORD_RETURN_1 event data.
+ * @param data_2 The RTEMS_RECORD_RETURN_2 event data.
+ * @param data_3 The RTEMS_RECORD_RETURN_3 event data.
+ * @param data_4 The RTEMS_RECORD_RETURN_4 event data.
+ * @param data_5 The RTEMS_RECORD_RETURN_5 event data.
+ */
+#define rtems_record_exit_6( \
+  event, \
+  data_0, \
+  data_1, \
+  data_2, \
+  data_3, \
+  data_4, \
+  data_5 \
+) \
+  _Record_Exit_6( \
+    RTEMS_RETURN_ADDRESS(), \
+    event, \
+    data_0, \
+    data_1, \
+    data_2, \
+    data_3, \
+    data_4, \
+    data_5 \
+  )
+
+/**
+ * @brief Generates the specified exit event and seven argument events.
+ *
+ * The event data of the specified exit event is the return address of the
+ * function calling rtems_record_exit_7().
+ *
+ * @param event The exit event.
+ * @param data_0 The RTEMS_RECORD_RETURN_0 event data.
+ * @param data_1 The RTEMS_RECORD_RETURN_1 event data.
+ * @param data_2 The RTEMS_RECORD_RETURN_2 event data.
+ * @param data_3 The RTEMS_RECORD_RETURN_3 event data.
+ * @param data_4 The RTEMS_RECORD_RETURN_4 event data.
+ * @param data_5 The RTEMS_RECORD_RETURN_5 event data.
+ * @param data_6 The RTEMS_RECORD_RETURN_6 event data.
+ */
+#define rtems_record_exit_7( \
+  event, \
+  data_0, \
+  data_1, \
+  data_2, \
+  data_3, \
+  data_4, \
+  data_5, \
+  data_6 \
+) \
+  _Record_Exit_7( \
+    RTEMS_RETURN_ADDRESS(), \
+    event, \
+    data_0, \
+    data_1, \
+    data_2, \
+    data_3, \
+    data_4, \
+    data_5, \
+    data_6 \
+  )
+
+/**
+ * @brief Generates the specified exit event and eight argument events.
+ *
+ * The event data of the specified exit event is the return address of the
+ * function calling rtems_record_exit_8().
+ *
+ * @param event The exit event.
+ * @param data_0 The RTEMS_RECORD_RETURN_0 event data.
+ * @param data_1 The RTEMS_RECORD_RETURN_1 event data.
+ * @param data_2 The RTEMS_RECORD_RETURN_2 event data.
+ * @param data_3 The RTEMS_RECORD_RETURN_3 event data.
+ * @param data_4 The RTEMS_RECORD_RETURN_4 event data.
+ * @param data_5 The RTEMS_RECORD_RETURN_5 event data.
+ * @param data_6 The RTEMS_RECORD_RETURN_6 event data.
+ * @param data_7 The RTEMS_RECORD_RETURN_7 event data.
+ */
+#define rtems_record_exit_8( \
+  event, \
+  data_0, \
+  data_1, \
+  data_2, \
+  data_3, \
+  data_4, \
+  data_5, \
+  data_6, \
+  data_7 \
+) \
+  _Record_Exit_8( \
+    RTEMS_RETURN_ADDRESS(), \
+    event, \
+    data_0, \
+    data_1, \
+    data_2, \
+    data_3, \
+    data_4, \
+    data_5, \
+    data_6, \
+    data_7 \
+  )
+
+/**
+ * @brief Generates the specified exit event and nine argument events.
+ *
+ * The event data of the specified exit event is the return address of the
+ * function calling rtems_record_exit_9().
+ *
+ * @param event The exit event.
+ * @param data_0 The RTEMS_RECORD_RETURN_0 event data.
+ * @param data_1 The RTEMS_RECORD_RETURN_1 event data.
+ * @param data_2 The RTEMS_RECORD_RETURN_2 event data.
+ * @param data_3 The RTEMS_RECORD_RETURN_3 event data.
+ * @param data_4 The RTEMS_RECORD_RETURN_4 event data.
+ * @param data_5 The RTEMS_RECORD_RETURN_5 event data.
+ * @param data_6 The RTEMS_RECORD_RETURN_6 event data.
+ * @param data_7 The RTEMS_RECORD_RETURN_7 event data.
+ * @param data_8 The RTEMS_RECORD_RETURN_8 event data.
+ */
+#define rtems_record_exit_9( \
+  event, \
+  data_0, \
+  data_1, \
+  data_2, \
+  data_3, \
+  data_4, \
+  data_5, \
+  data_6, \
+  data_7, \
+  data_8 \
+) \
+  _Record_Exit_9( \
+    RTEMS_RETURN_ADDRESS(), \
+    event, \
+    data_0, \
+    data_1, \
+    data_2, \
+    data_3, \
+    data_4, \
+    data_5, \
+    data_6, \
+    data_7, \
+    data_8 \
+  )
+
+/**
+ * @brief Generates the specified exit event and ten argument events.
+ *
+ * The event data of the specified exit event is the return address of the function
+ * calling rtems_record_exit_10().
+ *
+ * @param event The exit event.
+ * @param data_0 The RTEMS_RECORD_RETURN_0 event data.
+ * @param data_1 The RTEMS_RECORD_RETURN_1 event data.
+ * @param data_2 The RTEMS_RECORD_RETURN_2 event data.
+ * @param data_3 The RTEMS_RECORD_RETURN_3 event data.
+ * @param data_4 The RTEMS_RECORD_RETURN_4 event data.
+ * @param data_5 The RTEMS_RECORD_RETURN_5 event data.
+ * @param data_6 The RTEMS_RECORD_RETURN_6 event data.
+ * @param data_7 The RTEMS_RECORD_RETURN_7 event data.
+ * @param data_8 The RTEMS_RECORD_RETURN_8 event data.
+ * @param data_10 The RTEMS_RECORD_RETURN_10 event data.
+ */
+#define rtems_record_exit_10( \
+  event, \
+  data_0, \
+  data_1, \
+  data_2, \
+  data_3, \
+  data_4, \
+  data_5, \
+  data_6, \
+  data_7, \
+  data_8, \
+  data_9 \
+) \
+  _Record_Exit_10( \
+    RTEMS_RETURN_ADDRESS(), \
+    event, \
+    data_0, \
+    data_1, \
+    data_2, \
+    data_3, \
+    data_4, \
+    data_5, \
+    data_6, \
+    data_7, \
+    data_8, \
+    data_9 \
+  )
+
+/**
  * @brief Disables interrupts and generates an RTEMS_RECORD_ISR_DISABLE event.
  *
  * @return The previous interrupt level.
diff --git a/cpukit/include/rtems/recorddata.h b/cpukit/include/rtems/recorddata.h
index f0d02e6..ae63986 100644
--- a/cpukit/include/rtems/recorddata.h
+++ b/cpukit/include/rtems/recorddata.h
@@ -55,7 +55,7 @@ extern "C" {
  * The record version reflects the record event definitions.  It is reported by
  * the RTEMS_RECORD_VERSION event.
  */
-#define RTEMS_RECORD_THE_VERSION 7
+#define RTEMS_RECORD_THE_VERSION 8
 
 /**
  * @brief The items are in 32-bit little-endian format.
@@ -99,6 +99,8 @@ typedef enum {
   RTEMS_RECORD_ACCEPT_ENTRY,
   RTEMS_RECORD_ACCEPT_EXIT,
   RTEMS_RECORD_ADDRESS,
+  RTEMS_RECORD_ALIGNED_ALLOC_ENTRY,
+  RTEMS_RECORD_ALIGNED_ALLOC_EXIT,
   RTEMS_RECORD_ARCH,
   RTEMS_RECORD_ARG_0,
   RTEMS_RECORD_ARG_1,
@@ -115,6 +117,8 @@ typedef enum {
   RTEMS_RECORD_BSP,
   RTEMS_RECORD_BUFFER,
   RTEMS_RECORD_CALLER,
+  RTEMS_RECORD_CALLOC_ENTRY,
+  RTEMS_RECORD_CALLOC_EXIT,
   RTEMS_RECORD_CHOWN_ENTRY,
   RTEMS_RECORD_CHOWN_EXIT,
   RTEMS_RECORD_CLOSE_ENTRY,
@@ -131,6 +135,8 @@ typedef enum {
   RTEMS_RECORD_FCNTL_EXIT,
   RTEMS_RECORD_FDATASYNC_ENTRY,
   RTEMS_RECORD_FDATASYNC_EXIT,
+  RTEMS_RECORD_FREE_ENTRY,
+  RTEMS_RECORD_FREE_EXIT,
   RTEMS_RECORD_FREQUENCY,
   RTEMS_RECORD_FSTAT_ENTRY,
   RTEMS_RECORD_FSTAT_EXIT,
@@ -181,6 +187,8 @@ typedef enum {
   RTEMS_RECORD_LISTEN_EXIT,
   RTEMS_RECORD_LSEEK_ENTRY,
   RTEMS_RECORD_LSEEK_EXIT,
+  RTEMS_RECORD_MALLOC_ENTRY,
+  RTEMS_RECORD_MALLOC_EXIT,
   RTEMS_RECORD_MEMORY,
   RTEMS_RECORD_MKNOD_ENTRY,
   RTEMS_RECORD_MKNOD_EXIT,
@@ -199,6 +207,8 @@ typedef enum {
   RTEMS_RECORD_PER_CPU_TAIL,
   RTEMS_RECORD_POLL_ENTRY,
   RTEMS_RECORD_POLL_EXIT,
+  RTEMS_RECORD_POSIX_MEMALIGN_ENTRY,
+  RTEMS_RECORD_POSIX_MEMALIGN_EXIT,
   RTEMS_RECORD_PROCESSOR,
   RTEMS_RECORD_PROCESSOR_MAXIMUM,
   RTEMS_RECORD_READ_ENTRY,
@@ -207,6 +217,8 @@ typedef enum {
   RTEMS_RECORD_READLINK_EXIT,
   RTEMS_RECORD_READV_ENTRY,
   RTEMS_RECORD_READV_EXIT,
+  RTEMS_RECORD_REALLOC_ENTRY,
+  RTEMS_RECORD_REALLOC_EXIT,
   RTEMS_RECORD_RECV_ENTRY,
   RTEMS_RECORD_RECV_EXIT,
   RTEMS_RECORD_RECVFROM_ENTRY,
@@ -216,14 +228,28 @@ typedef enum {
   RTEMS_RECORD_REGISTERS,
   RTEMS_RECORD_RENAME_ENTRY,
   RTEMS_RECORD_RENAME_EXIT,
+  RTEMS_RECORD_RETURN_0,
+  RTEMS_RECORD_RETURN_1,
+  RTEMS_RECORD_RETURN_2,
+  RTEMS_RECORD_RETURN_3,
+  RTEMS_RECORD_RETURN_4,
+  RTEMS_RECORD_RETURN_5,
+  RTEMS_RECORD_RETURN_6,
+  RTEMS_RECORD_RETURN_7,
+  RTEMS_RECORD_RETURN_8,
+  RTEMS_RECORD_RETURN_9,
   RTEMS_RECORD_RTEMS_BARRIER_CREATE,
   RTEMS_RECORD_RTEMS_BARRIER_DELETE,
   RTEMS_RECORD_RTEMS_BARRIER_RELEASE,
   RTEMS_RECORD_RTEMS_BARRIER_WAIT,
+  RTEMS_RECORD_RTEMS_CALLOC_ENTRY,
+  RTEMS_RECORD_RTEMS_CALLOC_EXIT,
   RTEMS_RECORD_RTEMS_EVENT_RECEIVE,
   RTEMS_RECORD_RTEMS_EVENT_SEND,
   RTEMS_RECORD_RTEMS_EVENT_SYSTEM_RECEIVE,
   RTEMS_RECORD_RTEMS_EVENT_SYSTEM_SEND,
+  RTEMS_RECORD_RTEMS_MALLOC_ENTRY,
+  RTEMS_RECORD_RTEMS_MALLOC_EXIT,
   RTEMS_RECORD_RTEMS_MESSAGE_QUEUE_BROADCAST,
   RTEMS_RECORD_RTEMS_MESSAGE_QUEUE_CREATE,
   RTEMS_RECORD_RTEMS_MESSAGE_QUEUE_DELETE,
@@ -396,8 +422,10 @@ typedef enum {
   RTEMS_RECORD_WATCHDOG_REMOVE,
   RTEMS_RECORD_WATCHDOG_ROUTINE,
   RTEMS_RECORD_WATCHDOG_STATE,
-  RTEMS_RECORD_WORKSPACE_ALLOC,
-  RTEMS_RECORD_WORKSPACE_FREE,
+  RTEMS_RECORD_WORKSPACE_ALLOC_ENTRY,
+  RTEMS_RECORD_WORKSPACE_ALLOC_EXIT,
+  RTEMS_RECORD_WORKSPACE_FREE_ENTY,
+  RTEMS_RECORD_WORKSPACE_FREE_EXIT,
   RTEMS_RECORD_WORKSPACE_SIZE,
   RTEMS_RECORD_WORKSPACE_USAGE,
   RTEMS_RECORD_WRITE_ENTRY,
@@ -406,34 +434,6 @@ typedef enum {
   RTEMS_RECORD_WRITEV_EXIT,
 
   /* Unused system events */
-  RTEMS_RECORD_SYSTEM_310,
-  RTEMS_RECORD_SYSTEM_311,
-  RTEMS_RECORD_SYSTEM_312,
-  RTEMS_RECORD_SYSTEM_313,
-  RTEMS_RECORD_SYSTEM_314,
-  RTEMS_RECORD_SYSTEM_315,
-  RTEMS_RECORD_SYSTEM_316,
-  RTEMS_RECORD_SYSTEM_317,
-  RTEMS_RECORD_SYSTEM_318,
-  RTEMS_RECORD_SYSTEM_319,
-  RTEMS_RECORD_SYSTEM_320,
-  RTEMS_RECORD_SYSTEM_321,
-  RTEMS_RECORD_SYSTEM_322,
-  RTEMS_RECORD_SYSTEM_323,
-  RTEMS_RECORD_SYSTEM_324,
-  RTEMS_RECORD_SYSTEM_325,
-  RTEMS_RECORD_SYSTEM_326,
-  RTEMS_RECORD_SYSTEM_327,
-  RTEMS_RECORD_SYSTEM_328,
-  RTEMS_RECORD_SYSTEM_329,
-  RTEMS_RECORD_SYSTEM_330,
-  RTEMS_RECORD_SYSTEM_331,
-  RTEMS_RECORD_SYSTEM_332,
-  RTEMS_RECORD_SYSTEM_333,
-  RTEMS_RECORD_SYSTEM_334,
-  RTEMS_RECORD_SYSTEM_335,
-  RTEMS_RECORD_SYSTEM_336,
-  RTEMS_RECORD_SYSTEM_337,
   RTEMS_RECORD_SYSTEM_338,
   RTEMS_RECORD_SYSTEM_339,
   RTEMS_RECORD_SYSTEM_340,
diff --git a/cpukit/libtrace/record/record-text.c b/cpukit/libtrace/record/record-text.c
index dd45cee..6a6ae62 100644
--- a/cpukit/libtrace/record/record-text.c
+++ b/cpukit/libtrace/record/record-text.c
@@ -44,6 +44,8 @@ static const char * const event_text[] = {
   [ RTEMS_RECORD_ACCEPT_ENTRY ] = "ACCEPT_ENTRY",
   [ RTEMS_RECORD_ACCEPT_EXIT ] = "ACCEPT_EXIT",
   [ RTEMS_RECORD_ADDRESS ] = "ADDRESS",
+  [ RTEMS_RECORD_ALIGNED_ALLOC_ENTRY ] = "ALIGNED_ALLOC_ENTRY",
+  [ RTEMS_RECORD_ALIGNED_ALLOC_EXIT ] = "ALIGNED_ALLOC_EXIT",
   [ RTEMS_RECORD_ARCH ] = "ARCH",
   [ RTEMS_RECORD_ARG_0 ] = "ARG_0",
   [ RTEMS_RECORD_ARG_1 ] = "ARG_1",
@@ -60,6 +62,8 @@ static const char * const event_text[] = {
   [ RTEMS_RECORD_BSP ] = "BSP",
   [ RTEMS_RECORD_BUFFER ] = "BUFFER",
   [ RTEMS_RECORD_CALLER ] = "CALLER",
+  [ RTEMS_RECORD_CALLOC_ENTRY ] = "CALLOC_ENTRY",
+  [ RTEMS_RECORD_CALLOC_EXIT ] = "CALLOC_EXIT",
   [ RTEMS_RECORD_CHOWN_ENTRY ] = "CHOWN_ENTRY",
   [ RTEMS_RECORD_CHOWN_EXIT ] = "CHOWN_EXIT",
   [ RTEMS_RECORD_CLOSE_ENTRY ] = "CLOSE_ENTRY",
@@ -76,6 +80,8 @@ static const char * const event_text[] = {
   [ RTEMS_RECORD_FCNTL_EXIT ] = "FCNTL_EXIT",
   [ RTEMS_RECORD_FDATASYNC_ENTRY ] = "FDATASYNC_ENTRY",
   [ RTEMS_RECORD_FDATASYNC_EXIT ] = "FDATASYNC_EXIT",
+  [ RTEMS_RECORD_FREE_ENTRY ] = "FREE_ENTRY",
+  [ RTEMS_RECORD_FREE_EXIT ] = "FREE_EXIT",
   [ RTEMS_RECORD_FREQUENCY ] = "FREQUENCY",
   [ RTEMS_RECORD_FSTAT_ENTRY ] = "FSTAT_ENTRY",
   [ RTEMS_RECORD_FSTAT_EXIT ] = "FSTAT_EXIT",
@@ -126,6 +132,8 @@ static const char * const event_text[] = {
   [ RTEMS_RECORD_LISTEN_EXIT ] = "LISTEN_EXIT",
   [ RTEMS_RECORD_LSEEK_ENTRY ] = "LSEEK_ENTRY",
   [ RTEMS_RECORD_LSEEK_EXIT ] = "LSEEK_EXIT",
+  [ RTEMS_RECORD_MALLOC_ENTRY ] = "MALLOC_ENTRY",
+  [ RTEMS_RECORD_MALLOC_EXIT ] = "MALLOC_EXIT",
   [ RTEMS_RECORD_MEMORY ] = "MEMORY",
   [ RTEMS_RECORD_MKNOD_ENTRY ] = "MKNOD_ENTRY",
   [ RTEMS_RECORD_MKNOD_EXIT ] = "MKNOD_EXIT",
@@ -144,6 +152,8 @@ static const char * const event_text[] = {
   [ RTEMS_RECORD_PER_CPU_TAIL ] = "PER_CPU_TAIL",
   [ RTEMS_RECORD_POLL_ENTRY ] = "POLL_ENTRY",
   [ RTEMS_RECORD_POLL_EXIT ] = "POLL_EXIT",
+  [ RTEMS_RECORD_POSIX_MEMALIGN_ENTRY ] = "POSIX_MEMALIGN_ENTRY",
+  [ RTEMS_RECORD_POSIX_MEMALIGN_EXIT ] = "POSIX_MEMALIGN_EXIT",
   [ RTEMS_RECORD_PROCESSOR ] = "PROCESSOR",
   [ RTEMS_RECORD_PROCESSOR_MAXIMUM ] = "PROCESSOR_MAXIMUM",
   [ RTEMS_RECORD_READ_ENTRY ] = "READ_ENTRY",
@@ -152,6 +162,8 @@ static const char * const event_text[] = {
   [ RTEMS_RECORD_READLINK_EXIT ] = "READLINK_EXIT",
   [ RTEMS_RECORD_READV_ENTRY ] = "READV_ENTRY",
   [ RTEMS_RECORD_READV_EXIT ] = "READV_EXIT",
+  [ RTEMS_RECORD_REALLOC_ENTRY ] = "REALLOC_ENTRY",
+  [ RTEMS_RECORD_REALLOC_EXIT ] = "REALLOC_EXIT",
   [ RTEMS_RECORD_RECV_ENTRY ] = "RECV_ENTRY",
   [ RTEMS_RECORD_RECV_EXIT ] = "RECV_EXIT",
   [ RTEMS_RECORD_RECVFROM_ENTRY ] = "RECVFROM_ENTRY",
@@ -161,14 +173,28 @@ static const char * const event_text[] = {
   [ RTEMS_RECORD_REGISTERS ] = "REGISTERS",
   [ RTEMS_RECORD_RENAME_ENTRY ] = "RENAME_ENTRY",
   [ RTEMS_RECORD_RENAME_EXIT ] = "RENAME_EXIT",
+  [ RTEMS_RECORD_RETURN_0 ] = "RETURN_0",
+  [ RTEMS_RECORD_RETURN_1 ] = "RETURN_1",
+  [ RTEMS_RECORD_RETURN_2 ] = "RETURN_2",
+  [ RTEMS_RECORD_RETURN_3 ] = "RETURN_3",
+  [ RTEMS_RECORD_RETURN_4 ] = "RETURN_4",
+  [ RTEMS_RECORD_RETURN_5 ] = "RETURN_5",
+  [ RTEMS_RECORD_RETURN_6 ] = "RETURN_6",
+  [ RTEMS_RECORD_RETURN_7 ] = "RETURN_7",
+  [ RTEMS_RECORD_RETURN_8 ] = "RETURN_8",
+  [ RTEMS_RECORD_RETURN_9 ] = "RETURN_9",
   [ RTEMS_RECORD_RTEMS_BARRIER_CREATE ] = "RTEMS_BARRIER_CREATE",
   [ RTEMS_RECORD_RTEMS_BARRIER_DELETE ] = "RTEMS_BARRIER_DELETE",
   [ RTEMS_RECORD_RTEMS_BARRIER_RELEASE ] = "RTEMS_BARRIER_RELEASE",
   [ RTEMS_RECORD_RTEMS_BARRIER_WAIT ] = "RTEMS_BARRIER_WAIT",
+  [ RTEMS_RECORD_RTEMS_CALLOC_ENTRY ] = "RTEMS_CALLOC_ENTRY",
+  [ RTEMS_RECORD_RTEMS_CALLOC_EXIT ] = "RTEMS_CALLOC_EXIT",
   [ RTEMS_RECORD_RTEMS_EVENT_RECEIVE ] = "RTEMS_EVENT_RECEIVE",
   [ RTEMS_RECORD_RTEMS_EVENT_SEND ] = "RTEMS_EVENT_SEND",
   [ RTEMS_RECORD_RTEMS_EVENT_SYSTEM_RECEIVE ] = "RTEMS_EVENT_SYSTEM_RECEIVE",
   [ RTEMS_RECORD_RTEMS_EVENT_SYSTEM_SEND ] = "RTEMS_EVENT_SYSTEM_SEND",
+  [ RTEMS_RECORD_RTEMS_MALLOC_ENTRY ] = "RTEMS_MALLOC_ENTRY",
+  [ RTEMS_RECORD_RTEMS_MALLOC_EXIT ] = "RTEMS_MALLOC_EXIT",
   [ RTEMS_RECORD_RTEMS_MESSAGE_QUEUE_BROADCAST ] = "RTEMS_MESSAGE_QUEUE_BROADCAST",
   [ RTEMS_RECORD_RTEMS_MESSAGE_QUEUE_CREATE ] = "RTEMS_MESSAGE_QUEUE_CREATE",
   [ RTEMS_RECORD_RTEMS_MESSAGE_QUEUE_DELETE ] = "RTEMS_MESSAGE_QUEUE_DELETE",
@@ -341,42 +367,16 @@ static const char * const event_text[] = {
   [ 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_ALLOC_ENTRY ] = "WORKSPACE_ALLOC_ENTRY",
+  [ RTEMS_RECORD_WORKSPACE_ALLOC_EXIT ] = "WORKSPACE_ALLOC_EXIT",
+  [ RTEMS_RECORD_WORKSPACE_FREE_ENTY ] = "WORKSPACE_FREE_ENTY",
+  [ RTEMS_RECORD_WORKSPACE_FREE_EXIT ] = "WORKSPACE_FREE_EXIT",
   [ RTEMS_RECORD_WORKSPACE_SIZE ] = "WORKSPACE_SIZE",
   [ RTEMS_RECORD_WORKSPACE_USAGE ] = "WORKSPACE_USAGE",
   [ RTEMS_RECORD_WRITE_ENTRY ] = "WRITE_ENTRY",
   [ RTEMS_RECORD_WRITE_EXIT ] = "WRITE_EXIT",
   [ RTEMS_RECORD_WRITEV_ENTRY ] = "WRITEV_ENTRY",
   [ RTEMS_RECORD_WRITEV_EXIT ] = "WRITEV_EXIT",
-  [ RTEMS_RECORD_SYSTEM_310 ] = "SYSTEM_310",
-  [ RTEMS_RECORD_SYSTEM_311 ] = "SYSTEM_311",
-  [ RTEMS_RECORD_SYSTEM_312 ] = "SYSTEM_312",
-  [ RTEMS_RECORD_SYSTEM_313 ] = "SYSTEM_313",
-  [ RTEMS_RECORD_SYSTEM_314 ] = "SYSTEM_314",
-  [ RTEMS_RECORD_SYSTEM_315 ] = "SYSTEM_315",
-  [ RTEMS_RECORD_SYSTEM_316 ] = "SYSTEM_316",
-  [ RTEMS_RECORD_SYSTEM_317 ] = "SYSTEM_317",
-  [ RTEMS_RECORD_SYSTEM_318 ] = "SYSTEM_318",
-  [ RTEMS_RECORD_SYSTEM_319 ] = "SYSTEM_319",
-  [ RTEMS_RECORD_SYSTEM_320 ] = "SYSTEM_320",
-  [ RTEMS_RECORD_SYSTEM_321 ] = "SYSTEM_321",
-  [ RTEMS_RECORD_SYSTEM_322 ] = "SYSTEM_322",
-  [ RTEMS_RECORD_SYSTEM_323 ] = "SYSTEM_323",
-  [ RTEMS_RECORD_SYSTEM_324 ] = "SYSTEM_324",
-  [ RTEMS_RECORD_SYSTEM_325 ] = "SYSTEM_325",
-  [ RTEMS_RECORD_SYSTEM_326 ] = "SYSTEM_326",
-  [ RTEMS_RECORD_SYSTEM_327 ] = "SYSTEM_327",
-  [ RTEMS_RECORD_SYSTEM_328 ] = "SYSTEM_328",
-  [ RTEMS_RECORD_SYSTEM_329 ] = "SYSTEM_329",
-  [ RTEMS_RECORD_SYSTEM_330 ] = "SYSTEM_330",
-  [ RTEMS_RECORD_SYSTEM_331 ] = "SYSTEM_331",
-  [ RTEMS_RECORD_SYSTEM_332 ] = "SYSTEM_332",
-  [ RTEMS_RECORD_SYSTEM_333 ] = "SYSTEM_333",
-  [ RTEMS_RECORD_SYSTEM_334 ] = "SYSTEM_334",
-  [ RTEMS_RECORD_SYSTEM_335 ] = "SYSTEM_335",
-  [ RTEMS_RECORD_SYSTEM_336 ] = "SYSTEM_336",
-  [ RTEMS_RECORD_SYSTEM_337 ] = "SYSTEM_337",
   [ RTEMS_RECORD_SYSTEM_338 ] = "SYSTEM_338",
   [ RTEMS_RECORD_SYSTEM_339 ] = "SYSTEM_339",
   [ RTEMS_RECORD_SYSTEM_340 ] = "SYSTEM_340",
diff --git a/cpukit/libtrace/record/record-util.c b/cpukit/libtrace/record/record-util.c
index a7189b1..8fa542b 100644
--- a/cpukit/libtrace/record/record-util.c
+++ b/cpukit/libtrace/record/record-util.c
@@ -672,6 +672,546 @@ void _Record_Caller_arg_10(
   rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
 }
 
+void _Record_Entry_2(
+  void               *return_address,
+  rtems_record_event  event,
+  rtems_record_data   data_0,
+  rtems_record_data   data_1
+)
+{
+  rtems_record_item items[ 3 ];
+
+  items[ 0 ].event = event;
+  items[ 0 ].data = (rtems_record_data) 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 _Record_Entry_3(
+  void               *return_address,
+  rtems_record_event  event,
+  rtems_record_data   data_0,
+  rtems_record_data   data_1,
+  rtems_record_data   data_2
+)
+{
+  rtems_record_item items[ 4 ];
+
+  items[ 0 ].event = event;
+  items[ 0 ].data = (rtems_record_data) 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 _Record_Entry_4(
+  void               *return_address,
+  rtems_record_event  event,
+  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 = event;
+  items[ 0 ].data = (rtems_record_data) 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 _Record_Entry_5(
+  void               *return_address,
+  rtems_record_event  event,
+  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 = event;
+  items[ 0 ].data = (rtems_record_data) 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 _Record_Entry_6(
+  void               *return_address,
+  rtems_record_event  event,
+  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 = event;
+  items[ 0 ].data = (rtems_record_data) 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 _Record_Entry_7(
+  void               *return_address,
+  rtems_record_event  event,
+  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 = event;
+  items[ 0 ].data = (rtems_record_data) 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 _Record_Entry_8(
+  void               *return_address,
+  rtems_record_event  event,
+  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 = event;
+  items[ 0 ].data = (rtems_record_data) 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 _Record_Entry_9(
+  void               *return_address,
+  rtems_record_event  event,
+  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 = event;
+  items[ 0 ].data = (rtems_record_data) 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 _Record_Entry_10(
+  void               *return_address,
+  rtems_record_event  event,
+  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 = event;
+  items[ 0 ].data = (rtems_record_data) 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_Exit_2(
+  void               *return_address,
+  rtems_record_event  event,
+  rtems_record_data   data_0,
+  rtems_record_data   data_1
+)
+{
+  rtems_record_item items[ 3 ];
+
+  items[ 0 ].event = event;
+  items[ 0 ].data = (rtems_record_data) return_address;
+  items[ 1 ].event = RTEMS_RECORD_RETURN_0;
+  items[ 1 ].data = data_0;
+  items[ 2 ].event = RTEMS_RECORD_RETURN_1;
+  items[ 2 ].data = data_1;
+  rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Exit_3(
+  void               *return_address,
+  rtems_record_event  event,
+  rtems_record_data   data_0,
+  rtems_record_data   data_1,
+  rtems_record_data   data_2
+)
+{
+  rtems_record_item items[ 4 ];
+
+  items[ 0 ].event = event;
+  items[ 0 ].data = (rtems_record_data) return_address;
+  items[ 1 ].event = RTEMS_RECORD_RETURN_0;
+  items[ 1 ].data = data_0;
+  items[ 2 ].event = RTEMS_RECORD_RETURN_1;
+  items[ 2 ].data = data_1;
+  items[ 3 ].event = RTEMS_RECORD_RETURN_2;
+  items[ 3 ].data = data_2;
+  rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Exit_4(
+  void               *return_address,
+  rtems_record_event  event,
+  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 = event;
+  items[ 0 ].data = (rtems_record_data) return_address;
+  items[ 1 ].event = RTEMS_RECORD_RETURN_0;
+  items[ 1 ].data = data_0;
+  items[ 2 ].event = RTEMS_RECORD_RETURN_1;
+  items[ 2 ].data = data_1;
+  items[ 3 ].event = RTEMS_RECORD_RETURN_2;
+  items[ 3 ].data = data_2;
+  items[ 4 ].event = RTEMS_RECORD_RETURN_3;
+  items[ 4 ].data = data_3;
+  rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Exit_5(
+  void               *return_address,
+  rtems_record_event  event,
+  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 = event;
+  items[ 0 ].data = (rtems_record_data) return_address;
+  items[ 1 ].event = RTEMS_RECORD_RETURN_0;
+  items[ 1 ].data = data_0;
+  items[ 2 ].event = RTEMS_RECORD_RETURN_1;
+  items[ 2 ].data = data_1;
+  items[ 3 ].event = RTEMS_RECORD_RETURN_2;
+  items[ 3 ].data = data_2;
+  items[ 4 ].event = RTEMS_RECORD_RETURN_3;
+  items[ 4 ].data = data_3;
+  items[ 5 ].event = RTEMS_RECORD_RETURN_4;
+  items[ 5 ].data = data_4;
+  rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Exit_6(
+  void               *return_address,
+  rtems_record_event  event,
+  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 = event;
+  items[ 0 ].data = (rtems_record_data) return_address;
+  items[ 1 ].event = RTEMS_RECORD_RETURN_0;
+  items[ 1 ].data = data_0;
+  items[ 2 ].event = RTEMS_RECORD_RETURN_1;
+  items[ 2 ].data = data_1;
+  items[ 3 ].event = RTEMS_RECORD_RETURN_2;
+  items[ 3 ].data = data_2;
+  items[ 4 ].event = RTEMS_RECORD_RETURN_3;
+  items[ 4 ].data = data_3;
+  items[ 5 ].event = RTEMS_RECORD_RETURN_4;
+  items[ 5 ].data = data_4;
+  items[ 6 ].event = RTEMS_RECORD_RETURN_5;
+  items[ 6 ].data = data_5;
+  rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Exit_7(
+  void               *return_address,
+  rtems_record_event  event,
+  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 = event;
+  items[ 0 ].data = (rtems_record_data) return_address;
+  items[ 1 ].event = RTEMS_RECORD_RETURN_0;
+  items[ 1 ].data = data_0;
+  items[ 2 ].event = RTEMS_RECORD_RETURN_1;
+  items[ 2 ].data = data_1;
+  items[ 3 ].event = RTEMS_RECORD_RETURN_2;
+  items[ 3 ].data = data_2;
+  items[ 4 ].event = RTEMS_RECORD_RETURN_3;
+  items[ 4 ].data = data_3;
+  items[ 5 ].event = RTEMS_RECORD_RETURN_4;
+  items[ 5 ].data = data_4;
+  items[ 6 ].event = RTEMS_RECORD_RETURN_5;
+  items[ 6 ].data = data_5;
+  items[ 7 ].event = RTEMS_RECORD_RETURN_6;
+  items[ 7 ].data = data_6;
+  rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Exit_8(
+  void               *return_address,
+  rtems_record_event  event,
+  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 = event;
+  items[ 0 ].data = (rtems_record_data) return_address;
+  items[ 1 ].event = RTEMS_RECORD_RETURN_0;
+  items[ 1 ].data = data_0;
+  items[ 2 ].event = RTEMS_RECORD_RETURN_1;
+  items[ 2 ].data = data_1;
+  items[ 3 ].event = RTEMS_RECORD_RETURN_2;
+  items[ 3 ].data = data_2;
+  items[ 4 ].event = RTEMS_RECORD_RETURN_3;
+  items[ 4 ].data = data_3;
+  items[ 5 ].event = RTEMS_RECORD_RETURN_4;
+  items[ 5 ].data = data_4;
+  items[ 6 ].event = RTEMS_RECORD_RETURN_5;
+  items[ 6 ].data = data_5;
+  items[ 7 ].event = RTEMS_RECORD_RETURN_6;
+  items[ 7 ].data = data_6;
+  items[ 8 ].event = RTEMS_RECORD_RETURN_7;
+  items[ 8 ].data = data_7;
+  rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Exit_9(
+  void               *return_address,
+  rtems_record_event  event,
+  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 = event;
+  items[ 0 ].data = (rtems_record_data) return_address;
+  items[ 1 ].event = RTEMS_RECORD_RETURN_0;
+  items[ 1 ].data = data_0;
+  items[ 2 ].event = RTEMS_RECORD_RETURN_1;
+  items[ 2 ].data = data_1;
+  items[ 3 ].event = RTEMS_RECORD_RETURN_2;
+  items[ 3 ].data = data_2;
+  items[ 4 ].event = RTEMS_RECORD_RETURN_3;
+  items[ 4 ].data = data_3;
+  items[ 5 ].event = RTEMS_RECORD_RETURN_4;
+  items[ 5 ].data = data_4;
+  items[ 6 ].event = RTEMS_RECORD_RETURN_5;
+  items[ 6 ].data = data_5;
+  items[ 7 ].event = RTEMS_RECORD_RETURN_6;
+  items[ 7 ].data = data_6;
+  items[ 8 ].event = RTEMS_RECORD_RETURN_7;
+  items[ 8 ].data = data_7;
+  items[ 9 ].event = RTEMS_RECORD_RETURN_8;
+  items[ 9 ].data = data_8;
+  rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
+void _Record_Exit_10(
+  void               *return_address,
+  rtems_record_event  event,
+  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 = event;
+  items[ 0 ].data = (rtems_record_data) return_address;
+  items[ 1 ].event = RTEMS_RECORD_RETURN_0;
+  items[ 1 ].data = data_0;
+  items[ 2 ].event = RTEMS_RECORD_RETURN_1;
+  items[ 2 ].data = data_1;
+  items[ 3 ].event = RTEMS_RECORD_RETURN_2;
+  items[ 3 ].data = data_2;
+  items[ 4 ].event = RTEMS_RECORD_RETURN_3;
+  items[ 4 ].data = data_3;
+  items[ 5 ].event = RTEMS_RECORD_RETURN_4;
+  items[ 5 ].data = data_4;
+  items[ 6 ].event = RTEMS_RECORD_RETURN_5;
+  items[ 6 ].data = data_5;
+  items[ 7 ].event = RTEMS_RECORD_RETURN_6;
+  items[ 7 ].data = data_6;
+  items[ 8 ].event = RTEMS_RECORD_RETURN_7;
+  items[ 8 ].data = data_7;
+  items[ 9 ].event = RTEMS_RECORD_RETURN_8;
+  items[ 9 ].data = data_8;
+  items[ 10 ].event = RTEMS_RECORD_RETURN_9;
+  items[ 10 ].data = data_9;
+  rtems_record_produce_n( items, RTEMS_ARRAY_SIZE( items ) );
+}
+
 uint32_t rtems_record_interrupt_disable( void )
 {
   uint32_t             level;
diff --git a/testsuites/libtests/record02/init.c b/testsuites/libtests/record02/init.c
index f4c19f1..22671a7 100644
--- a/testsuites/libtests/record02/init.c
+++ b/testsuites/libtests/record02/init.c
@@ -136,6 +136,28 @@ static void Init(rtems_task_argument arg)
   rtems_record_caller_arg_8(0, 1, 2, 3, 4, 5, 6, 7);
   rtems_record_caller_arg_9(0, 1, 2, 3, 4, 5, 6, 7, 8);
   rtems_record_caller_arg_10(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
+  rtems_record_entry(RTEMS_RECORD_USER_3);
+  rtems_record_entry_1(RTEMS_RECORD_USER_3, 0);
+  rtems_record_entry_2(RTEMS_RECORD_USER_3, 0, 1);
+  rtems_record_entry_3(RTEMS_RECORD_USER_3, 0, 1, 2);
+  rtems_record_entry_4(RTEMS_RECORD_USER_3, 0, 1, 2, 3);
+  rtems_record_entry_5(RTEMS_RECORD_USER_3, 0, 1, 2, 3, 4);
+  rtems_record_entry_6(RTEMS_RECORD_USER_3, 0, 1, 2, 3, 4, 5);
+  rtems_record_entry_7(RTEMS_RECORD_USER_3, 0, 1, 2, 3, 4, 5, 6);
+  rtems_record_entry_8(RTEMS_RECORD_USER_3, 0, 1, 2, 3, 4, 5, 6, 7);
+  rtems_record_entry_9(RTEMS_RECORD_USER_3, 0, 1, 2, 3, 4, 5, 6, 7, 8);
+  rtems_record_entry_10(RTEMS_RECORD_USER_3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
+  rtems_record_exit(RTEMS_RECORD_USER_4);
+  rtems_record_exit_1(RTEMS_RECORD_USER_4, 0);
+  rtems_record_exit_2(RTEMS_RECORD_USER_4, 0, 1);
+  rtems_record_exit_3(RTEMS_RECORD_USER_4, 0, 1, 2);
+  rtems_record_exit_4(RTEMS_RECORD_USER_4, 0, 1, 2, 3);
+  rtems_record_exit_5(RTEMS_RECORD_USER_4, 0, 1, 2, 3, 4);
+  rtems_record_exit_6(RTEMS_RECORD_USER_4, 0, 1, 2, 3, 4, 5);
+  rtems_record_exit_7(RTEMS_RECORD_USER_4, 0, 1, 2, 3, 4, 5, 6);
+  rtems_record_exit_8(RTEMS_RECORD_USER_4, 0, 1, 2, 3, 4, 5, 6, 7);
+  rtems_record_exit_9(RTEMS_RECORD_USER_4, 0, 1, 2, 3, 4, 5, 6, 7, 8);
+  rtems_record_exit_10(RTEMS_RECORD_USER_4, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
   level = rtems_record_interrupt_disable();
   rtems_record_interrupt_enable(level);
 




More information about the vc mailing list