diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-07-26 16:36:10 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-07-30 07:25:10 +0200 |
commit | 036717eda4de437336a86ca67253b7e32f67463c (patch) | |
tree | 4f1e66b65601485489148a35419cc9ffb06085eb /cpukit/libtrace/record/record-userext.c | |
parent | Add and use THREAD_DEFAULT_MAXIMUM_NAME_SIZE (diff) | |
download | rtems-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.c | 36 |
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; } |