a() と b() をそれぞれ実行する 2 つのカーネル スレッドがあります。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 の使用率が高くなります。パニックメッセージは出力されません。アイデアを持っている人はいますか?