Как определить, является ли вызывающий поток функции уже RTAI в реальном времени? - PullRequest
0 голосов
/ 15 октября 2011

Я работаю над большим проектом, который использует RTAI как в ядре, так и в пространстве пользователя. Я не буду вдаваться в детали проекта, но здесь кратко, где возникает проблема.

В пользовательском пространстве мой проект предоставляет библиотеку, используемую другими людьми для написания некоторого программного обеспечения. Сами эти программы могут иметь потоки реального времени RTAI.

Теперь, некоторые функции в RTAI требуют, чтобы их вызывающий поток уже rt_thread_init редактировал, поэтому, если я хочу использовать их в функции в библиотеке, мне нужно временно сделать вызывающий поток в реальном времени, вызвав rt_thread_init и позже rt_task_delete.

Теперь вот проблема:

Если вызывающий поток моей функции уже в режиме реального времени, то я rt_thread_init думаю, что, как я полагаю, просто терпит неудачу, но затем я rt_task_delete и делаю этот поток не в реальном времени (кроме того факта, что когда сам поток (при условии, что я ничего не изменил) снова rt_task_delete s, RTAI падает.

Если вызывающий поток моей функции не в режиме реального времени, все в порядке.

Сейчас я прибег к параметру в функции, чтобы вызывающая функция сообщала библиотеке, в реальном времени она или нет. Тем не менее, Я хотел знать, есть ли в RTAI функция или что-то еще, чтобы я мог автоматически определять, работает ли текущий поток в реальном времени или нет.

Не знаю, есть ли здесь пользователи RTAI (я, конечно, не видел тег RTAI), но надеюсь, что это будет.

1 Ответ

1 голос
/ 15 октября 2011

Сам никогда не пробовал, так что это предположение - но вы рассматривали возможность использования rt_whoami?

Получить указатель задачи текущей задачи.

https://www.rtai.org/documentation/magma/html/api/api_8c.html#a12

Я полагаю, что он потерпит неудачу (вернет NULL?), Если вы выполняете задачу без RT ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...