6 #include <native/task.h>
7 #include <native/timer.h>
8 #include <native/sem.h>
20 void taskOne(void *arg
)
23 for (i
=0; i
< ITER
; i
++)
25 rt_sem_p(&sem
, TM_INFINITE
);
26 rt_printf("I am taskOne and global = %d................\n", ++global
);
31 void taskTwo(void *arg
)
34 for (i
=0; i
< ITER
; i
++)
36 rt_sem_p(&sem
, TM_INFINITE
);
37 rt_printf("I am taskTwo and global = %d----------------\n", --global
);
42 int main(int argc
, char* argv
[])
44 /* Perform auto-init of rt_print buffers if the task doesn't do so */
45 rt_print_auto_init(1);
47 /* Avoids memory swapping for this program */
48 mlockall(MCL_CURRENT
|MCL_FUTURE
);
50 /* create the two tasks */
51 rt_task_create(&t1
, "task1", 0, 1, 0);
52 rt_task_create(&t2
, "task2", 0, 1, 0);
54 /* create semaphore and start in blocked mode */
55 rt_sem_create(&sem
, "sem", 0, S_FIFO
);
57 /* start the two tasks */
58 rt_task_start(&t1
, &taskOne
, 0);
59 rt_task_start(&t2
, &taskTwo
, 0);
61 /* release the semaphore */