summaryrefslogtreecommitdiffstats
path: root/cpukit/libtrace/record/record-userext.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-07-26 16:36:10 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-07-30 07:25:10 +0200
commit036717eda4de437336a86ca67253b7e32f67463c (patch)
tree4f1e66b65601485489148a35419cc9ffb06085eb /cpukit/libtrace/record/record-userext.c
parentAdd and use THREAD_DEFAULT_MAXIMUM_NAME_SIZE (diff)
downloadrtems-036717eda4de437336a86ca67253b7e32f67463c.tar.bz2
record: Add support for thread names
Diffstat (limited to 'cpukit/libtrace/record/record-userext.c')
-rw-r--r--cpukit/libtrace/record/record-userext.c36
1 files changed, 31 insertions, 5 deletions
diff --git a/cpukit/libtrace/record/record-userext.c b/cpukit/libtrace/record/record-userext.c
index a57a3f751e..ff448e5573 100644
--- a/cpukit/libtrace/record/record-userext.c
+++ b/cpukit/libtrace/record/record-userext.c
@@ -30,17 +30,43 @@
#endif
#include <rtems/record.h>
-#include <rtems/score/thread.h>
+#include <rtems/score/threadimpl.h>
bool _Record_Thread_create(
struct _Thread_Control *executing,
struct _Thread_Control *created
)
{
- rtems_record_produce(
- RTEMS_RECORD_THREAD_CREATE,
- created->Object.id
- );
+ rtems_record_data data;
+ char name[ 2 * THREAD_DEFAULT_MAXIMUM_NAME_SIZE ];
+ rtems_record_item items[ 1 + sizeof( name ) / sizeof( data ) ];
+ size_t n;
+ size_t i;
+ size_t j;
+
+ i = 0;
+ items[ i ].event = RTEMS_RECORD_THREAD_CREATE;
+ items[ i ].data = created->Object.id;
+
+ n = _Thread_Get_name( created, name, sizeof( name ) );
+ j = 0;
+
+ while ( j < n ) {
+ size_t k;
+
+ data = 0;
+
+ for ( k = 0; j < n && k < sizeof( data ); ++k ) {
+ data = ( data << 8 ) | name[ j ];
+ ++j;
+ }
+
+ ++i;
+ items[ i ].event = RTEMS_RECORD_THREAD_NAME;
+ items[ i ].data = data;
+ }
+
+ rtems_record_produce_n( items, i + 1 );
return true;
}