changed structure; seperate types

This commit is contained in:
overflowerror 2018-02-08 23:18:39 +01:00
parent 20dab3655b
commit 325da7fe62
3 changed files with 35 additions and 28 deletions

View file

@ -19,7 +19,7 @@ void intervalHandler() {
fprintf(stderr, "interval count %d.\n", count); fprintf(stderr, "interval count %d.\n", count);
if (count > 4) { if (count > 4) {
fprintf(stderr, "Provoking error.\n"); fprintf(stderr, "Provoking error.\n");
boot.enableSignal(SHUTDOWN); // SHUTDOWN is not a signal boot.events.enableSignal(SHUTDOWN); // SHUTDOWN is not a signal
} }
} }
@ -29,13 +29,13 @@ void init() {
boot.mode = WAIT; boot.mode = WAIT;
boot.debug = true; boot.debug = true;
boot.addEventListener(SHUTDOWN, shutdownHandler); boot.events.addEventListener(SHUTDOWN, shutdownHandler);
boot.addEventListener(SIGUSR1, eventHandler); boot.events.addEventListener(SIGUSR1, eventHandler);
boot.enableSignal(SIGUSR1); boot.events.enableSignal(SIGUSR1);
timer_t timer = boot.createSignalTimer(SIGUSR1); timer_t timer = boot.time.createSignalTimer(SIGUSR1);
boot.startTimer(timer, 5000); boot.time.startTimer(timer, 5000);
timer_t interval = boot.createThreadTimer(&intervalHandler); timer_t interval = boot.time.createThreadTimer(&intervalHandler);
boot.startInterval(interval, 2000); boot.time.startInterval(interval, 2000);
} }

View file

@ -46,23 +46,22 @@ static void* allocate(size_t);
static void* reallocate(void*, size_t); static void* reallocate(void*, size_t);
struct boot boot = { struct boot boot = {
.addEventListener = addEventListener, .events.addEventListener = addEventListener,
.removeEventListener = removeEventListener, .events.removeEventListener = removeEventListener,
.enableSignal = enableSignal, .events.enableSignal = enableSignal,
.disableSignal = disableSignal, .events.disableSignal = disableSignal,
.getRealTime = getRealTime, .time.getRealTime = getRealTime,
.getRelativeTime = getRelativeTime, .time.getRelativeTime = getRelativeTime,
.getProcessTime = getProcessTime, .time.getProcessTime = getProcessTime,
.getThreadTime = getThreadTime, .time.getThreadTime = getThreadTime,
.timer = timer, .time.timer = timer,
.time.createSignalTimer = createSignalTimer,
.createSignalTimer = createSignalTimer, .time.createThreadTimer = createThreadTimer,
.createThreadTimer = createThreadTimer, .time.startTimer = startTimer,
.startTimer = startTimer, .time.startInterval = startInterval,
.startInterval = startInterval, .time.stopTimer = stopTimer,
.stopTimer = stopTimer, .time.deleteTimer = deleteTimer,
.deleteTimer = deleteTimer,
.allocate = allocate, .allocate = allocate,
.reallocate = reallocate, .reallocate = reallocate,
@ -200,7 +199,7 @@ nstime_t timer(void (*function)(void)) {
return end - start; return end - start;
} }
void timerHandler(union sigval target) { static void timerHandler(union sigval target) {
debug("Timer handler: Starting target.\n"); debug("Timer handler: Starting target.\n");
((void (*)(void))(target.sival_ptr))(); ((void (*)(void))(target.sival_ptr))();
} }

View file

@ -65,14 +65,14 @@ typedef void (*eventListener_t)(event_t);
typedef void (*init_t)(void); typedef void (*init_t)(void);
typedef void (*loop_t)(nstime_t); typedef void (*loop_t)(nstime_t);
extern struct boot { struct events {
init_t init;
loop_t loop;
bool (*addEventListener)(event_t, eventListener_t); bool (*addEventListener)(event_t, eventListener_t);
bool (*removeEventListener)(event_t, eventListener_t); bool (*removeEventListener)(event_t, eventListener_t);
bool (*enableSignal)(event_t); bool (*enableSignal)(event_t);
bool (*disableSignal)(event_t); bool (*disableSignal)(event_t);
};
struct time {
nstime_t (*getRealTime)(void); nstime_t (*getRealTime)(void);
nstime_t (*getRelativeTime)(void); nstime_t (*getRelativeTime)(void);
nstime_t (*getProcessTime)(void); nstime_t (*getProcessTime)(void);
@ -85,6 +85,14 @@ extern struct boot {
void (*startInterval)(timer_t, unsigned long); void (*startInterval)(timer_t, unsigned long);
void (*stopTimer)(timer_t); void (*stopTimer)(timer_t);
void (*deleteTimer)(timer_t); void (*deleteTimer)(timer_t);
};
extern struct boot {
init_t init;
loop_t loop;
struct events events;
struct time time;
void* (*allocate)(size_t); void* (*allocate)(size_t);
void* (*reallocate)(void*, size_t); void* (*reallocate)(void*, size_t);