我正在做一个在内核和用户空间中使用RTAI的大型项目。我不想深入讨论这个项目的细节,但这里简单地说明了一个问题出现的地方。
在用户空间中,我的项目提供了一个其他人用来编写软件的库.这些程序本身可能具有RTAI实时线程。
现在,RTAI中的一些函数要求它们的调用线程已经rt_thread_inited,所以如果我想在库中的函数中使用它们,我需要通过调用rt_thread_init和后来的rt_task_delete来临时实时地执行调用线程。
现在问题是:
如果我的函数的调用线程已经是实时的,那么我假设是rt_thread_initing,但我假设它失败了,但是我将rt_task_delete并使该线程非实时(除了当线程本身(假设我没有改变)再次rt_task_deletes,RTAI崩溃这一事实。
如果函数的调用线程不是实时的,那么一切都是正常的。
现在,我使用函数中的一个参数,以便调用函数告诉库它是否是实时的。但是,我想知道RTAI是否有一个函数或其他什么功能,可以用来自动检测当前线程是否是实时的.。
不知道这里是否有任何RTAI用户(我当然没有看到RTAI标签),但希望有。
发布于 2011-10-15 18:35:28
我从未尝试过,所以这只是猜测--但是您考虑过使用rt_whoami吗?
获取当前任务的任务指针。
https://www.rtai.org/documentation/magma/html/api/api_8c.html#a12
我可以想象它会失败(返回NULL?)如果你在非RT任务中..。
https://stackoverflow.com/questions/7778122
复制相似问题