将关键C程序锁定在RAM +最高调度优先级中

我在嵌入式系统上运行了一个低级C程序,该程序执行关键的系统检查并运行硬件(风扇,温度检查等)。

它还通过每隔几秒钟执行一次简单的fopen操作来对/ dev / watchdog进行ping操作,以此作为防御措施,以在此进程停止运行时完全关闭系统。

    watchdog = fopen("/dev/watchdog","w");
    fprintf(watchdog,"1");
    fclose(watchdog);

问题是此系统在RAM上非常受限制,因此很多其他进程被交换到SD卡中,这非常慢...有时这些进程会接管工作,并且可能需要10秒钟的时间才能完全进入看门狗再次对其执行ping操作(硬件将其超时固定为16秒)。

我需要确保该看门狗进程始终在RAM中(因此fopen永远不会将页面分页到SD卡),并且其调度优先级是CPU的最高优先级。

我猜我可以跑步

mlockall(MCL_CURRENT|MCL_FUTURE);

要解决内存问题,进程中的所有内存都应保留在RAM中。至于调度,我尝试将进程优先级提高到-19,但这仍然不能阻止它确保每5秒执行一次,就像它应该在循环中一样。

还有其他建议吗?

xyx006 回答:将关键C程序锁定在RAM +最高调度优先级中

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3069874.html

大家都在问