XenevaOS
Loading...
Searching...
No Matches
timer.h
Go to the documentation of this file.
1
32#ifndef __TIMER_H__
33#define __TIMER_H__
34
35#include <aurora.h>
36#include <Hal/AA64/sched.h>
37#if defined(__GNUC__) || defined(__clang__)
38#ifndef __cplusplus
39#include <stdbool.h>
40#endif
41#endif
42
43typedef void (*AuroraTimerCallback)(void* param);
44
53
54#define AURORA_MAX_TIMER 32
55
56
61extern void AuroraTimerInitialize();
62
69AU_EXTERN AU_EXPORT int AuroraTimerStart(uint32_t delay_ms, AuroraTimerCallback handler, void* param, int idx);
70
77AU_EXTERN AU_EXPORT int AuroraTimerStartPeriodic(uint32_t interval_ms, AuroraTimerCallback handler, void* param);
78
79
90
95void AuroraTimerTick();
96
97
99
101
108extern int AuTimerCalculateAlarm(AA64Thread* thr, uint64_t seconds);
109
110/* POSIX Timer API */
115
116typedef struct _timeval_t_ {
117 long tv_sec;
120
121
122
127extern int AuTimerSetITimer(AA64Thread* thr, int which, const itimerval_t* newval, itimerval_t* oldval);
128extern int AuTimerGetITimer(AA64Thread* thr, int which, itimerval_t* curr_value);
129extern void AuSetWalltime(int64_t sec, int64_t nsec);
130extern void AuGetWalltime(int64_t* out_sec, int64_t* out_ns);
131
132#endif
#define AU_EXTERN
Definition aurora.h:55
#define AU_EXPORT
Definition aurora.h:41
unsigned int uint32_t
Definition acefiex.h:163
COMPILER_DEPENDENT_INT64 int64_t
Definition acefiex.h:164
unsigned char uint8_t
Definition acefiex.h:161
COMPILER_DEPENDENT_UINT64 uint64_t
Definition acefiex.h:165
Definition timer.h:111
timeval it_interval
Definition timer.h:112
timeval it_value
Definition timer.h:113
Definition timer.h:45
AuroraTimerCallback handler
Definition timer.h:48
uint64_t intervalUS
Definition timer.h:47
void * param
Definition timer.h:49
uint8_t active
Definition timer.h:50
AA64Thread * owner
Definition timer.h:51
uint64_t expireUS
Definition timer.h:46
Definition time.h:52
Definition timer.h:116
long tv_usec
Definition timer.h:118
long tv_sec
Definition timer.h:117
void AuroraTimerTick()
AuroraTimerTick – called by kernel to handle all expired timers.
Definition timer.c:161
AU_EXTERN AU_EXPORT int AuroraTimerStart(uint32_t delay_ms, AuroraTimerCallback handler, void *param, int idx)
AuroraTimerStart – start kernel timer in one shot mode.
Definition timer.c:89
void AuroraTimerInitialize()
AuroraTimerInitialize – initialize aurora timer.
Definition timer.c:74
int AuTimerGetITimer(AA64Thread *thr, int which, itimerval_t *curr_value)
Definition timer.c:332
void(* AuroraTimerCallback)(void *param)
Definition timer.h:43
AU_EXTERN AU_EXPORT int AuroraTimerStartPeriodic(uint32_t interval_ms, AuroraTimerCallback handler, void *param)
AuroraTimerStartPeriodic – start a periodic timer.
Definition timer.c:121
AU_EXTERN AU_EXPORT uint64_t AuGetCurrentUS()
Definition timer.c:190
AU_EXTERN AU_EXPORT uint64_t AuGetCurrentMS()
Definition timer.c:186
int AuTimerCalculateAlarm(AA64Thread *thr, uint64_t seconds)
AuTimerCalculateAlarm – schedule a timer to one-shot mode respective to given seconds.
Definition timer.c:205
void AuGetWalltime(int64_t *out_sec, int64_t *out_ns)
Definition timer.c:361
struct _itimerval_ itimerval_t
AU_EXTERN AU_EXPORT void AuroraTimerCancel(int tNum)
AuroraTimerCancel – cancel a timer.
Definition timer.c:140
struct _kernel_timer_ AuKernelTimer
int AuTimerSetITimer(AA64Thread *thr, int which, const itimerval_t *newval, itimerval_t *oldval)
AuTimerSetITimer – posix standard implementation of setting periodic timer.
Definition timer.c:270
AU_EXTERN AU_EXPORT bool AuroraTimerIsActive(int tNum)
AuroraTimerIsActive – check if timer is active.
Definition timer.c:150
void AuSetWalltime(int64_t sec, int64_t nsec)
Definition timer.c:352
struct _timeval_t_ timeval_t