有没有办法在 vxWorks 中为 RTP 和内核模块使用相同的文件?

发布于 2024-07-05 17:20:36 字数 112 浏览 5 评论 0原文

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

有没有一种方法可以从同一个源文件执行此操作,或者我们是否必须为内核模块创建一个文件,为 RTP 创建另一个文件?

We have a vxWorks application that we would like to deploy either as a kernel module, or as a Real-Time process.

Is there a way to do this from the same source file, or do we have to create one file for the kernel module and another for the RTP?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

韶华倾负 2024-07-12 17:20:36

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


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 宏。

使用这两个宏,您可以为这两种环境编译代码。

The easiest solution would be to have a single file that can be compiled either as a kernel module, or as a Real-Time Process.
It probably should look something like this:


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

The __RTP__ macro is defined if the build is for a RTP environment
The _WRS_KERNEL macro is defined if the build is for a kernel environment.

With those two macros, you can have code compiling for both environment.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文