#include #include #include #include #include #include #include #include #include #include #include #define ALARM_NAME "dl_alarm2" #define ALARM_TASK_NAME "dl_alarm_task" #define ALARM_TIME 500000 #define ALARM_INTERVAL 250000 #define ALARM_TASK_PRIO 20 RT_ALARM dl_alarm; RT_TASK alarm_task; bool quit_now = 0; void catch_signal(int sig) { rt_alarm_stop(&dl_alarm); rt_alarm_delete(&dl_alarm); rt_task_delete(&alarm_task); exit(0); } static void alarm_handler(void *cookie) { int i =0; printf("Inside alarm handler\n "); for(i = 0; i<100; i++){ rt_alarm_wait(&dl_alarm); printf("i = %d\n",i); } quit_now = 1; printf("quit_now is set to %d\n",quit_now); return; } int main() { int ret = 0; signal(SIGTERM, catch_signal); signal(SIGINT, catch_signal); ret = rt_alarm_create(&dl_alarm, ALARM_NAME) ; if (ret) printf("\ncannot create alarm %d\n", ret); ret = rt_task_spawn(&alarm_task, ALARM_TASK_NAME, 0, ALARM_TASK_PRIO, 0, &alarm_handler, NULL); if(ret) exit(0); rt_alarm_start(&dl_alarm, ALARM_TIME, ALARM_INTERVAL); while(!quit_now); printf("quit_now = %d\n",quit_now); rt_alarm_stop(&dl_alarm); rt_alarm_delete(&dl_alarm); rt_task_delete(&alarm_task); return 0; }