本文介绍了如何解决“BUG: schedule while atomic: swapper/0x00000103/0, CPU#0"?在 TSC2007 驱动程序中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I found tsc2007 driver and modified according to our needs. Our firm is producing its own TI DM365 board. In this board we used TSC2007 and connected PENIRQ pin to GPIO0 of DM365. It is being seen OK on driver. when i touch to touchscreen cursor is moving but at the same time i am getting

BUG: scheduling while atomic: swapper /0x00000103/0, CPU#0

警告和嵌入式 Linux 正在崩溃.我修改并上传了 2 个文件到 http://www.muhendislikhizmeti.com/touchscreen.zip 一个是带定时器的,另一个不是.在任何情况下都会出现此错误.

warning and embedded Linux is being crashed. there are 2 files that i modified and uploaded to http://www.muhendislikhizmeti.com/touchscreen.zip one is with timer the other is not. it is giving this error in any case.

我在网络上找到了一个解决方案,我需要使用工作队列并使用 schedule_work() API 进行调用.但他们现在对我来说很模糊.有没有人知道如何解决这个问题,并且可以给我一些建议,从哪里开始使用工作队列.

I found a solution on web that i need to use work queue and call with using schedule_work() API. but they are blur for me now. Is anybody have any idea how to solve this problem and can give me some advice where to start to use work queue.

推荐答案

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

"Scheduling while atomic" indicates that you've tried to sleep somewhere that you shouldn't - like within a spinlock-protected critical section or an interrupt handler.

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

Common examples of things that can sleep are mutex_lock(), kmalloc(..., GFP_KERNEL), get_user() and put_user().

这篇关于如何解决“BUG: schedule while atomic: swapper/0x00000103/0, CPU#0"?在 TSC2007 驱动程序中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-26 17:54