是否可以在vxWorks中为RTP和内核模块使用相同的文件?

时间:2020-03-06 14:34:32  来源:igfitidea点击:

我们有一个vxWorks应用程序,我们希望将其部署为内核模块或者实时进程。

是否可以从同一源文件执行此操作,还是必须为内核模块创建一个文件,为RTP创建另一个文件?

解决方案

最简单的解决方案是拥有一个可以编译为内核模块或者实时进程的文件。
它可能看起来应该像这样:

void MyModule_Init()
{
   // Initialize the module
   ...
}
...
#ifdef __RTP__
int main(...)
{
   // RTP Main just invokes the Module's initialization
   MyModule_Init();
}
#endif

如果构建用于RTP环境,则定义__RTP__宏
如果构建用于内核环境,则定义_WRS_KERNEL宏。

使用这两个宏,我们可以在两种环境下进行代码编译。