diff options
Diffstat (limited to 'os/kernel/src')
-rw-r--r-- | os/kernel/src/chdebug.c | 2 | ||||
-rw-r--r-- | os/kernel/src/chstats.c | 50 | ||||
-rw-r--r-- | os/kernel/src/chsys.c | 2 |
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();
|