我有两个内核线程,分别运行 a() 和 b()。a() 试图唤醒 b() 如下。
a() {
while(1) {
while( atomic_read(status) != SET_SLEEP )
msleep(10);
atomic_set(status, SET_RUN);
printk( "..." );
wake_up( wq );
}
b() {
while(1) {
atomic_set(status, SET_SLEEP);
printk( "..." );
wait_event( wq, atomic_read(status) != SET_SLEEP );
printk( "..." );
}
长时间运行后,整个系统都会挂起,CPU会变高。没有打印任何恐慌消息。有没有人有想法?