diff options
Diffstat (limited to 'cpukit/include/rtems/record.h')
-rw-r--r-- | cpukit/include/rtems/record.h | 750 |
1 files changed, 742 insertions, 8 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, |