我们有一个 vxWorks 应用程序,我们希望将其部署为内核模块或实时进程。
有没有办法从同一个源文件中执行此操作,还是我们必须为内核模块创建一个文件,为 RTP 创建另一个文件?
我们有一个 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 宏。
使用这两个宏,您可以为这两个环境编译代码。