odyssey/sources/timer.h

39 lines
719 B
C
Raw Normal View History

2017-05-24 11:04:19 +00:00
#ifndef MM_TIMER_H
#define MM_TIMER_H
2017-04-07 15:08:26 +00:00
/*
* machinarium.
*
* cooperative multitasking engine.
*/
2017-05-24 11:04:19 +00:00
typedef struct mm_timer mm_timer_t;
2017-04-07 15:08:26 +00:00
typedef void (*mm_timer_callback_t)(mm_timer_t*);
2017-04-07 15:08:26 +00:00
2017-05-24 11:04:19 +00:00
struct mm_timer
{
int active;
uint64_t timeout;
uint32_t interval;
int seq;
2017-04-07 15:08:26 +00:00
mm_timer_callback_t callback;
void *arg;
void *clock;
2017-04-07 15:08:26 +00:00
};
static inline void
mm_timer_init(mm_timer_t *timer, mm_timer_callback_t cb, void *arg,
uint32_t interval)
{
timer->active = 0;
timer->interval = interval;
timer->timeout = 0;
timer->seq = 0;
timer->callback = cb;
timer->arg = arg;
timer->clock = NULL;
}
2017-05-24 11:04:19 +00:00
#endif /* MM_TIMER_H */