int main(void) { RT_TASK *maint; MSG msg = { 0, 0 }; maint = rt_task_init(nam2num("MAIN"), 99, 0, 0); bx = rt_tbx_init(nam2num("BX"), TBXSIZE, ORDER); start_rt_timer(nano2count(TIMEBASE)); pthread_create(&pt1, NULL, Task1, NULL); pthread_create(&pt2, NULL, Task2, NULL); pthread_create(&pt3, NULL, Task3, NULL); pthread_create(&pt4, NULL, Task4, NULL); pthread_create(&pt5, NULL, Task5, NULL); pthread_create(&pt6, NULL, Task6, NULL); pthread_create(&pt7, NULL, Task7, NULL); printf("\ntasks started\n"); pthread_join(pt1, NULL); pthread_join(pt4, NULL); pthread_join(pt7, NULL); endall = 1; rt_tbx_broadcast(bx, (char*)&msg, sizeof(msg)); pthread_join(pt2, NULL); pthread_join(pt3, NULL); pthread_join(pt5, NULL); pthread_join(pt6, NULL); rt_tbx_delete(bx); rt_task_delete(maint); stop_rt_timer(); printf("\n\nEND\n\n"); return 0; }
int __rt_tbx_delete(TBX *tbx) { int result; if(tbx == 0) return -1; result = rt_tbx_delete(tbx); rt_free(tbx); return result; }
void cleanup_module(void) { while (!cleanup) { current->state = TASK_INTERRUPTIBLE; schedule_timeout(HZ/10); } stop_rt_timer(); rt_task_delete(&t1); rt_task_delete(&t2); rt_task_delete(&t3); rt_task_delete(&t4); rt_task_delete(&t5); rt_task_delete(&t6); rt_task_delete(&t7); rt_tbx_delete(&bx); rt_printk("\n\nEND\n\n"); }