works, now find out how long a jiffie is
[des2015.git] / mart / ex02 / ex02d.c
1 #include <stdint.h>
2 #include <stdio.h>
3 #include <signal.h>
4 #include <unistd.h>
5 #include <sys/mman.h>
6
7 #include <native/task.h>
8 #include <native/timer.h>
9
10 #include <rtdk.h>
11
12 RT_TASK task1, task2, task3;
13
14 void demo(void *arg)
15 {
16 uint64_t waiting_time = *(int *)arg * 100000000;
17 rt_task_set_periodic(NULL, TM_NOW, waiting_time);
18 rt_printf("Waiting time: %d\n", waiting_time);
19 RT_TASK *curtask;
20 RT_TASK_INFO curtaskinfo;
21 curtask=rt_task_self();
22 rt_task_inquire(curtask, &curtaskinfo);
23 while(1){
24 rt_printf("Task name: %s\n", curtaskinfo.name);
25 rt_task_wait_period(NULL);
26 }
27 }
28
29 int main(int argc, char* argv[])
30 {
31 rt_print_auto_init(1);
32 mlockall(MCL_CURRENT|MCL_FUTURE);
33 rt_printf("start task\n");
34
35 rt_task_create(&task1, "t1", 0, 50, 0);
36 rt_task_create(&task2, "t2", 0, 50, 0);
37 rt_task_create(&task3, "t3", 0, 50, 0);
38
39 int num1 = 1;
40 int num2 = 2;
41 int num3 = 3;
42
43 rt_task_start(&task1, &demo, (void *)&num1);
44 rt_task_start(&task2, &demo, (void *)&num2);
45 rt_task_start(&task3, &demo, (void *)&num3);
46
47 rt_printf("end program with CRTL+C\n");
48 pause();
49 }