linux: Rework timer_check_periodic() to use ticks

Avoid using a 'struct timespec' to simplify the code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2021-04-19 09:15:28 -04:00
parent e0aba590f9
commit 8f9e497d69
3 changed files with 14 additions and 14 deletions

View File

@ -2,7 +2,7 @@
#define __LINUX_INTERNAL_H #define __LINUX_INTERNAL_H
// Local definitions for micro-controllers running on linux // Local definitions for micro-controllers running on linux
#include <time.h> // struct timespec #include <stdint.h> // uint32_t
#include "autoconf.h" // CONFIG_CLOCK_FREQ #include "autoconf.h" // CONFIG_CLOCK_FREQ
#define MAX_GPIO_LINES 256 #define MAX_GPIO_LINES 256
@ -22,7 +22,7 @@ int console_setup(char *name);
void console_sleep(struct timespec ts); void console_sleep(struct timespec ts);
// timer.c // timer.c
int timer_check_periodic(struct timespec *ts); int timer_check_periodic(uint32_t *ts);
// watchdog.c // watchdog.c
int watchdog_setup(void); int watchdog_setup(void);

View File

@ -75,17 +75,6 @@ timespec_read(void)
return ts; return ts;
} }
// Check if a given time has past
int
timer_check_periodic(struct timespec *ts)
{
if (timespec_is_before(TimerInfo.next_wake, *ts))
return 0;
*ts = TimerInfo.next_wake;
ts->tv_sec += 2;
return 1;
}
/**************************************************************** /****************************************************************
* Timers * Timers
@ -93,6 +82,17 @@ timer_check_periodic(struct timespec *ts)
DECL_CONSTANT("CLOCK_FREQ", CONFIG_CLOCK_FREQ); DECL_CONSTANT("CLOCK_FREQ", CONFIG_CLOCK_FREQ);
// Check if a given time has past
int
timer_check_periodic(uint32_t *ts)
{
uint32_t lrt = TimerInfo.last_read_time;
if (timer_is_before(lrt, *ts))
return 0;
*ts = lrt + timer_from_us(2000000);
return 1;
}
// Return the number of clock ticks for a given number of microseconds // Return the number of clock ticks for a given number of microseconds
uint32_t uint32_t
timer_from_us(uint32_t us) timer_from_us(uint32_t us)

View File

@ -26,7 +26,7 @@ watchdog_setup(void)
void void
watchdog_task(void) watchdog_task(void)
{ {
static struct timespec next_watchdog_time; static uint32_t next_watchdog_time;
if (watchdog_fd < 0 || !timer_check_periodic(&next_watchdog_time)) if (watchdog_fd < 0 || !timer_check_periodic(&next_watchdog_time))
return; return;
int ret = write(watchdog_fd, ".", 1); int ret = write(watchdog_fd, ".", 1);