X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=mart%2Fex03%2Fex03c.c;h=8da98efcfc01bc5451497080cc2bcc2c152d4f71;hb=684df3dff41d6b109bf1733ac75c347f27afa464;hp=195a64f54d0ad4d12366ffe28ffdef18970c806d;hpb=6ef9df24af633025d2a8501f9ea50deedb95e1c9;p=des2015.git diff --git a/mart/ex03/ex03c.c b/mart/ex03/ex03c.c index 195a64f..8da98ef 100644 --- a/mart/ex03/ex03c.c +++ b/mart/ex03/ex03c.c @@ -7,50 +7,39 @@ #include #include -#include +#include +RT_TASK task[5]; +RT_SEM sem; -#define ITER 10 - -static RT_TASK t1; -static RT_TASK t2; - -int global = 0; - -void taskOne(void *arg) -{ - int i; - for (i=0; i < ITER; i++) - { - rt_printf("I am taskOne and global = %d................\n", ++global); - } -} - -void taskTwo(void *arg) +void demo(void *arg) { - int i; - for (i=0; i < ITER; i++) - { - rt_printf("I am taskTwo and global = %d----------------\n", --global); - } + int num = * (int *)arg; + RT_TASK *curtask; + RT_TASK_INFO curtaskinfo; + curtask=rt_task_self(); + rt_task_inquire(curtask, &curtaskinfo); + rt_sem_p(&sem, TM_INFINITE); + rt_printf("Task name: %s - Argument %d\n", curtaskinfo.name, num); + rt_sem_v(&sem); } int main(int argc, char* argv[]) { - /* Perform auto-init of rt_print buffers if the task doesn't do so */ - rt_print_auto_init(1); - - /* Avoids memory swapping for this program */ - mlockall(MCL_CURRENT|MCL_FUTURE); - - /* create the two tasks */ - rt_task_create(&t1, "task1", 0, 1, 0); - rt_task_create(&t2, "task2", 0, 1, 0); - - /* start the two tasks */ - rt_task_start(&t1, &taskOne, 0); - rt_task_start(&t2, &taskTwo, 0); - - return 0; + char str[10] ; + int i; + + rt_print_auto_init(1); + mlockall(MCL_CURRENT | MCL_FUTURE); + rt_printf("start task\n"); + + rt_sem_create(&sem, "sem", 0, S_FIFO); + + for (i=0; i<5; i++) + { + sprintf(str, "hello-%d", i); + rt_task_create(&task[i], str, 0, 50+i, 0); + rt_task_start(&task[i], &demo, &i); + } +// rt_sem_v(&sem); + rt_sem_broadcast(&sem); } - -