final commit assignment 2
[des2015.git] / natanael / ex02 / ex02d.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
9 #include <rtdk.h>
10 RT_TASK demo_task;
11
12 void demo(void *arg)
13 {
14 RT_TASK *curtask;
15 RT_TASK_INFO curtaskinfo;
16 // Read system clock
17 RTIME period = 1e9;
18 rt_task_sleep(period);
19
20 // inquire current task
21 curtask=rt_task_self();
22 rt_task_inquire(curtask,&curtaskinfo);
23
24 // determine the period
25 int num = *(int *)arg;
26 period *= num;
27 rt_task_set_periodic(NULL, TM_NOW, period);
28
29 while(1){
30 rt_printf("Task name: %s - Period %d\n", curtaskinfo.name, num);
31 rt_task_wait_period(NULL);
32 }
33 }
34
35 int main(int argc, char* argv[])
36 {
37 char str[10] ;
38 int i;
39 int periods[3];
40
41 rt_print_auto_init(1);
42 mlockall(MCL_CURRENT | MCL_FUTURE);
43 rt_printf("start task\n");
44
45 for (i=0; i<3; i++)
46 {
47 sprintf(str, "hello-%d", i);
48 periods[i] = i + 1;
49 rt_task_create(&demo_task, str, 0, 50, 0);
50 rt_task_start(&demo_task, &demo, &periods[i]);
51 }
52
53 rt_printf("end program by CTRL-C\n");
54 pause();
55 }