From 4f8939fdc8364e9cde7883604a8b9575cf3a2f55 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Mon, 19 Apr 2021 13:11:58 +0000 Subject: [PATCH] More adjustments for consistency. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@14235 27425a3e-05d8-49a3-a47f-9c15f0e5edd8 --- doc/architecture/rt.txt | 4 ++-- os/rt/include/chtm.h | 34 +++++++++++++++++++++++++++++++++- os/rt/include/chtrace.h | 2 +- os/rt/src/chinstances.c | 2 +- os/rt/src/chsys.c | 10 +++++----- os/rt/src/chtm.c | 33 --------------------------------- os/rt/src/chtrace.c | 12 ++++++------ 7 files changed, 48 insertions(+), 49 deletions(-) diff --git a/doc/architecture/rt.txt b/doc/architecture/rt.txt index 99e024084..99bb0b11f 100644 --- a/doc/architecture/rt.txt +++ b/doc/architecture/rt.txt @@ -79,13 +79,13 @@ * + {static} chSchGoSleepTimeoutS() * } * class tm_calibration_t { - * # __tm_calibration_init() + * # __tm_calibration_object_init() * } * class system_debug_t { * # __dbg_object_init() * } * class trace_buffer_t { - * # __trace_init() + * # __trace_object_init() * } * class kernel_stats_t { * # __stats_object_init() diff --git a/os/rt/include/chtm.h b/os/rt/include/chtm.h index 4fc7d4170..52f2ae45c 100644 --- a/os/rt/include/chtm.h +++ b/os/rt/include/chtm.h @@ -34,6 +34,13 @@ /* Module constants. */ /*===========================================================================*/ +/** + * @brief Number of iterations in the calibration loop. + * @note This is required in order to assess the best result in + * architectures with instruction cache. + */ +#define TM_CALIBRATION_LOOP 4U + /*===========================================================================*/ /* Module pre-compile time settings. */ /*===========================================================================*/ @@ -88,7 +95,6 @@ typedef struct { #ifdef __cplusplus extern "C" { #endif - void __tm_calibration_init(void); void chTMObjectInit(time_measurement_t *tmp); NOINLINE void chTMStartMeasurementX(time_measurement_t *tmp); NOINLINE void chTMStopMeasurementX(time_measurement_t *tmp); @@ -102,6 +108,32 @@ extern "C" { /* Module inline functions. */ /*===========================================================================*/ +/** + * @brief Time measurement initialization. + * @note Internal use only. + * + * @param[out] tcp pointer to the @p tm_calibration_t structure + * + * @notapi + */ +static inline void __tm_calibration_object_init(tm_calibration_t *tcp) { + unsigned i; + time_measurement_t tm; + + /* Time Measurement subsystem calibration, it does a null measurement + and calculates the call overhead which is subtracted to real + measurements.*/ + tcp->offset = (rtcnt_t)0; + chTMObjectInit(&tm); + i = TM_CALIBRATION_LOOP; + do { + chTMStartMeasurementX(&tm); + chTMStopMeasurementX(&tm); + i--; + } while (i > 0U); + tcp->offset = tm.best; +} + #endif /* CH_CFG_USE_TM == TRUE */ #endif /* CHTM_H */ diff --git a/os/rt/include/chtrace.h b/os/rt/include/chtrace.h index 2343885ae..a6aa72dff 100644 --- a/os/rt/include/chtrace.h +++ b/os/rt/include/chtrace.h @@ -248,7 +248,7 @@ typedef struct { extern "C" { #endif #if (CH_DBG_TRACE_MASK != CH_DBG_TRACE_MASK_DISABLED) || defined(__DOXYGEN__) - void __trace_init(os_instance_t *oip); + void __trace_object_init(trace_buffer_t *tbp); void __trace_ready(thread_t *tp, msg_t msg); void __trace_switch(thread_t *ntp, thread_t *otp); void __trace_isr_enter(const char *isr); diff --git a/os/rt/src/chinstances.c b/os/rt/src/chinstances.c index bd8742366..d976d97c5 100644 --- a/os/rt/src/chinstances.c +++ b/os/rt/src/chinstances.c @@ -124,7 +124,7 @@ void chInstanceObjectInit(os_instance_t *oip, #if CH_DBG_TRACE_MASK != CH_DBG_TRACE_MASK_DISABLED /* Trace buffer initialization.*/ - __trace_init(oip); + __trace_object_init(&oip->trace_buffer); #endif /* Statistics initialization.*/ diff --git a/os/rt/src/chsys.c b/os/rt/src/chsys.c index c5ef9ae6c..bb32d1a74 100644 --- a/os/rt/src/chsys.c +++ b/os/rt/src/chsys.c @@ -163,16 +163,16 @@ void chSysInit(void) { ch_system.instances[i] = NULL; } +#if CH_CFG_USE_TM == TRUE + /* Time Measurement calibration.*/ + __tm_calibration_object_init(&ch_system.tmc); +#endif + #if (CH_CFG_USE_REGISTRY == TRUE) && (CH_CFG_SMP_MODE == TRUE) /* Registry initialization when SMP mode is enabled.*/ chRegObjectInit(&ch_system.reglist); #endif -#if CH_CFG_USE_TM == TRUE - /* Time Measurement initialization.*/ - __tm_calibration_init(); -#endif - /* User system initialization hook.*/ CH_CFG_SYSTEM_INIT_HOOK(); diff --git a/os/rt/src/chtm.c b/os/rt/src/chtm.c index cabf05d49..2b211f266 100644 --- a/os/rt/src/chtm.c +++ b/os/rt/src/chtm.c @@ -34,13 +34,6 @@ /* Module local definitions. */ /*===========================================================================*/ -/** - * @brief Number of iterations in the calibration loop. - * @note This is required in order to assess the best result in - * architectures with instruction cache. - */ -#define TM_CALIBRATION_LOOP 4U - /*===========================================================================*/ /* Module exported variables. */ /*===========================================================================*/ @@ -76,32 +69,6 @@ static inline void tm_stop(time_measurement_t *tmp, /* Module exported functions. */ /*===========================================================================*/ -/** - * @brief Time measurement initialization. - * @note Internal use only. - * - * @param[out] tcp pointer to the @p tm_calibration_t structure - * - * @notapi - */ -void __tm_calibration_init(void) { - time_measurement_t tm; - unsigned i; - - /* Time Measurement subsystem calibration, it does a null measurement - and calculates the call overhead which is subtracted to real - measurements.*/ - ch_system.tmc.offset = (rtcnt_t)0; - chTMObjectInit(&tm); - i = TM_CALIBRATION_LOOP; - do { - chTMStartMeasurementX(&tm); - chTMStopMeasurementX(&tm); - i--; - } while (i > 0U); - ch_system.tmc.offset = tm.best; -} - /** * @brief Initializes a @p TimeMeasurement object. * diff --git a/os/rt/src/chtrace.c b/os/rt/src/chtrace.c index 50260c605..97b5de34d 100644 --- a/os/rt/src/chtrace.c +++ b/os/rt/src/chtrace.c @@ -81,18 +81,18 @@ NOINLINE static void trace_next(os_instance_t *oip) { * @brief Circular trace buffer initialization. * @note Internal use only. * - * @param[out] oip pointer to the @p os_instance_t structure + * @param[out] tbp pointer to the @p trace_buffer_t structure * * @notapi */ -void __trace_init(os_instance_t *oip) { +void __trace_object_init(trace_buffer_t *tbp) { unsigned i; - oip->trace_buffer.suspended = (uint16_t)~CH_DBG_TRACE_MASK; - oip->trace_buffer.size = CH_DBG_TRACE_BUFFER_SIZE; - oip->trace_buffer.ptr = &oip->trace_buffer.buffer[0]; + tbp->suspended = (uint16_t)~CH_DBG_TRACE_MASK; + tbp->size = CH_DBG_TRACE_BUFFER_SIZE; + tbp->ptr = &tbp->buffer[0]; for (i = 0U; i < (unsigned)CH_DBG_TRACE_BUFFER_SIZE; i++) { - oip->trace_buffer.buffer[i].type = CH_TRACE_TYPE_UNUSED; + tbp->buffer[i].type = CH_TRACE_TYPE_UNUSED; } }