aboutsummaryrefslogtreecommitdiff
path: root/libc/gettimeofday.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/gettimeofday.c')
-rw-r--r--libc/gettimeofday.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/libc/gettimeofday.c b/libc/gettimeofday.c
new file mode 100644
index 0000000..b0561c3
--- /dev/null
+++ b/libc/gettimeofday.c
@@ -0,0 +1,26 @@
+#include <stdint.h>
+
+#include "stm32f4xx_hal.h"
+
+/* Don't #include <sys/time.h> because of conflicting prototype in newlib. */
+
+/* from the manpage: */
+struct timeval {
+ time_t tv_sec; /* seconds */
+ suseconds_t tv_usec; /* microseconds */
+};
+
+struct timezone {
+ int tz_minuteswest; /* minutes west of Greenwich */
+ int tz_dsttime; /* type of DST correction */
+};
+
+int gettimeofday(struct timeval *tv, struct timezone *tz)
+{
+ uint32_t tick = HAL_GetTick(); /* uptime in ms */
+
+ tv->tv_sec = tick / 1000;
+ tv->tv_usec = (tick % 1000) * 1000;
+
+ return 0;
+}