update ex11
[des2015.git] / mart / xenomai / ex03 / ex03c.c
1 #include <stdio.h>
2 #include <signal.h>
3 #include <unistd.h>
4 #include <sys/mman.h>
5
6 #include <native/task.h>
7 #include <native/timer.h>
8 #include <native/sem.h>
9
10 #include <rtdk.h>
11 RT_TASK task[5];
12 RT_SEM sem;
13
14 void demo(void *arg)
15 {
16 int num = * (int *)arg;
17 RT_TASK *curtask;
18 RT_TASK_INFO curtaskinfo;
19 curtask=rt_task_self();
20 rt_task_inquire(curtask, &curtaskinfo);
21 rt_sem_p(&sem, TM_INFINITE);
22 rt_printf("Task name: %s - Argument %d\n", curtaskinfo.name, num);
23 rt_sem_v(&sem);
24 }
25
26 int main(int argc, char* argv[])
27 {
28 char str[10] ;
29 int i;
30
31 rt_print_auto_init(1);
32 mlockall(MCL_CURRENT | MCL_FUTURE);
33 rt_printf("start task\n");
34
35 rt_sem_create(&sem, "sem", 0, S_FIFO);
36
37 for (i=0; i<5; i++)
38 {
39 sprintf(str, "hello-%d", i);
40 rt_task_create(&task[i], str, 0, 50+i, 0);
41 rt_task_start(&task[i], &demo, &i);
42 }
43 // rt_sem_v(&sem);
44 rt_sem_broadcast(&sem);
45 }