#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <signal.h> #include <sys/time.h> #include <errno.h> #include <dlfcn.h> #include "intypes.h" #include "log.h" #include "edsm.h" #include "load-tool.h" /* M0 event */ #define EC_PRINT_DONE 0 int hw2_idle_enter(struct edsm *me) { struct ecap_engine *ecap = me->ecap; start_tick_oneshot(ecap, me->timers[0]); return 0; } int hw2_print_enter(struct edsm *me) { /* get context */ int *c = (int *)me->data; printf("Hello, World! (%d)\n", ++(*c)); edsm_put_event(me, EC_PRINT_DONE); return 0; } int hw2_done_enter(struct edsm *me) { struct ecap_engine *ecap = me->ecap; log_msg("Good Bye, World!\n"); return 1; } struct edsm_desc *hw_desc; struct state *hw_state_set; struct edsm *hw; int cnt = 0; int main(int argc, char *argv[], char *envp[]) { int nch; hw_desc = edsm_load_desc("./", "hw2.smd"); hw_state_set = edsm_get_state_set(hw_desc); nch = hw_desc->nch; edsm_load_engine("./", "libecap-poll.so", nch); hw = edsm_create(hw_desc, hw_state_set, &cnt); log_msg("INFO: started\n"); /* get the ball rolling */ edsm_run_engine(); log_msg("INFO: terminated\n\n"); exit(0); }