summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Epler <jepler@gmail.com>2019-11-20 10:15:33 -0600
committerJeff Epler <jepler@gmail.com>2019-11-20 14:37:13 -0600
commita9baa0f954ec757ef1e3990af136a4f0b3cb2b1e (patch)
tree752706bfc22dac4c2203da0ad7928baaa7145ace
parent70719597ab7b3785a6641b08ef3cb82d9b6b459b (diff)
supervisor: tick: document
-rw-r--r--supervisor/shared/tick.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/supervisor/shared/tick.h b/supervisor/shared/tick.h
index eb2af29ca..e747de2d8 100644
--- a/supervisor/shared/tick.h
+++ b/supervisor/shared/tick.h
@@ -29,9 +29,32 @@
#include <stdint.h>
+/** @brief To be called once every ms
+ *
+ * The port must call supervisor_tick once per millisecond to perform regular tasks.
+ * This is called from the SysTick interrupt or similar, and is safe to call in an
+ * interrupt context.
+ */
extern void supervisor_tick(void);
+/** @brief Get the lower 32 bits of the time in milliseconds
+ *
+ * This can be more efficient than supervisor_ticks_ms64, for sites where a wraparound
+ * of ~49.5 days is not harmful.
+ */
extern uint32_t supervisor_ticks_ms32(void);
+/** @brief Get the full time in milliseconds
+ *
+ * Because common ARM mcus cannot atomically work with 64-bit quantities, this
+ * function must briefly disable interrupts in order to return the value. If
+ * only relative durations of less than about ~49.5 days need to be considered,
+ * then it may be possible to use supervisor_ticks_ms64 instead.
+ */
extern uint64_t supervisor_ticks_ms64(void);
+/** @brief Run background ticks, but only about every millisecond.
+ *
+ * Normally, this is not called directly. Instead use the RUN_BACKGROUND_TASKS
+ * macro.
+ */
extern void supervisor_run_background_if_tick(void);
#endif