Merge branch 'master' of github.com:dopefishh/des2015
[des2015.git] / mart / ex03 / ex03c.c
index 195a64f..8da98ef 100644 (file)
@@ -7,50 +7,39 @@
 #include <native/timer.h>
 #include <native/sem.h>
 
-#include  <rtdk.h>
+#include <rtdk.h>
+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);
 }
-
-