qemu中信号丢失
那在qemu中,有一个gui timer会定时刷新gui的信息。现在gui的tile没有变化,就说明这个gui timer 根本没有被触发。
而在qemu中的定时器是通过函数host_alarm_handler来触发运行的,函数host_alarm_handler又是通过信号来进行触发的。那么问题的根源就是信号没有被发送或者被block(还没有查出具体原因)。
我尝试在终端中向qemu发生SIGALRM信号,果然,qemu接收到SIGALRM信号后,执行host_alarm_handler然后会执行所有注册了的定时器的超时函数(包括display_state.gui_timer)。
kill-bill: # ps aux | grep qemu
root 2945 101 3.2 196468 8404 pts/1 R+ 09:36 0:14 ./qemu-system-arm -M beagle -mtdblock beagle-nand.bin
root 2947 0.0 0.2 2996 692 pts/0 R+ 09:36 0:00 grep qemu
kill-bill: # kill -s SIGALRM 2945
多次发送SIGALRM信号后,qemu可以正常接受终端的输入。下面是qemu运行u-boot的截图。
接下来就需要查找为什么qemu没有收到SIGALRM!