2012-03-21 2 views
0

Я написал глобальную программу hello с бесконечным циклом с API Xenomai, следующим образом: Это скоро будет прекращено.Как запустить бесконечный цикл в реальном времени - Linux?

Я действительно хотел протестировать время этой программы в реальном времени через latencytop.
Как запустить бесконечный цикл в реальном времени?

RT_TASK demo_task; 

void demo(void *arg) 
{ 
    RT_TASK *curtask; 
    RT_TASK_INFO curtaskinfo; 

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

    printf("Task name : %s \n", curtaskinfo.name); 

     //------------------ hello world -------------------- 
    while (1) 
    { 
     printf("Hello World!\n"); 
    } 

} 

int main(int argc, char* argv[]) 
{ 
    char str[10]; 

    rt_print_auto_init(1); 

    mlockall(MCL_CURRENT|MCL_FUTURE); 

    printf("start task\n"); 

    sprintf(str,"hello"); 
    rt_task_create(&demo_task, str, 0, 50, 0); 

    rt_task_start(&demo_task, &demo, 0); 
} 

ответ

4

В нижней части основного также помещается бесконечный цикл. в то время как (1) сон (10000) обычно хорош на полномасштабном Linux, не знаю о RT-мире.

Что происходит, так это то, что вы создаете новую задачу, а затем сразу же возвращается домой, что выходит из всего процесса.

0

Я согласен:

Что происходит, что вы нерест от новой задачи, а затем главный немедленно возвращается после этого, который выходит весь процесс.

Но, ИМО, вы должны использовать rt_task_join() в конце основной для

Wait о прекращении реального времени задачи. [1]

[1] https://xenomai.org/documentation/trunk/html/api/group__task.html

 Смежные вопросы

  • Нет связанных вопросов^_^