luxos/Kernel/hal/clock/clock.c

27 lines
530 B
C
Raw Permalink Normal View History

#include <time.h>
#include "clock.h"
#define MILISECONDS_IN_DAY 86400000
volatile TimeSystem _internal_time;
uint32 _internal_frequency_hz;
2021-09-14 16:02:20 +00:00
extern void TaskingScheduler();
2021-09-14 15:57:06 +00:00
2021-09-14 16:02:20 +00:00
void TimeHandler(_RegsStack32* UNUSED(r))
{
2021-09-14 16:02:20 +00:00
// Make sure it is initialised
if (_internal_frequency_hz == 0) return;
2021-09-14 16:02:20 +00:00
// Timer tick
_internal_time.Time += 1000/_internal_frequency_hz;
if (_internal_time.Time >= MILISECONDS_IN_DAY)
{
_internal_time.Date++;
_internal_time.Time-=MILISECONDS_IN_DAY;
}
2021-09-14 15:57:06 +00:00
2021-09-14 16:02:20 +00:00
// Launch scheduler
TaskingScheduler();
}