首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决"BUG:调度原子: swapper /0x00000103/0,CPU#0"?在TSC2007驱动中?

如何解决"BUG:调度原子: swapper /0x00000103/0,CPU#0"?在TSC2007驱动中?
EN

Stack Overflow用户
提问于 2010-08-21 18:23:36
回答 4查看 49.3K关注 0票数 24

我找到了tsc2007驱动程序,并根据需要进行了修改。我们公司正在生产自己的TI DM365板。在本电路板中,我们使用了TSC2007,并将PENIRQ引脚连接到DM365的GPIO0。在驱动程序上显示正常。当我触摸到触摸屏时,光标正在移动,但同时我得到了

代码语言:javascript
复制
BUG: scheduling while atomic: swapper /0x00000103/0, CPU#0

警告和嵌入式Linux正在崩溃。有两个文件,我修改并上传到http://www.muhendislikhizmeti.com/touchscreen.zip,一个是计时器,另一个不是。它在任何情况下都会给出这个错误。

我在网上找到了一个解决方案,我需要使用工作队列并使用schedule_work() API进行调用。但现在对我来说,它们是模糊的。有谁知道如何解决这个问题,并能给我一些建议,从哪里开始使用工作队列?

EN

回答 4

Stack Overflow用户

发布于 2010-08-23 09:55:13

"Scheduling while atomic“表示您尝试在不应该的地方休眠--比如在受自旋锁保护的临界区或中断处理程序中。

可以休眠的常见例子有mutex_lock()kmalloc(..., GFP_KERNEL)get_user()put_user()

票数 36
EN

Stack Overflow用户

发布于 2011-12-02 17:59:49

正如在第一个答案中所说的,调度而原子发生时,调度器被混淆,因此无法正常工作,这是因为调度器试图在包含不可调度代码的部分中执行"schedule()“。

例如,在由自旋锁保护的区段内使用休眠。尝试使用另一个锁(信号量、互斥..)受自旋锁保护的代码内部也可能会干扰调度程序。此外,在用户空间中使用自旋锁可以驱动调度器这样做。希望这能有所帮助

票数 14
EN

Stack Overflow用户

发布于 2015-08-16 01:18:12

对于其他有类似错误的人-我遇到了这个问题,因为我有一个从原子上下文调用的函数,它使用了kzalloc(..., GFP_KERN),而它本应该使用GFP_NOWAITGFP_ATOMIC

这只是一个函数在您不想休眠的时候休眠的例子,这是在内核编程中必须小心的事情。

希望这篇文章对其他人有用!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3537252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档