我正在为嵌入式Linux设备实施电源管理支持。当系统中没有任何东西可以运行并且下一个计时器事件足够远时,要求是执行系统挂起到内存。我打算基于现有的内核enter_state()函数
最初我计划从cpu_idle()函数(空闲内核线程)调用我的代码,因为它在系统中没有任何东西可以运行时运行。但我遇到一个问题,即enter_state()最终调用schedule()函数,然后我收到一条错误消息:“bad:从空闲线程调度!”
所以我得出结论,我将不得不创建自己的内核线程,但具有最低和静态优先级。我的问题是如何做到这一点?
另一个问题是:你认为这种实施中存在任何潜在的问题吗?
答案 0 :(得分:1)
您可以创建内核守护程序线程,并将调度策略设置为SCHED_BATCH或SCHED_IDLE。仅当运行队列中没有更多进程要进行调度时,它们才会运行。 您可以扩展它以在每个cpu上创建一个这样的守护程序线程。 可以在线程内部启动暂停设备逻辑。