Я работаю над большим проектом, который использует 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), но надеюсь, что это будет.