#include #include #include #include #include #define STATE_TASK_1_CREATED 1 #define STATE_TASK_2_CREATED 2 unsigned int my_state = 0; RT_TASK task_1; RT_TASK task_2; /* .................................................................................... */ void cleanup_all(void) { if (my_state & STATE_TASK_2_CREATED) { printf("delete task_2\n"); rt_task_delete(&task_2); my_state &= ~STATE_TASK_2_CREATED; } if (my_state & STATE_TASK_1_CREATED) { printf("delete task_1\n"); rt_task_delete(&task_1); my_state &= ~STATE_TASK_1_CREATED; } } /* .................................................................................... */ int main(int argc, char* argv[]) { int ret = 0; /* no memory-swapping for this programm */ mlockall(MCL_CURRENT | MCL_FUTURE); /* create task_1 */ ret = rt_task_create(&task_1,"task_1",0,50,0); if (ret) { printf("failed to create task_1, code %d\n",ret); goto error; } my_state |= STATE_TASK_1_CREATED; printf("created task_1\n"); /* create task_2 */ ret = rt_task_create(&task_2,"task_2",0,51,0); if (ret) { printf("failed to create task_2, code %d\n",ret); goto error; } my_state |= STATE_TASK_2_CREATED; printf("created task_2\n"); error: cleanup_all(); return ret; }