Hi

I'm a newbie in real time programming and I recently came to know of Xenomai. After patching the Xenomai to the linux kernel, I ran some examples that I found from the Internet to get a better understanding of the periodic task. Everything seems to run fine when I start two tasks with period of 1s and 2s, but the system freezes when I added more tasks ( more than 2 tasks). The period is at 1s, 2s and 3s so i think the processor has more than enough time to process the tasks.

I also read that the periodic mode is emulated by a software driver which uses one-shot mode programming. Thus i did not enable periodic timing when I compile the Linux kernel, is this the cause of the problem?

I'm using a system with Core i7, ubuntu 10.04, linux kernel 2.6.32.15, xenomai 2.5.4

Do let me know what I did wrong in the code, thanks in advance!!


void demo (void *arg)
{
 //take in argument
 int num = (int *)arg;

 RT_TASK *curtask;
 RT_TASK_INFO curtaskinfo;

 curtask=rt_task_self();
 rt_task_inquire(curtask,&curtaskinfo);

 // task period in seconds
 rt_task_set_periodic(NULL, TM_NOW, (1000000000 * num));

 while(1)
 {
    rt_printf("Task name: %s \n", curtaskinfo.name);
    rt_task_wait_period(NULL);
  }

}

int main(int argc, char **argv)
{
  rt_print_auto_init(1);

  mlockall(MCL_CURRENT|MCL_FUTURE);

  rt_task_create(&demo_task1, "task1", 0, 1, 0);
  rt_task_create(&demo_task2, "task2", 0, 1, 0);
  rt_task_create(&demo_task3, "task3", 0, 1, 0);

  rt_task_start(&demo_task1, &demo, 1);
  rt_task_start(&demo_task2, &demo, 2);
  rt_task_start(&demo_task3, &demo, 3);

  pause();

  return 0;
}


_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to