***本記事にはプロモーションが含まれています。***
タイマー/時計のパッチとバイナリを作りました。
http://www.h7.dion.ne.jp/~qemu-win/download/qemu-20060330-timer.patch
http://www.h6.dion.ne.jp/~kazuw/qemu-win/qemu-20060330-timer.zip
1ms間隔の割り込みをサポートします。
Kqemu/Qvm86を使ったときでも、時間が正確です。
時計の遅れは、main_loop_waitがSleepしているとき、割り込みの時間切れになっても、タイマー割り込みが起こらないことが原因でした。イベントオブジェクトを使って解決しています。
QEMUの時間測定は、RDTSCを使っていたのですが、見ているとどうも時間が安定していないです。ticks_per_secの時間測定は、_ftimeを使っていたんですけど、精度がよくないので、QueryPerformanceCounter/QueryPerformanceFrequencyを使う方法に変えてみました。すると、びっくりするくらい時計が安定しました。
もしかすると、SMP(HTもしくはマルチコア)のシステムでも、使えるかもしれません。未確認ですけど。
これで、ベンチマークソフトが使えます。今まで、時計が不安定で使えなかったので。
これでうれしい人が多いかもね。とりあえず、できてよかった。
追記:
Windowsホストだけです。Win2k/XPゲストのタスクバーの時計をダブルクリックしてはいけません。画面がフリーズして終了できなくなってしまいます。