summaryrefslogtreecommitdiffstats
path: root/cpukit/libtrace/record/record-server.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-08-30 09:21:22 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-08-30 11:18:47 +0200
commit8ace7eada4db33a6bda355979045e73c59084773 (patch)
treee7b62f605b48c239da489dc74512b4a1938acdb3 /cpukit/libtrace/record/record-server.c
parentrecord: Initialize records earlier (diff)
downloadrtems-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.c72
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 {