aboutsummaryrefslogtreecommitdiffstats
path: root/os/kernel/src
diff options
context:
space:
mode:
Diffstat (limited to 'os/kernel/src')
-rw-r--r--os/kernel/src/chdebug.c2
-rw-r--r--os/kernel/src/chstats.c50
-rw-r--r--os/kernel/src/chsys.c2
3 files changed, 51 insertions, 3 deletions
diff --git a/os/kernel/src/chdebug.c b/os/kernel/src/chdebug.c
index 44058dff8..ba9c469b9 100644
--- a/os/kernel/src/chdebug.c
+++ b/os/kernel/src/chdebug.c
@@ -234,7 +234,7 @@ void _trace_init(void) {
*/
void dbg_trace(thread_t *otp) {
- dbg_trace_buffer.tb_ptr->se_time = chTimeNow();
+ dbg_trace_buffer.tb_ptr->se_time = chVTGetSystemTimeX();
dbg_trace_buffer.tb_ptr->se_tp = currp;
dbg_trace_buffer.tb_ptr->se_wtobjp = otp->p_u.wtobjp;
dbg_trace_buffer.tb_ptr->se_state = (uint8_t)otp->p_state;
diff --git a/os/kernel/src/chstats.c b/os/kernel/src/chstats.c
index eb2023c93..93739da17 100644
--- a/os/kernel/src/chstats.c
+++ b/os/kernel/src/chstats.c
@@ -69,11 +69,59 @@ void _stats_init(void) {
kernel_stats.n_irq = 0;
kernel_stats.n_ctxswc = 0;
- chTMObjectInit(&kernel_stats.m_isr);
chTMObjectInit(&kernel_stats.m_crit_thd);
chTMObjectInit(&kernel_stats.m_crit_isr);
}
+
+/**
+ * @brief Increases the IRQ counter.
+ */
+void _stats_increase_irq(void) {
+
+ kernel_stats.n_irq++;
+}
+
+/**
+ * @brief Increases the context switch counter.
+ */
+void _stats_increase_ctxswc(void) {
+
+ kernel_stats.n_ctxswc++;
+}
+
+/**
+ * @brief Starts the measurement of a thread critical zone.
+ */
+void _stats_start_measure_crit_thd(void) {
+
+ chTMStartMeasurementX(&kernel_stats.m_crit_thd);
+}
+
+/**
+ * @brief Stops the measurement of a thread critical zone.
+ */
+void _stats_stop_measure_crit_thd(void) {
+
+ chTMStopMeasurementX(&kernel_stats.m_crit_thd);
+}
+
+/**
+ * @brief Starts the measurement of an ISR critical zone.
+ */
+void _stats_start_measure_crit_isr(void) {
+
+ chTMStartMeasurementX(&kernel_stats.m_crit_isr);
+}
+
+/**
+ * @brief Stops the measurement of an ISR critical zone.
+ */
+void _stats_stop_measure_crit_isr(void) {
+
+ chTMStopMeasurementX(&kernel_stats.m_crit_isr);
+}
+
#endif /* CH_DBG_STATISTICS */
/** @} */
diff --git a/os/kernel/src/chsys.c b/os/kernel/src/chsys.c
index 168bd1376..7057a7e01 100644
--- a/os/kernel/src/chsys.c
+++ b/os/kernel/src/chsys.c
@@ -163,7 +163,7 @@ void chSysInit(void) {
*/
void chSysHalt(void) {
- chSysDisable();
+ port_disable();
#if defined(CH_CFG_SYSTEM_HALT_HOOK) || defined(__DOXYGEN__)
CH_CFG_SYSTEM_HALT_HOOK();