aboutsummaryrefslogtreecommitdiffstats
path: root/os/various/lwip_bindings/arch/sys_arch.c
diff options
context:
space:
mode:
Diffstat (limited to 'os/various/lwip_bindings/arch/sys_arch.c')
-rw-r--r--os/various/lwip_bindings/arch/sys_arch.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/os/various/lwip_bindings/arch/sys_arch.c b/os/various/lwip_bindings/arch/sys_arch.c
index 0154e5fcc..c788a673b 100644
--- a/os/various/lwip_bindings/arch/sys_arch.c
+++ b/os/various/lwip_bindings/arch/sys_arch.c
@@ -216,3 +216,16 @@ void sys_arch_unprotect(sys_prot_t pval) {
(void)pval;
chSysUnlock();
}
+
+u32_t sys_now(void) {
+
+#if CH_FREQUENCY == 1000
+ return (u32_t)chTimeNow();
+#elif (CH_FREQUENCY / 1000) >= 1 && (CH_FREQUENCY % 1000) == 0
+ return ((u32_t)chTimeNow() - 1) / (CH_FREQUENCY / 1000) + 1;
+#elif (1000 / CH_FREQUENCY) >= 1 && (1000 % CH_FREQUENCY) == 0
+ return ((u32_t)chTimeNow() - 1) * (1000 / CH_FREQUENCY) + 1;
+#else
+ return (u32_t)(((u64_t)(chTimeNow() - 1) * 1000) / CH_FREQUENCY) + 1;
+#endif
+}