summaryrefslogtreecommitdiffstats
path: root/cpukit/include
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/include')
-rw-r--r--cpukit/include/rtems/record.h750
-rw-r--r--cpukit/include/rtems/recorddata.h130
2 files changed, 807 insertions, 73 deletions
diff --git a/cpukit/include/rtems/record.h b/cpukit/include/rtems/record.h
index 0446c2ae69..2d1b2f4809 100644
--- a/cpukit/include/rtems/record.h
+++ b/cpukit/include/rtems/record.h
@@ -34,7 +34,6 @@
#include <rtems/score/cpu.h>
#include <rtems/score/percpu.h>
#include <rtems/score/watchdog.h>
-#include <rtems/rtems/intr.h>
#include <rtems/counter.h>
#ifdef __cplusplus
@@ -57,10 +56,10 @@ typedef struct {
} Record_Configuration;
typedef struct {
- Record_Control *control;
- unsigned int head;
- uint32_t now;
- rtems_interrupt_level level;
+ Record_Control *control;
+ unsigned int head;
+ uint32_t now;
+ uint32_t level;
} rtems_record_context;
extern const Record_Configuration _Record_Configuration;
@@ -165,6 +164,114 @@ typedef struct RTEMS_PACKED {
void _Record_Stream_header_initialize( Record_Stream_header *header );
+void _Record_Caller( void *return_address );
+
+void _Record_Caller_3(
+ void *return_address,
+ rtems_record_event event,
+ rtems_record_data data
+);
+
+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
+);
+
+void _Record_Caller_arg( void *return_address, rtems_record_data data );
+
+void _Record_Caller_arg_2(
+ void *return_address,
+ rtems_record_data data_0,
+ rtems_record_data data_1
+);
+
+void _Record_Caller_arg_3(
+ void *return_address,
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2
+);
+
+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
+);
+
+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
+);
+
+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
+);
+
+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
+);
+
+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
+);
+
+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
+);
+
+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
+);
+
/**
* @addtogroup RTEMSRecord
*
@@ -212,12 +319,13 @@ RTEMS_INLINE_ROUTINE void rtems_record_prepare_critical(
*/
RTEMS_INLINE_ROUTINE void rtems_record_prepare( rtems_record_context *context )
{
- rtems_interrupt_level level;
+ uint32_t level;
const Per_CPU_Control *cpu_self;
Record_Control *control;
unsigned int head;
- rtems_interrupt_local_disable( level );
+ _CPU_ISR_Disable( level );
+ RTEMS_COMPILER_MEMORY_BARRIER();
context->now = RTEMS_RECORD_TIME_EVENT( _Record_Now(), 0 );
context->level = level;
cpu_self = _Per_CPU_Get();
@@ -277,7 +385,8 @@ RTEMS_INLINE_ROUTINE void rtems_record_commit_critical( rtems_record_context *co
RTEMS_INLINE_ROUTINE void rtems_record_commit( rtems_record_context *context )
{
rtems_record_commit_critical( context );
- rtems_interrupt_local_enable( context->level );
+ RTEMS_COMPILER_MEMORY_BARRIER();
+ _CPU_ISR_Enable( context->level );
}
/**
@@ -314,6 +423,631 @@ void rtems_record_produce_n(
size_t n
);
+/**
+ * @brief Generates an RTEMS_RECORD_LINE event.
+ *
+ * The event data is the address of the call to this function.
+ */
+void rtems_record_line( void );
+
+/**
+ * @brief Generates an RTEMS_RECORD_LINE event and an extra event.
+ *
+ * The event data is the address of the call to this function.
+ *
+ * @param event The record event without a time stamp for the second item.
+ * @param data The record data for the second item.
+ */
+void rtems_record_line_2(
+ rtems_record_event event,
+ rtems_record_data data
+);
+
+/**
+ * @brief Generates an RTEMS_RECORD_LINE event and two extra events.
+ *
+ * The event data is the address of the call to this function.
+ *
+ * @param event_0 The record event without a time stamp for the second item.
+ * @param data_0 The record data for the second item.
+ * @param event_1 The record event without a time stamp for the third item.
+ * @param data_1 The record data for the third item.
+ */
+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
+);
+
+/**
+ * @brief Generates an RTEMS_RECORD_LINE event and one argument event.
+ *
+ * The event data of the RTEMS_RECORD_LINE event is the address of the call to
+ * this function.
+ *
+ * @param data The RTEMS_RECORD_ARG_0 event data.
+ */
+void rtems_record_line_arg( rtems_record_data data );
+
+/**
+ * @brief Generates an RTEMS_RECORD_LINE event and two argument events.
+ *
+ * The event data of the RTEMS_RECORD_LINE event is the address of the call to
+ * this function.
+ *
+ * @param data_0 The RTEMS_RECORD_ARG_0 event data.
+ * @param data_1 The RTEMS_RECORD_ARG_1 event data.
+ */
+void rtems_record_line_arg_2(
+ rtems_record_data data_0,
+ rtems_record_data data_1
+);
+
+/**
+ * @brief Generates an RTEMS_RECORD_LINE event and three argument events.
+ *
+ * The event data of the RTEMS_RECORD_LINE event is the address of the call to
+ * this function.
+ *
+ * @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.
+ */
+void rtems_record_line_arg_3(
+ rtems_record_data data_0,
+ rtems_record_data data_1,
+ rtems_record_data data_2
+);
+
+/**
+ * @brief Generates an RTEMS_RECORD_LINE event and four argument events.
+ *
+ * The event data of the RTEMS_RECORD_LINE event is the address of the call to
+ * this function.
+ *
+ * @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.
+ */
+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
+);
+
+/**
+ * @brief Generates an RTEMS_RECORD_LINE event and five argument events.
+ *
+ * The event data of the RTEMS_RECORD_LINE event is the address of the call to
+ * this function.
+ *
+ * @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.
+ */
+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
+);
+
+/**
+ * @brief Generates an RTEMS_RECORD_LINE event and six argument events.
+ *
+ * The event data of the RTEMS_RECORD_LINE event is the address of the call to
+ * this function.
+ *
+ * @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.
+ */
+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
+);
+
+/**
+ * @brief Generates an RTEMS_RECORD_LINE event and seven argument events.
+ *
+ * The event data of the RTEMS_RECORD_LINE event is the address of the call to
+ * this function.
+ *
+ * @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.
+ */
+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
+);
+
+/**
+ * @brief Generates an RTEMS_RECORD_LINE event and eight argument events.
+ *
+ * The event data of the RTEMS_RECORD_LINE event is the address of the call to
+ * this function.
+ *
+ * @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.
+ */
+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
+);
+
+/**
+ * @brief Generates an RTEMS_RECORD_LINE event and nine argument events.
+ *
+ * The event data of the RTEMS_RECORD_LINE event is the address of the call to
+ * this function.
+ *
+ * @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.
+ */
+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
+);
+
+/**
+ * @brief Generates an RTEMS_RECORD_LINE event and ten argument events.
+ *
+ * The event data of the RTEMS_RECORD_LINE event is the address of the call to
+ * this function.
+ *
+ * @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_9 The RTEMS_RECORD_ARG_9 event data.
+ */
+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
+);
+
+/**
+ * @brief Generates an RTEMS_RECORD_CALLER and an RTEMS_RECORD_LINE event.
+ *
+ * The RTEMS_RECORD_CALLER event data is the return address of the function
+ * calling rtems_record_caller().
+ *
+ * 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() )
+
+/**
+ * @brief Generates an RTEMS_RECORD_CALLER, an RTEMS_RECORD_LINE event, and an
+ * extra event.
+ *
+ * The RTEMS_RECORD_CALLER event data is the return address of the function
+ * calling rtems_record_caller_3().
+ *
+ * The RTEMS_RECORD_LINE event data is the address of the call to
+ * rtems_record_caller_3().
+ *
+ * @param event The record event without a time stamp for the third item.
+ * @param data The record data for the third item.
+ */
+#define rtems_record_caller_3( event, data ) \
+ _Record_Caller_3( RTEMS_RETURN_ADDRESS(), event, data )
+
+/**
+ * @brief Generates an RTEMS_RECORD_CALLER, an RTEMS_RECORD_LINE event, and two
+ * extra events.
+ *
+ * The RTEMS_RECORD_CALLER event data is the return address of the function
+ * calling rtems_record_caller_4().
+ *
+ * The RTEMS_RECORD_LINE event data is the address of the call to
+ * rtems_record_caller_4().
+ *
+ * @param event_0 The record event without a time stamp for the third item.
+ * @param data_0 The record data for the third item.
+ * @param event_1 The record event without a time stamp for the fourth item.
+ * @param data_1 The record data for the fourth item.
+ */
+#define rtems_record_caller_4( event_0, data_0, event_1, data_1 ) \
+ _Record_Caller_4( \
+ RTEMS_RETURN_ADDRESS(), \
+ event_0, \
+ data_0, \
+ event_1, \
+ data_1 \
+ )
+
+/**
+ * @brief Generates an RTEMS_RECORD_CALLER event, an RTEMS_RECORD_LINE event,
+ * and one argument event.
+ *
+ * The RTEMS_RECORD_CALLER event data is the return address of the function
+ * calling rtems_record_caller_arg().
+ *
+ * The RTEMS_RECORD_LINE event data is the address of the call to
+ * rtems_record_caller_arg().
+ *
+ * @param data The RTEMS_RECORD_ARG_0 event data.
+ */
+#define rtems_record_caller_arg( data ) \
+ _Record_Caller_arg( RTEMS_RETURN_ADDRESS(), data )
+
+/**
+ * @brief Generates an RTEMS_RECORD_CALLER event, an RTEMS_RECORD_LINE event,
+ * and two argument events.
+ *
+ * The RTEMS_RECORD_CALLER event data is the return address of the function
+ * calling rtems_record_caller_arg_2().
+ *
+ * The RTEMS_RECORD_LINE event data is the address of the call to
+ * rtems_record_caller_arg_2().
+ *
+ * @param data_0 The RTEMS_RECORD_ARG_0 event data.
+ * @param data_1 The RTEMS_RECORD_ARG_1 event data.
+ */
+#define rtems_record_caller_arg_2( data_0, data_1 ) \
+ _Record_Caller_arg_2( \
+ RTEMS_RETURN_ADDRESS(), \
+ data_0, \
+ data_1 \
+ )
+
+/**
+ * @brief Generates an RTEMS_RECORD_CALLER event, an RTEMS_RECORD_LINE event,
+ * and three argument events.
+ *
+ * The RTEMS_RECORD_CALLER event data is the return address of the function
+ * calling rtems_record_caller_arg_3().
+ *
+ * The RTEMS_RECORD_LINE event data is the address of the call to
+ * rtems_record_caller_arg_3().
+ *
+ * @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_caller_arg_3( data_0, data_1, data_2 ) \
+ _Record_Caller_arg_3( \
+ RTEMS_RETURN_ADDRESS(), \
+ data_0, \
+ data_1, \
+ data_2 \
+ )
+
+/**
+ * @brief Generates an RTEMS_RECORD_CALLER event, an RTEMS_RECORD_LINE event,
+ * and four argument events.
+ *
+ * The RTEMS_RECORD_CALLER event data is the return address of the function
+ * calling rtems_record_caller_arg_4().
+ *
+ * The RTEMS_RECORD_LINE event data is the address of the call to
+ * rtems_record_caller_arg_4().
+ *
+ * @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_caller_arg_4( data_0, data_1, data_2, data_3 ) \
+ _Record_Caller_arg_4( \
+ RTEMS_RETURN_ADDRESS(), \
+ data_0, \
+ data_1, \
+ data_2, \
+ data_3 \
+ )
+
+/**
+ * @brief Generates an RTEMS_RECORD_CALLER event, an RTEMS_RECORD_LINE event,
+ * and five argument events.
+ *
+ * The RTEMS_RECORD_CALLER event data is the return address of the function
+ * calling rtems_record_caller_arg_5().
+ *
+ * The RTEMS_RECORD_LINE event data is the address of the call to
+ * rtems_record_caller_arg_5().
+ *
+ * @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_caller_arg_5( data_0, data_1, data_2, data_3, data_4 ) \
+ _Record_Caller_arg_5( \
+ RTEMS_RETURN_ADDRESS(), \
+ data_0, \
+ data_1, \
+ data_2, \
+ data_3, \
+ data_4 \
+ )
+
+/**
+ * @brief Generates an RTEMS_RECORD_CALLER event, an RTEMS_RECORD_LINE event,
+ * and six argument events.
+ *
+ * The RTEMS_RECORD_CALLER event data is the return address of the function
+ * calling rtems_record_caller_arg_6().
+ *
+ * The RTEMS_RECORD_LINE event data is the address of the call to
+ * rtems_record_caller_arg_6().
+ *
+ * @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_caller_arg_6( \
+ data_0, \
+ data_1, \
+ data_2, \
+ data_3, \
+ data_4, \
+ data_5 \
+) \
+ _Record_Caller_arg_6( \
+ RTEMS_RETURN_ADDRESS(), \
+ data_0, \
+ data_1, \
+ data_2, \
+ data_3, \
+ data_4, \
+ data_5 \
+ )
+
+/**
+ * @brief Generates an RTEMS_RECORD_CALLER event, an RTEMS_RECORD_LINE event,
+ * and seven argument events.
+ *
+ * The RTEMS_RECORD_CALLER event data is the return address of the function
+ * calling rtems_record_caller_arg_7().
+ *
+ * The RTEMS_RECORD_LINE event data is the address of the call to
+ * rtems_record_caller_arg_7().
+ *
+ * @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_caller_arg_7( \
+ data_0, \
+ data_1, \
+ data_2, \
+ data_3, \
+ data_4, \
+ data_5, \
+ data_6 \
+) \
+ _Record_Caller_arg_7( \
+ RTEMS_RETURN_ADDRESS(), \
+ data_0, \
+ data_1, \
+ data_2, \
+ data_3, \
+ data_4, \
+ data_5, \
+ data_6 \
+ )
+
+/**
+ * @brief Generates an RTEMS_RECORD_CALLER event, an RTEMS_RECORD_LINE event,
+ * and eight argument events.
+ *
+ * The RTEMS_RECORD_CALLER event data is the return address of the function
+ * calling rtems_record_caller_arg_8().
+ *
+ * The RTEMS_RECORD_LINE event data is the address of the call to
+ * rtems_record_caller_arg_8().
+ *
+ * @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_caller_arg_8( \
+ data_0, \
+ data_1, \
+ data_2, \
+ data_3, \
+ data_4, \
+ data_5, \
+ data_6, \
+ data_7 \
+) \
+ _Record_Caller_arg_8( \
+ RTEMS_RETURN_ADDRESS(), \
+ data_0, \
+ data_1, \
+ data_2, \
+ data_3, \
+ data_4, \
+ data_5, \
+ data_6, \
+ data_7 \
+ )
+
+/**
+ * @brief Generates an RTEMS_RECORD_CALLER event, an RTEMS_RECORD_LINE event,
+ * and nine argument events.
+ *
+ * The RTEMS_RECORD_CALLER event data is the return address of the function
+ * calling rtems_record_caller_arg_9().
+ *
+ * The RTEMS_RECORD_LINE event data is the address of the call to
+ * rtems_record_caller_arg_9().
+ *
+ * @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_caller_arg_9( \
+ 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(), \
+ data_0, \
+ data_1, \
+ data_2, \
+ data_3, \
+ data_4, \
+ data_5, \
+ data_6, \
+ data_7, \
+ data_8 \
+ )
+
+/**
+ * @brief Generates an RTEMS_RECORD_CALLER event, an RTEMS_RECORD_LINE event,
+ * and ten argument events.
+ *
+ * The RTEMS_RECORD_CALLER event data is the return address of the function
+ * calling rtems_record_caller_arg_10().
+ *
+ * The RTEMS_RECORD_LINE event data is the address of the call to
+ * rtems_record_caller_arg_10().
+ *
+ * @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_caller_arg_10( \
+ 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(), \
+ 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.
+ */
+uint32_t rtems_record_interrupt_disable( void );
+
+/**
+ * @brief Restores the previous interrupt level and generates an
+ * RTEMS_RECORD_ISR_ENABLE event.
+ *
+ * @param level The previous interrupt level. Must be the return value of the
+ * corresponding rtems_record_interrupt_disable().
+ */
+void rtems_record_interrupt_enable( uint32_t level );
+
typedef void ( *rtems_record_drain_visitor )(
const rtems_record_item *items,
size_t count,
diff --git a/cpukit/include/rtems/recorddata.h b/cpukit/include/rtems/recorddata.h
index 607955c596..3b03be9890 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 5
+#define RTEMS_RECORD_THE_VERSION 6
/**
* @brief The items are in 32-bit little-endian format.
@@ -98,9 +98,21 @@ typedef enum {
*/
RTEMS_RECORD_ACCEPT_ENTRY,
RTEMS_RECORD_ACCEPT_EXIT,
+ RTEMS_RECORD_ADDRESS,
+ RTEMS_RECORD_ARG_0,
+ RTEMS_RECORD_ARG_1,
+ RTEMS_RECORD_ARG_2,
+ RTEMS_RECORD_ARG_3,
+ RTEMS_RECORD_ARG_4,
+ RTEMS_RECORD_ARG_5,
+ RTEMS_RECORD_ARG_6,
+ RTEMS_RECORD_ARG_7,
+ RTEMS_RECORD_ARG_8,
+ RTEMS_RECORD_ARG_9,
RTEMS_RECORD_BIND_ENTRY,
RTEMS_RECORD_BIND_EXIT,
RTEMS_RECORD_BUFFER,
+ RTEMS_RECORD_CALLER,
RTEMS_RECORD_CHOWN_ENTRY,
RTEMS_RECORD_CHOWN_EXIT,
RTEMS_RECORD_CLOSE_ENTRY,
@@ -145,11 +157,21 @@ typedef enum {
RTEMS_RECORD_IP6_OUTPUT,
RTEMS_RECORD_IP_INPUT,
RTEMS_RECORD_IP_OUTPUT,
+ RTEMS_RECORD_ISR_DISABLE,
+ RTEMS_RECORD_ISR_ENABLE,
+ RTEMS_RECORD_ISR_LOCK_ACQUIRE_ENTRY,
+ RTEMS_RECORD_ISR_LOCK_ACQUIRE_EXIT,
+ RTEMS_RECORD_ISR_LOCK_ADDRESS,
+ RTEMS_RECORD_ISR_LOCK_DESTROY,
+ RTEMS_RECORD_ISR_LOCK_INITIALIZE,
+ RTEMS_RECORD_ISR_LOCK_NAME,
+ RTEMS_RECORD_ISR_LOCK_RELEASE,
RTEMS_RECORD_KEVENT_ENTRY,
RTEMS_RECORD_KEVENT_EXIT,
RTEMS_RECORD_KQUEUE_ENTRY,
RTEMS_RECORD_KQUEUE_EXIT,
RTEMS_RECORD_LENGTH,
+ RTEMS_RECORD_LINE,
RTEMS_RECORD_LINK_ENTRY,
RTEMS_RECORD_LINK_EXIT,
RTEMS_RECORD_LISTEN_ENTRY,
@@ -228,6 +250,26 @@ typedef enum {
RTEMS_RECORD_SBWAIT_EXIT,
RTEMS_RECORD_SBWAKEUP_ENTRY,
RTEMS_RECORD_SBWAKEUP_EXIT,
+ RTEMS_RECORD_SCHEDULER_ADD_PROCESSOR,
+ RTEMS_RECORD_SCHEDULER_ASK_FOR_HELP,
+ RTEMS_RECORD_SCHEDULER_BLOCK,
+ RTEMS_RECORD_SCHEDULER_CANCEL_JOB,
+ RTEMS_RECORD_SCHEDULER_ID,
+ RTEMS_RECORD_SCHEDULER_MAP_PRIORITY,
+ RTEMS_RECORD_SCHEDULER_NAME,
+ RTEMS_RECORD_SCHEDULER_PIN,
+ RTEMS_RECORD_SCHEDULER_RECONSIDER_HELP_REQUEST,
+ RTEMS_RECORD_SCHEDULER_RELEASE_JOB,
+ RTEMS_RECORD_SCHEDULER_REMOVE_PROCESSOR,
+ RTEMS_RECORD_SCHEDULER_SCHEDULE,
+ RTEMS_RECORD_SCHEDULER_SET_AFFINITY,
+ RTEMS_RECORD_SCHEDULER_TICK,
+ RTEMS_RECORD_SCHEDULER_UNBLOCK,
+ RTEMS_RECORD_SCHEDULER_UNMAP_PRIORITY,
+ RTEMS_RECORD_SCHEDULER_UNPIN,
+ RTEMS_RECORD_SCHEDULER_UPDATE_PRIORITY,
+ RTEMS_RECORD_SCHEDULER_WITHDRAW_NODE,
+ RTEMS_RECORD_SCHEDULER_YIELD,
RTEMS_RECORD_SELECT_ENTRY,
RTEMS_RECORD_SELECT_EXIT,
RTEMS_RECORD_SEND_ENTRY,
@@ -286,8 +328,12 @@ typedef enum {
RTEMS_RECORD_TCP_INPUT,
RTEMS_RECORD_TCP_OUTPUT,
RTEMS_RECORD_THREAD_BEGIN,
+ RTEMS_RECORD_THREAD_CONTINUE_ENTRY,
+ RTEMS_RECORD_THREAD_CONTINUE_EXIT,
RTEMS_RECORD_THREAD_CREATE,
RTEMS_RECORD_THREAD_DELETE,
+ RTEMS_RECORD_THREAD_DISPATCH_DISABLE,
+ RTEMS_RECORD_THREAD_DISPATCH_ENABLE,
RTEMS_RECORD_THREAD_EXIT,
RTEMS_RECORD_THREAD_EXITTED,
RTEMS_RECORD_THREAD_ID,
@@ -296,9 +342,14 @@ typedef enum {
RTEMS_RECORD_THREAD_PRIO_CURRENT_LOW,
RTEMS_RECORD_THREAD_PRIO_REAL_HIGH,
RTEMS_RECORD_THREAD_PRIO_REAL_LOW,
+ RTEMS_RECORD_THREAD_QUEUE_ADDRESS,
+ RTEMS_RECORD_THREAD_QUEUE_DESTROY,
RTEMS_RECORD_THREAD_QUEUE_ENQUEUE,
RTEMS_RECORD_THREAD_QUEUE_ENQUEUE_STICKY,
RTEMS_RECORD_THREAD_QUEUE_EXTRACT,
+ RTEMS_RECORD_THREAD_QUEUE_ID,
+ RTEMS_RECORD_THREAD_QUEUE_INITIALIZE,
+ RTEMS_RECORD_THREAD_QUEUE_NAME,
RTEMS_RECORD_THREAD_QUEUE_SURRENDER,
RTEMS_RECORD_THREAD_QUEUE_SURRENDER_STICKY,
RTEMS_RECORD_THREAD_RESOURCE_OBTAIN,
@@ -313,6 +364,10 @@ typedef enum {
RTEMS_RECORD_THREAD_SWITCH_IN,
RTEMS_RECORD_THREAD_SWITCH_OUT,
RTEMS_RECORD_THREAD_TERMINATE,
+ RTEMS_RECORD_THREAD_TIMER_INSERT_MONOTONIC,
+ RTEMS_RECORD_THREAD_TIMER_INSERT_REALTIME,
+ RTEMS_RECORD_THREAD_TIMER_INSERT_TICKS,
+ RTEMS_RECORD_THREAD_TIMER_REMOVE,
RTEMS_RECORD_UDP_INPUT,
RTEMS_RECORD_UDP_OUTPUT,
RTEMS_RECORD_UMA_ALLOC_PTR,
@@ -325,6 +380,14 @@ typedef enum {
RTEMS_RECORD_UNMOUNT_EXIT,
RTEMS_RECORD_UPTIME_HIGH,
RTEMS_RECORD_UPTIME_LOW,
+ RTEMS_RECORD_WATCHDOG_ADDRESS,
+ RTEMS_RECORD_WATCHDOG_CPU,
+ RTEMS_RECORD_WATCHDOG_INITIALIZE,
+ RTEMS_RECORD_WATCHDOG_INSERT,
+ RTEMS_RECORD_WATCHDOG_PREINITIALIZE,
+ RTEMS_RECORD_WATCHDOG_REMOVE,
+ RTEMS_RECORD_WATCHDOG_ROUTINE,
+ RTEMS_RECORD_WATCHDOG_STATE,
RTEMS_RECORD_WORKSPACE_ALLOC,
RTEMS_RECORD_WORKSPACE_FREE,
RTEMS_RECORD_WORKSPACE_SIZE,
@@ -335,70 +398,6 @@ typedef enum {
RTEMS_RECORD_WRITEV_EXIT,
/* Unused system events */
- RTEMS_RECORD_SYSTEM_238,
- RTEMS_RECORD_SYSTEM_239,
- RTEMS_RECORD_SYSTEM_240,
- RTEMS_RECORD_SYSTEM_241,
- RTEMS_RECORD_SYSTEM_242,
- RTEMS_RECORD_SYSTEM_243,
- RTEMS_RECORD_SYSTEM_244,
- RTEMS_RECORD_SYSTEM_245,
- RTEMS_RECORD_SYSTEM_246,
- RTEMS_RECORD_SYSTEM_247,
- RTEMS_RECORD_SYSTEM_248,
- RTEMS_RECORD_SYSTEM_249,
- RTEMS_RECORD_SYSTEM_250,
- RTEMS_RECORD_SYSTEM_251,
- RTEMS_RECORD_SYSTEM_252,
- RTEMS_RECORD_SYSTEM_253,
- RTEMS_RECORD_SYSTEM_254,
- RTEMS_RECORD_SYSTEM_255,
- RTEMS_RECORD_SYSTEM_256,
- RTEMS_RECORD_SYSTEM_257,
- RTEMS_RECORD_SYSTEM_258,
- RTEMS_RECORD_SYSTEM_259,
- RTEMS_RECORD_SYSTEM_260,
- RTEMS_RECORD_SYSTEM_261,
- RTEMS_RECORD_SYSTEM_262,
- RTEMS_RECORD_SYSTEM_263,
- RTEMS_RECORD_SYSTEM_264,
- RTEMS_RECORD_SYSTEM_265,
- RTEMS_RECORD_SYSTEM_266,
- RTEMS_RECORD_SYSTEM_267,
- RTEMS_RECORD_SYSTEM_268,
- RTEMS_RECORD_SYSTEM_269,
- RTEMS_RECORD_SYSTEM_270,
- RTEMS_RECORD_SYSTEM_271,
- RTEMS_RECORD_SYSTEM_272,
- RTEMS_RECORD_SYSTEM_273,
- RTEMS_RECORD_SYSTEM_274,
- RTEMS_RECORD_SYSTEM_275,
- RTEMS_RECORD_SYSTEM_276,
- RTEMS_RECORD_SYSTEM_277,
- RTEMS_RECORD_SYSTEM_278,
- RTEMS_RECORD_SYSTEM_279,
- RTEMS_RECORD_SYSTEM_280,
- RTEMS_RECORD_SYSTEM_281,
- RTEMS_RECORD_SYSTEM_282,
- RTEMS_RECORD_SYSTEM_283,
- RTEMS_RECORD_SYSTEM_284,
- RTEMS_RECORD_SYSTEM_285,
- RTEMS_RECORD_SYSTEM_286,
- RTEMS_RECORD_SYSTEM_287,
- RTEMS_RECORD_SYSTEM_288,
- RTEMS_RECORD_SYSTEM_289,
- RTEMS_RECORD_SYSTEM_290,
- RTEMS_RECORD_SYSTEM_291,
- RTEMS_RECORD_SYSTEM_292,
- RTEMS_RECORD_SYSTEM_293,
- RTEMS_RECORD_SYSTEM_294,
- RTEMS_RECORD_SYSTEM_295,
- RTEMS_RECORD_SYSTEM_296,
- RTEMS_RECORD_SYSTEM_297,
- RTEMS_RECORD_SYSTEM_298,
- RTEMS_RECORD_SYSTEM_299,
- RTEMS_RECORD_SYSTEM_300,
- RTEMS_RECORD_SYSTEM_301,
RTEMS_RECORD_SYSTEM_302,
RTEMS_RECORD_SYSTEM_303,
RTEMS_RECORD_SYSTEM_304,
@@ -608,6 +607,7 @@ typedef enum {
RTEMS_RECORD_SYSTEM_508,
RTEMS_RECORD_SYSTEM_509,
RTEMS_RECORD_SYSTEM_510,
+ RTEMS_RECORD_SYSTEM_511,
/* There are 512 events reserved for the user */
RTEMS_RECORD_USER_0,