diff options
-rw-r--r-- | cpukit/include/rtems/record.h | 907 | ||||
-rw-r--r-- | cpukit/include/rtems/recorddata.h | 62 | ||||
-rw-r--r-- | cpukit/libtrace/record/record-text.c | 60 | ||||
-rw-r--r-- | cpukit/libtrace/record/record-util.c | 540 | ||||
-rw-r--r-- | 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 f400f02dac..4e1c469173 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 f0d02e6c11..ae63986d8e 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 dd45ceeab0..6a6ae62f34 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 a7189b1716..8fa542b9b4 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 f4c19f1092..22671a7c0a 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); |