中断和定时器不允许睡眠: BUG: scheduling while atomic: swapper/0/0x00000100
来源:互联网 发布:文言文虚词乎 编辑:程序博客网 时间:2024/04/30 21:09
BUG: scheduling while atomic: swapper/0/0x00000100
Modules linked in: iqs316
Pid: 0, comm: swapper
CPU: 0 Not tainted (2.6.37 #111)
PC is at default_idle+0x48/0x50
LR is at default_idle+0x3c/0x50
pc : [<c00317c0>] lr : [<c00317b4>] psr: 60000013
sp : c0383fc8 ip : 00000000 fp : 00000000
r10: 3001f784 r9 : 41129200 r8 : 3001f7b8
r7 : c0385ba8 r6 : c0020f0c r5 : c03a37cc r4 : c0382000
r3 : 60000013 r2 : f6100000 r1 : 00000032 r0 : c0389b78
Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: c000717f Table: 339f0000 DAC: 00000017
bad: scheduling from the idle thread!
[<c0035d38>] (unwind_backtrace+0x0/0xec) from [<c003fd8c>] (dequeue_task_idle+0x
20/0x34)
[<c003fd8c>] (dequeue_task_idle+0x20/0x34) from [<c003f214>] (dequeue_task+0x30/
0x3c)
[<c003f214>] (dequeue_task+0x30/0x3c) from [<c003f254>] (deactivate_task+0x34/0x
44)
[<c003f254>] (deactivate_task+0x34/0x44) from [<c028c150>] (schedule+0x13c/0x324
)
[<c028c150>] (schedule+0x13c/0x324) from [<c028c5dc>] (schedule_timeout+0x148/0x
184)
[<c028c5dc>] (schedule_timeout+0x148/0x184) from [<c004eb30>] (msleep+0x14/0x24)
[<c004eb30>] (msleep+0x14/0x24) from [<bf000378>] (CommsIQS316_send+0x58/0x1fc [
iqs316])
[<bf000378>] (CommsIQS316_send+0x58/0x1fc [iqs316]) from [<bf0005c4>] (CommsIQS3
16_Read+0x18/0x28 [iqs316])
[<bf0005c4>] (CommsIQS316_Read+0x18/0x28 [iqs316]) from [<bf000614>] (IQS316_New
_Conversion+0x40/0x170 [iqs316])
[<bf000614>] (IQS316_New_Conversion+0x40/0x170 [iqs316]) from [<bf0000a4>] (iqs3
16_timer_func+0x20/0x58 [iqs316])
[<bf0000a4>] (iqs316_timer_func+0x20/0x58 [iqs316]) from [<c004e8d4>] (run_timer
_softirq+0x158/0x208)
[<c004e8d4>] (run_timer_softirq+0x158/0x208) from [<c00497a4>] (__do_softirq+0x7
c/0x10c)
[<c00497a4>] (__do_softirq+0x7c/0x10c) from [<c0025074>] (asm_do_IRQ+0x74/0x94)
[<c0025074>] (asm_do_IRQ+0x74/0x94) from [<c00302e4>] (__irq_svc+0x24/0xa0)
Exception stack(0xc0383f80 to 0xc0383fc8)
3f80: c0389b78 00000032 f6100000 60000013 c0382000 c03a37cc c0020f0c c0385ba8
3fa0: 3001f7b8 41129200 3001f784 00000000 00000000 c0383fc8 c00317b4 c00317c0
3fc0: 60000013 ffffffff
[<c00302e4>] (__irq_svc+0x24/0xa0) from [<c00317c0>] (default_idle+0x48/0x50)
[<c00317c0>] (default_idle+0x48/0x50) from [<c0031d8c>] (cpu_idle+0x58/0x98)
[<c0031d8c>] (cpu_idle+0x58/0x98) from [<c0008a5c>] (start_kernel+0x254/0x2a8)
[<c0008a5c>] (start_kernel+0x254/0x2a8) from [<30008034>] (0x30008034)
BUG: scheduling while atomic: swapper/0/0x00000100
Modules linked in: iqs316
从出错信息的[<c004eb30>] (msleep+0x14/0x24) from [<bf000378>] (CommsIQS316_send+0x58/0x1fc [iqs316]) 来看,
可以发现是因为中断处理函数中的CommsIQS316_send函数调用了msleep()函数所致。
linux内核打印"BUG: scheduling while atomic"和"bad: scheduling from the idle thread"错误的时候,通常是在中断处理函数(包括定时器中断处理函数)中调用了导致休眠的函数,如sleep,kmalloc,ioremap,semaphore,mutex之类的函数,而 linux内核要求在中断处理的时候,不允许抢占,不允许休眠,要等到中断处理完成才能做其他事情
- 中断和定时器不允许睡眠: BUG: scheduling while atomic: swapper/0/0x00000100
- BUG: scheduling while atomic: swapper/0/0x00000100
- BUG: scheduling while atomic: swapper/0/0x00000100
- Linux驱动常见BUG: scheduling while atomic: swapper/0/0x00000100
- BUG: scheduling while atomic: gnode/1005/0x00000100
- netfilter bug scheduling while atomic: swapper/0/0x10000100
- 基于imx53:BUG: scheduling while atomic: swapper/1/0x00000002
- bug:scheduling while atomic
- BUG: scheduling while atomic
- BUG: scheduling while atomic: events/0/4/总结
- BUG: scheduling while atomic 分析
- BUG: scheduling while atomic经典bug
- BUG: scheduling while atomic: ksdioirqd/mmc2/91/0x00000104错误分析
- scheduling while atomic问题
- Scheduling while atomic
- 【Linux】【Kernel】BUG: scheduling while atomic问题分析
- Linux 中断上下文为什么不允许睡眠?
- 信号发送及可中断睡眠和不可中断睡眠
- 获取客户端IP
- 谈谈Java:Checked Exception与Runtime Exception 的区别
- hadoop同步集群个节点命令rsync
- vim常用命令总结
- 优化SQLServer索引的小技巧
- 中断和定时器不允许睡眠: BUG: scheduling while atomic: swapper/0/0x00000100
- GIT & REPO & GERRIT (二)
- H.265之三 -帧内预测(2)
- 我的淘宝店:亲亲台宝 简介
- 装饰模式(Decorator)
- Extjs 4.2 中 Ext.MessageBox.msgButtons[0].setText()方法没有效果
- 快速简单理解i2c标准协议
- GIT & REPO & GERRIT (三)
- dg创建stdby报错NMO not setuid-root (Unix-only)