final commit assignment 2
[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 rt_task_set_periodic(NULL, TM_NOW, *(unsigned long long *)arg);
17 RT_TASK *curtask;
18 RT_TASK_INFO curtaskinfo;
19 curtask=rt_task_self();
20 rt_task_inquire(curtask, &curtaskinfo);
21 while(1){
22 rt_printf("Task name: %s\n", curtaskinfo.name);
23 rt_task_wait_period(NULL);
24 }
25 }
26
27 int main(int argc, char* argv[])
28 {
29 rt_print_auto_init(1);
30 mlockall(MCL_CURRENT|MCL_FUTURE);
31
32 rt_task_create(&task1, "t1", 0, 50, 0);
33 rt_task_create(&task2, "t2", 0, 50, 0);
34 rt_task_create(&task3, "t3", 0, 50, 0);
35
36 uint64_t num1 = 1000000000LLU, num2 = 2000000000LLU, num3 = 3000000000LLU;
37
38 rt_task_start(&task1, &demo, (void *)&num1);
39 rt_task_start(&task2, &demo, (void *)&num2);
40 rt_task_start(&task3, &demo, (void *)&num3);
41
42 rt_printf("end program with CRTL+C\n");
43 pause();
44 }