Time calibration data moved in ch_system, it is now shared.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@14175 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
This commit is contained in:
Giovanni Di Sirio 2021-04-14 11:59:59 +00:00
parent 0738442a0c
commit 261a59db50
5 changed files with 16 additions and 16 deletions

View File

@ -384,12 +384,6 @@ struct ch_os_instance {
*/
trace_buffer_t trace_buffer;
#endif
#if (CH_CFG_USE_TM == TRUE) || defined(__DOXYGEN__)
/**
* @brief Time measurement calibration data.
*/
tm_calibration_t tmc;
#endif
#if (CH_DBG_STATISTICS == TRUE) || defined(__DOXYGEN__)
/**
* @brief Global kernel statistics.
@ -416,6 +410,12 @@ typedef struct ch_system {
* @brief Initialized OS instances or @p NULL.
*/
os_instance_t *instances[PORT_CORES_NUMBER];
#if (CH_CFG_USE_TM == TRUE) || defined(__DOXYGEN__)
/**
* @brief Time measurement calibration data.
*/
tm_calibration_t tmc;
#endif
#if ((CH_CFG_USE_REGISTRY == TRUE) && (CH_CFG_SMP_MODE == TRUE)) || \
defined(__DOXYGEN__)
/**

View File

@ -88,7 +88,7 @@ typedef struct {
#ifdef __cplusplus
extern "C" {
#endif
void __tm_calibration_init(tm_calibration_t *tcp);
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);

View File

@ -329,11 +329,6 @@ void chSchObjectInit(os_instance_t *oip,
__trace_init(oip);
#endif
/* Time Measurement initialization.*/
#if CH_CFG_USE_TM == TRUE
__tm_calibration_init(&oip->tmc);
#endif
/* Statistics initialization.*/
#if CH_DBG_STATISTICS == TRUE
__stats_object_init(&oip->kernel_stats);

View File

@ -96,6 +96,11 @@ void chSysInit(void) {
ch_queue_init(&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();

View File

@ -84,14 +84,14 @@ static inline void tm_stop(time_measurement_t *tmp,
*
* @notapi
*/
void __tm_calibration_init(tm_calibration_t *tcp) {
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.*/
tcp->offset = (rtcnt_t)0;
ch_system.tmc.offset = (rtcnt_t)0;
chTMObjectInit(&tm);
i = TM_CALIBRATION_LOOP;
do {
@ -99,7 +99,7 @@ void __tm_calibration_init(tm_calibration_t *tcp) {
chTMStopMeasurementX(&tm);
i--;
} while (i > 0U);
tcp->offset = tm.best;
ch_system.tmc.offset = tm.best;
}
/**
@ -141,7 +141,7 @@ NOINLINE void chTMStartMeasurementX(time_measurement_t *tmp) {
*/
NOINLINE void chTMStopMeasurementX(time_measurement_t *tmp) {
tm_stop(tmp, chSysGetRealtimeCounterX(), currcore->tmc.offset);
tm_stop(tmp, chSysGetRealtimeCounterX(), ch_system.tmc.offset);
}
/**