diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-08-30 09:21:22 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-08-30 11:18:47 +0200 |
commit | 8ace7eada4db33a6bda355979045e73c59084773 (patch) | |
tree | e7b62f605b48c239da489dc74512b4a1938acdb3 /cpukit/libtrace/record/record-server.c | |
parent | record: Initialize records earlier (diff) | |
download | rtems-8ace7eada4db33a6bda355979045e73c59084773.tar.bz2 |
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.
Diffstat (limited to 'cpukit/libtrace/record/record-server.c')
-rw-r--r-- | cpukit/libtrace/record/record-server.c | 72 |
1 files changed, 69 insertions, 3 deletions
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 <rtems/recordserver.h> #include <rtems/record.h> +#include <rtems/version.h> #include <rtems/score/threadimpl.h> #include <rtems.h> @@ -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 { |