aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--os/kernel/include/chglobal.h12
-rw-r--r--os/kernel/src/chstats.c26
-rw-r--r--os/kernel/src/chtm.c11
3 files changed, 25 insertions, 24 deletions
diff --git a/os/kernel/include/chglobal.h b/os/kernel/include/chglobal.h
index 4bbc0775b..0d49d9a45 100644
--- a/os/kernel/include/chglobal.h
+++ b/os/kernel/include/chglobal.h
@@ -120,6 +120,18 @@ typedef struct ch_system {
* @brief Virtual timers delta list header.
*/
virtual_timers_list_t vtlist;
+#if CH_CFG_USE_TM || defined(__DOXYGEN__)
+ /**
+ * @brief Measurement calibration value.
+ */
+ rtcnt_t measurement_offset;
+#endif
+#if CH_DBG_STATISTICS || defined(__DOXYGEN__)
+ /**
+ * @brief Global kernel statistics.
+ */
+ kernel_stats_t kernel_stats;
+#endif
#if CH_DBG_ENABLED || defined(__DOXYGEN__)
/**
* @brief Pointer to the panic message.
diff --git a/os/kernel/src/chstats.c b/os/kernel/src/chstats.c
index 06ac21d1d..653d8da77 100644
--- a/os/kernel/src/chstats.c
+++ b/os/kernel/src/chstats.c
@@ -39,11 +39,6 @@
/* Module exported variables. */
/*===========================================================================*/
-/**
- * @brief Global kernel statistics.
- */
-kernel_stats_t kernel_stats;
-
/*===========================================================================*/
/* Module local types. */
/*===========================================================================*/
@@ -67,19 +62,18 @@ kernel_stats_t kernel_stats;
*/
void _stats_init(void) {
- kernel_stats.n_irq = 0;
- kernel_stats.n_ctxswc = 0;
- chTMObjectInit(&kernel_stats.m_crit_thd);
- chTMObjectInit(&kernel_stats.m_crit_isr);
+ ch.kernel_stats.n_irq = 0;
+ ch.kernel_stats.n_ctxswc = 0;
+ chTMObjectInit(&ch.kernel_stats.m_crit_thd);
+ chTMObjectInit(&ch.kernel_stats.m_crit_isr);
}
-
/**
* @brief Increases the IRQ counter.
*/
void _stats_increase_irq(void) {
- kernel_stats.n_irq++;
+ ch.kernel_stats.n_irq++;
}
/**
@@ -87,7 +81,7 @@ void _stats_increase_irq(void) {
*/
void _stats_ctxswc(thread_t *ntp, thread_t *otp) {
- kernel_stats.n_ctxswc++;
+ ch.kernel_stats.n_ctxswc++;
chTMChainMeasurementToX(&otp->p_stats, &ntp->p_stats);
}
@@ -96,7 +90,7 @@ void _stats_ctxswc(thread_t *ntp, thread_t *otp) {
*/
void _stats_start_measure_crit_thd(void) {
- chTMStartMeasurementX(&kernel_stats.m_crit_thd);
+ chTMStartMeasurementX(&ch.kernel_stats.m_crit_thd);
}
/**
@@ -104,7 +98,7 @@ void _stats_start_measure_crit_thd(void) {
*/
void _stats_stop_measure_crit_thd(void) {
- chTMStopMeasurementX(&kernel_stats.m_crit_thd);
+ chTMStopMeasurementX(&ch.kernel_stats.m_crit_thd);
}
/**
@@ -112,7 +106,7 @@ void _stats_stop_measure_crit_thd(void) {
*/
void _stats_start_measure_crit_isr(void) {
- chTMStartMeasurementX(&kernel_stats.m_crit_isr);
+ chTMStartMeasurementX(&ch.kernel_stats.m_crit_isr);
}
/**
@@ -120,7 +114,7 @@ void _stats_start_measure_crit_isr(void) {
*/
void _stats_stop_measure_crit_isr(void) {
- chTMStopMeasurementX(&kernel_stats.m_crit_isr);
+ chTMStopMeasurementX(&ch.kernel_stats.m_crit_isr);
}
#endif /* CH_DBG_STATISTICS */
diff --git a/os/kernel/src/chtm.c b/os/kernel/src/chtm.c
index e54bacbbf..24239e0e2 100644
--- a/os/kernel/src/chtm.c
+++ b/os/kernel/src/chtm.c
@@ -47,11 +47,6 @@
/* Module local variables. */
/*===========================================================================*/
-/**
- * @brief Measurement calibration value.
- */
-static rtcnt_t measurement_offset;
-
/*===========================================================================*/
/* Module local functions. */
/*===========================================================================*/
@@ -84,11 +79,11 @@ void _tm_init(void) {
/* Time Measurement subsystem calibration, it does a null measurement
and calculates the call overhead which is subtracted to real
measurements.*/
- measurement_offset = 0;
+ ch.measurement_offset = 0;
chTMObjectInit(&tm);
chTMStartMeasurementX(&tm);
chTMStopMeasurementX(&tm);
- measurement_offset = tm.last;
+ ch.measurement_offset = tm.last;
}
/**
@@ -130,7 +125,7 @@ NOINLINE void chTMStartMeasurementX(time_measurement_t *tmp) {
*/
NOINLINE void chTMStopMeasurementX(time_measurement_t *tmp) {
- tm_stop(tmp, chSysGetRealtimeCounterX(), measurement_offset);
+ tm_stop(tmp, chSysGetRealtimeCounterX(), ch.measurement_offset);
}
#endif /* CH_CFG_USE_TM */