aboutsummaryrefslogtreecommitdiffstats
path: root/os/kernel/src
diff options
context:
space:
mode:
Diffstat (limited to 'os/kernel/src')
-rw-r--r--os/kernel/src/chstats.c5
-rw-r--r--os/kernel/src/chthreads.c3
2 files changed, 6 insertions, 2 deletions
diff --git a/os/kernel/src/chstats.c b/os/kernel/src/chstats.c
index 93739da17..06ac21d1d 100644
--- a/os/kernel/src/chstats.c
+++ b/os/kernel/src/chstats.c
@@ -83,11 +83,12 @@ void _stats_increase_irq(void) {
}
/**
- * @brief Increases the context switch counter.
+ * @brief Updates context switch related statistics.
*/
-void _stats_increase_ctxswc(void) {
+void _stats_ctxswc(thread_t *ntp, thread_t *otp) {
kernel_stats.n_ctxswc++;
+ chTMChainMeasurementToX(&otp->p_stats, &ntp->p_stats);
}
/**
diff --git a/os/kernel/src/chthreads.c b/os/kernel/src/chthreads.c
index b707b4562..ff6e5e597 100644
--- a/os/kernel/src/chthreads.c
+++ b/os/kernel/src/chthreads.c
@@ -124,6 +124,9 @@ thread_t *_thread_init(thread_t *tp, tprio_t prio) {
#if CH_DBG_ENABLE_STACK_CHECK
tp->p_stklimit = (stkalign_t *)(tp + 1);
#endif
+#if CH_DBG_STATISTICS || defined(__DOXYGEN__)
+ chTMStartMeasurementX(&tp->p_stats);
+#endif
#if defined(CH_CFG_THREAD_INIT_HOOK)
CH_CFG_THREAD_INIT_HOOK(tp);
#endif