From 8ace7eada4db33a6bda355979045e73c59084773 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 30 Aug 2019 09:21:22 +0200 Subject: record: Add system events Add system events to identify the target system. Add system events to transfer blocks of memory and register sets. Update #3665. --- cpukit/libtrace/record/record-server.c | 72 ++++++++++++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 3 deletions(-) (limited to 'cpukit/libtrace/record/record-server.c') diff --git a/cpukit/libtrace/record/record-server.c b/cpukit/libtrace/record/record-server.c index e19f889d8d..5e52651bd4 100644 --- a/cpukit/libtrace/record/record-server.c +++ b/cpukit/libtrace/record/record-server.c @@ -31,6 +31,7 @@ #include #include +#include #include #include @@ -120,8 +121,13 @@ static void wakeup_timer( rtems_id timer, void *arg ) (void) rtems_timer_reset( timer ); } -void _Record_Stream_header_initialize( Record_Stream_header *header ) +size_t _Record_Stream_header_initialize( Record_Stream_header *header ) { + rtems_record_item *items; + size_t available; + size_t used; + const char *str; + #if BYTE_ORDER == LITTLE_ENDIAN #if __INTPTR_WIDTH__ == 32 header->format = RTEMS_RECORD_FORMAT_LE_32, @@ -157,14 +163,74 @@ void _Record_Stream_header_initialize( Record_Stream_header *header ) header->Frequency.event = RTEMS_RECORD_TIME_EVENT( 0, RTEMS_RECORD_FREQUENCY ); header->Frequency.data = rtems_counter_frequency(); + + items = header->Info; + available = RTEMS_ARRAY_SIZE( header->Info ); + + str = CPU_NAME; + used = _Record_String_to_items( + RTEMS_RECORD_ARCH, + str, + strlen( str ), + items, + available + ); + items += used; + available -= used; + + str = CPU_MODEL_NAME; + used = _Record_String_to_items( + RTEMS_RECORD_MULTILIB, + str, + strlen( str ), + items, + available + ); + items += used; + available -= used; + + str = rtems_board_support_package(); + used = _Record_String_to_items( + RTEMS_RECORD_BSP, + str, + strlen( str ), + items, + available + ); + items += used; + available -= used; + + str = rtems_version_control_key(); + used = _Record_String_to_items( + RTEMS_RECORD_VERSION_CONTROL_KEY, + str, + strlen( str ), + items, + available + ); + items += used; + available -= used; + + str = __VERSION__; + used = _Record_String_to_items( + RTEMS_RECORD_TOOLS, + str, + strlen( str ), + items, + available + ); + items += used; + + return (size_t) ( (char *) items - (char *) header ); } static void send_header( int fd ) { Record_Stream_header header; + size_t size; - _Record_Stream_header_initialize( &header ); - (void) write( fd, &header, sizeof( header ) ); + size = _Record_Stream_header_initialize( &header ); + (void) write( fd, &header, size ); } typedef struct { -- cgit v1.2.3