Linux kernel 具有最低优先级的内核线程

Linux kernel 具有最低优先级的内核线程,linux-kernel,embedded-linux,power-management,Linux Kernel,Embedded Linux,Power Management,我正在为嵌入式linux设备实现电源管理支持。要求是在系统中没有任何东西可运行且下一个计时器事件足够长时执行系统挂起到内存。我打算基于现有的内核enter_state()函数 最初,我计划从cpu_idle()函数(idle kernel thread)调用我的代码,因为它是在系统中没有任何东西可以运行时运行的。但是我遇到了一个问题,enter_state()最终调用schedule()函数,然后我收到一条错误消息:“错误:从空闲线程进行调度!” 因此,我得出结论,我必须创建自己的内核线程,但具

我正在为嵌入式linux设备实现电源管理支持。要求是在系统中没有任何东西可运行且下一个计时器事件足够长时执行系统挂起到内存。我打算基于现有的内核enter_state()函数
最初,我计划从cpu_idle()函数(idle kernel thread)调用我的代码,因为它是在系统中没有任何东西可以运行时运行的。但是我遇到了一个问题,enter_state()最终调用schedule()函数,然后我收到一条错误消息:“错误:从空闲线程进行调度!”
因此,我得出结论,我必须创建自己的内核线程,但具有最低的静态优先级。我的问题是如何做到这一点

还有一个问题:您是否看到这种实现中存在任何潜在问题?

您可以创建一个内核守护进程线程,并将调度策略设置为SCHED_BATCH或SCHED_IDLE。只有当运行队列中没有更多进程要调度时,这些进程才会运行。 您可以扩展它,在每个cpu上创建一个这样的守护进程线程。 挂起设备逻辑可以在线程内部启动