summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/shared/clockdrv_shell.h
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/shared/clockdrv_shell.h')
-rw-r--r--c/src/lib/libbsp/shared/clockdrv_shell.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/c/src/lib/libbsp/shared/clockdrv_shell.h b/c/src/lib/libbsp/shared/clockdrv_shell.h
index d546fb81e7..96b962f217 100644
--- a/c/src/lib/libbsp/shared/clockdrv_shell.h
+++ b/c/src/lib/libbsp/shared/clockdrv_shell.h
@@ -44,6 +44,13 @@
#define Clock_driver_support_find_timer()
#endif
+/**
+ * @brief Do nothing by default.
+ */
+#ifndef Clock_driver_support_at_tick
+ #define Clock_driver_support_at_tick()
+#endif
+
/*
* A specialized clock driver may use for example rtems_timecounter_tick_simple()
* instead of the default.
@@ -108,7 +115,14 @@ rtems_isr Clock_isr(
&& _Thread_Executing->Start.entry_point
== (Thread_Entry) rtems_configuration_get_idle_task()
) {
- _Timecounter_Tick_simple(interval, (*tc->tc_get_timecount)(tc));
+ ISR_lock_Context lock_context;
+
+ _Timecounter_Acquire(&lock_context);
+ _Timecounter_Tick_simple(
+ interval,
+ (*tc->tc_get_timecount)(tc),
+ &lock_context
+ );
}
Clock_driver_support_at_tick();