From d4762dbad1d838e7d701001783c3c9a03eb2f108 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 11 Oct 2024 05:18:42 +0200 Subject: [PATCH] record: Improve uptime association --- cpukit/libtrace/record/record-client.c | 2 +- cpukit/libtrace/record/record-sysinit.c | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/cpukit/libtrace/record/record-client.c b/cpukit/libtrace/record/record-client.c index 11ee2b4662..157352e28b 100644 --- a/cpukit/libtrace/record/record-client.c +++ b/cpukit/libtrace/record/record-client.c @@ -122,7 +122,7 @@ static void set_to_bt_scaler( uint64_t bin_per_s; bin_per_s = UINT64_C( 1 ) << 32; - ctx->to_bt_scaler = ( ( bin_per_s << 31 ) + frequency - 1 ) / frequency; + ctx->to_bt_scaler = ( ( bin_per_s << 31 ) + frequency / 2 ) / frequency; } static bool has_time( rtems_record_event event ) diff --git a/cpukit/libtrace/record/record-sysinit.c b/cpukit/libtrace/record/record-sysinit.c index caa1beb57a..6f27f61e65 100644 --- a/cpukit/libtrace/record/record-sysinit.c +++ b/cpukit/libtrace/record/record-sysinit.c @@ -63,8 +63,9 @@ void _Record_Initialize( void ) static void _Record_Watchdog( Watchdog_Control *watchdog ) { - ISR_Level level; - sbintime_t now; + ISR_Level level; + rtems_record_context context; + sbintime_t now; _ISR_Local_disable( level ); _Watchdog_Per_CPU_insert_ticks( @@ -72,15 +73,20 @@ static void _Record_Watchdog( Watchdog_Control *watchdog ) _Watchdog_Get_CPU( watchdog ), _Record_Tick_interval ); - _ISR_Local_enable( level ); - now = _Timecounter_Sbinuptime(); - rtems_record_produce_2( + rtems_record_prepare_critical( &context, _Per_CPU_Get() ); + rtems_record_add( + &context, RTEMS_RECORD_UPTIME_LOW, - (uint32_t) ( now >> 0 ), + (uint32_t) ( now >> 0 ) + ); + rtems_record_add( + &context, RTEMS_RECORD_UPTIME_HIGH, (uint32_t) ( now >> 32 ) ); + rtems_record_commit_critical( &context ); + _ISR_Local_enable( level ); } static void _Record_Initialize_watchdogs( void )