|
wake_up_interruptible和wait_event_interruptible问题
[复制链接]
小弟写了实现一个read阻塞程序,但是在唤醒过程中报错,第一次唤醒成功,第二次就不行了。望大虾们帮忙。
error如下:
irq7: nobody cared
Pid: 0, comm: swapper
CPU: 0
PC is at default_idle+0x4c/0x54
LR is at arch_idle+0x10/0x14
pc : [] lr : [] Not tainted
sp : c022dfa0 ip : c022dfa0 fp : c022dfac
r10: 6001cd90 r9 : 41069264 r8 : 6001cdc0
r7 : c02b7440 r6 : c022ffdc r5 : c0023704 r4 : c022c000
r3 : 60000013 r2 : 0005217f r1 : 0005317f r0 : 00000000
Flags: nZCv IRQs on FIQs on Mode SVC_32 Segment kernel
Control: 5317F Table: 60F54000 DAC: 00000017
[] (show_regs+0x0/0x4c) from [] (report_bad_irq+0x6c/0xcc)
r4 = C022DF58
[] (report_bad_irq+0x0/0xcc) from [] (do_level_IRQ+0x8c/0xc)
r5 = 00000007 r4 = C027C12C
[] (do_level_IRQ+0x0/0xc8) from [] (asm_do_IRQ+0x54/0x150)
r6 = 00000001 r5 = C027C12C r4 = 00000007
[] (asm_do_IRQ+0x0/0x150) from [] (__irq_svc+0x38/0x8c)
[] (default_idle+0x0/0x54) from [] (cpu_idle+0x5c/0xa0)
[] (cpu_idle+0x0/0xa0) from [] (__init_end+0x30/0x38)
r6 = C022FCDC r5 = C027DA3C r4 = C02A2DFC
[] (__init_end+0x0/0x38) from [] (start_kernel+0x140/0x178)
[] (start_kernel+0x0/0x178) from [<60008094>] (0x60008094)
[] (dump_stack+0x0/0x14) from [] (report_bad_irq+0x70/0xcc)
[] (report_bad_irq+0x0/0xcc) from [] (do_level_IRQ+0x8c/0xc)
r5 = 00000007 r4 = C027C12C
[] (do_level_IRQ+0x0/0xc8) from [] (asm_do_IRQ+0x54/0x150)
r6 = 00000001 r5 = C027C12C r4 = 00000007
[] (asm_do_IRQ+0x0/0x150) from [] (__irq_svc+0x38/0x8c)
[] (default_idle+0x0/0x54) from [] (cpu_idle+0x5c/0xa0)
[] (cpu_idle+0x0/0xa0) from [] (__init_end+0x30/0x38)
r6 = C022FCDC r5 = C027DA3C r4 = C02A2DFC
[] (__init_end+0x0/0x38) from [] (start_kernel+0x140/0x178)
[] (start_kernel+0x0/0x178) from [<60008094>] (0x60008094)
handlers:
[] (ir_in_irq+0x0/0x24 [ir])
第二次在执行 wake_up_interruptible(&ir_wait_q)这句话的过程中,打印如下信息:
irq7: nobody cared
Pid: 413, comm: ir_check_stream
CPU: 0
PC is at ir_open+0x3c/0x64 [ir]
LR is at ir_open+0x3c/0x64 [ir]
pc : [] lr : [] Not tainted
sp : c065be78 ip : 00000000 fp : c065be88
r10: c0f3de88 r9 : c0e4fa7c r8 : c023bf98
r7 : 0000003d r6 : 00000001 r5 : c023bea8 r4 : 00000000
r3 : 00000004 r2 : c1869410 r1 : 00000004 r0 : 00000000
Flags: Nzcv IRQs on FIQs on Mode SVC_32 Segment user
Control: 5317F Table: 60650000 DAC: 00000015
[] (show_regs+0x0/0x4c) from [] (report_bad_irq+0x6c/0xcc)
r4 = C065BE30
[] (report_bad_irq+0x0/0xcc) from [] (do_level_IRQ+0x8c/0xc)
r5 = 00000007 r4 = C027C12C
[] (do_level_IRQ+0x0/0xc8) from [] (asm_do_IRQ+0x54/0x150)
r6 = 00000001 r5 = C027C12C r4 = 00000007
[] (asm_do_IRQ+0x0/0x150) from [] (__irq_svc+0x38/0x8c)
[] (ir_open+0x0/0x64 [ir]) from [] (misc_open+0x28c/0x458)
r4 = BF00D0E0
[] (misc_open+0x0/0x458) from [] (chrdev_open+0x1b8/0x1e0)
[] (chrdev_open+0x0/0x1e0) from [] (__dentry_open+0x138/0x2)
[] (__dentry_open+0x0/0x2b0) from [] (filp_open+0x7c/0x98)
[] (filp_open+0x0/0x98) from [] (do_sys_open+0x44/0xd0)
r7 = 00000005 r6 = 00000004 r5 = 00000180 r4 = 00000002
[] (do_sys_open+0x0/0xd0) from [] (sys_open+0x10/0x14)
[] (sys_open+0x0/0x14) from [] (ret_fast_syscall+0x0/0x2c)
[] (dump_stack+0x0/0x14) from [] (report_bad_irq+0x70/0xcc)
[] (report_bad_irq+0x0/0xcc) from [] (do_level_IRQ+0x8c/0xc)
r5 = 00000007 r4 = C027C12C
[] (do_level_IRQ+0x0/0xc8) from [] (asm_do_IRQ+0x54/0x150)
r6 = 00000001 r5 = C027C12C r4 = 00000007
[] (asm_do_IRQ+0x0/0x150) from [] (__irq_svc+0x38/0x8c)
[] (ir_open+0x0/0x64 [ir]) from [] (misc_open+0x28c/0x458)
r4 = BF00D0E0
[] (misc_open+0x0/0x458) from [] (chrdev_open+0x1b8/0x1e0)
[] (chrdev_open+0x0/0x1e0) from [] (__dentry_open+0x138/0x2)
[] (__dentry_open+0x0/0x2b0) from [] (filp_open+0x7c/0x98)
[] (filp_open+0x0/0x98) from [] (do_sys_open+0x44/0xd0)
r7 = 00000005 r6 = 00000004 r5 = 00000180 r4 = 00000002
[] (do_sys_open+0x0/0xd0) from [] (sys_open+0x10/0x14)
[] (sys_open+0x0/0x14) from [] (ret_fast_syscall+0x0/0x2c)
handlers:
[] (ir_in_irq+0x0/0x24 [ir])
|
|