2

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

4

1 回答 1

1

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

于 2012-09-04T22:17:26.713 回答