***本記事にはプロモーションが含まれています。***
-snapshotモードを動かそうと思って、いろいろいじってはみたのですが、なかなか難しい。
aiocb(aioコントロールブロック)というのを使って、データの入出力の管理をしています。qemu_aio_getでaiocbを確保して、qemu_aio_releaseで開放というかdrv->free_aiocbというリストに登録しておくことで再利用しています。
この、drv->free_aiocbは単方向リストなのですが、リストの次が自分を指してしまって循環してしまったり、そのせいで、データが二重に使われたりして動かなくなっています。
というところまでは把握したのですが、じゃあなぜ動かないのかがよくわからず。
余談になりますが、LinuxホストのgdbでSIGUSR1/SIGUSR2というシグナルを無視するように設定しても、無視してくれないのですね。なんだか、QEMU自身のデバッグがますますしづらくなってきている気がします。
非同期なんか使うものじゃないかも。