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);
if (count > 4) {
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.debug = true;
boot.addEventListener(SHUTDOWN, shutdownHandler);
boot.addEventListener(SIGUSR1, eventHandler);
boot.enableSignal(SIGUSR1);
boot.events.addEventListener(SHUTDOWN, shutdownHandler);
boot.events.addEventListener(SIGUSR1, eventHandler);
boot.events.enableSignal(SIGUSR1);
timer_t timer = boot.createSignalTimer(SIGUSR1);
boot.startTimer(timer, 5000);
timer_t timer = boot.time.createSignalTimer(SIGUSR1);
boot.time.startTimer(timer, 5000);
timer_t interval = boot.createThreadTimer(&intervalHandler);
boot.startInterval(interval, 2000);
timer_t interval = boot.time.createThreadTimer(&intervalHandler);
boot.time.startInterval(interval, 2000);
}

View file

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

View file

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