summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-08-27 08:30:43 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-08-27 08:46:38 +0200
commite273e7a9a85109bfe5bf5bc790f8c3b0b43f9c07 (patch)
treed2b47a0f629fec9ab59237d0ff6156fdb789ef7b
parentrecord: Fix thread names on 64-bit targets (diff)
downloadrtems-e273e7a9a85109bfe5bf5bc790f8c3b0b43f9c07.tar.bz2
record: Add data size to client
This is necessary to get the thread names properly on 32-bit and 64-bit targets. Update #3665.
-rw-r--r--cpukit/include/rtems/recordclient.h1
-rw-r--r--cpukit/libtrace/record/record-client.c8
2 files changed, 9 insertions, 0 deletions
diff --git a/cpukit/include/rtems/recordclient.h b/cpukit/include/rtems/recordclient.h
index 7f21d90a0e..cb1e704f99 100644
--- a/cpukit/include/rtems/recordclient.h
+++ b/cpukit/include/rtems/recordclient.h
@@ -155,6 +155,7 @@ typedef struct rtems_record_client_context {
);
rtems_record_client_handler handler;
void *handler_arg;
+ size_t data_size;
uint32_t header[ 2 ];
rtems_record_client_status status;
} rtems_record_client_context;
diff --git a/cpukit/libtrace/record/record-client.c b/cpukit/libtrace/record/record-client.c
index c26893ec4c..e1365fed6f 100644
--- a/cpukit/libtrace/record/record-client.c
+++ b/cpukit/libtrace/record/record-client.c
@@ -615,22 +615,26 @@ static rtems_record_client_status consume_init(
ctx->todo = sizeof( ctx->item.format_32 );
ctx->pos = &ctx->item.format_32;
ctx->consume = consume_32;
+ ctx->data_size = 4;
break;
case RTEMS_RECORD_FORMAT_LE_64:
ctx->todo = sizeof( ctx->item.format_64 );
ctx->pos = &ctx->item.format_64;
ctx->consume = consume_64;
+ ctx->data_size = 8;
break;
case RTEMS_RECORD_FORMAT_BE_32:
ctx->todo = sizeof( ctx->item.format_32 );
ctx->pos = &ctx->item.format_32;
ctx->consume = consume_swap_32;
+ ctx->data_size = 4;
magic = __builtin_bswap32( magic );
break;
case RTEMS_RECORD_FORMAT_BE_64:
ctx->todo = sizeof( ctx->item.format_64 );
ctx->pos = &ctx->item.format_64;
ctx->consume = consume_swap_64;
+ ctx->data_size = 8;
magic = __builtin_bswap32( magic );
break;
#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
@@ -638,23 +642,27 @@ static rtems_record_client_status consume_init(
ctx->todo = sizeof( ctx->item.format_32 );
ctx->pos = &ctx->item.format_32;
ctx->consume = consume_swap_32;
+ ctx->data_size = 4;
magic = __builtin_bswap32( magic );
break;
case RTEMS_RECORD_FORMAT_LE_64:
ctx->todo = sizeof( ctx->item.format_64 );
ctx->pos = &ctx->item.format_64;
ctx->consume = consume_swap_64;
+ ctx->data_size = 8;
magic = __builtin_bswap32( magic );
break;
case RTEMS_RECORD_FORMAT_BE_32:
ctx->todo = sizeof( ctx->item.format_32 );
ctx->pos = &ctx->item.format_32;
ctx->consume = consume_32;
+ ctx->data_size = 4;
break;
case RTEMS_RECORD_FORMAT_BE_64:
ctx->todo = sizeof( ctx->item.format_64 );
ctx->pos = &ctx->item.format_64;
ctx->consume = consume_64;
+ ctx->data_size = 8;
break;
#else
#error "unexpected __BYTE_ORDER__"