diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2005-09-03 17:55:47 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2005-09-03 17:55:47 +0000 |
commit | a332e112b73d641ca603066e46bb5b05d6c054fc (patch) | |
tree | 28e05df975d98a2e75af8bc4796ee38aa9d3751c /kqemu.c | |
parent | ca0d1734b44a67ca0077c3f5714d901f7489559d (diff) |
kqemu_cpu_interrupt support for win32 (Filip Navara)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1566 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'kqemu.c')
-rw-r--r-- | kqemu.c | 22 |
1 files changed, 17 insertions, 5 deletions
@@ -596,11 +596,14 @@ int kqemu_cpu_exec(CPUState *env) } #ifdef _WIN32 - DeviceIoControl(kqemu_fd, KQEMU_EXEC, - kenv, sizeof(struct kqemu_cpu_state), - kenv, sizeof(struct kqemu_cpu_state), - &temp, NULL); - ret = kenv->retval; + if (DeviceIoControl(kqemu_fd, KQEMU_EXEC, + kenv, sizeof(struct kqemu_cpu_state), + kenv, sizeof(struct kqemu_cpu_state), + &temp, NULL)) { + ret = kenv->retval; + } else { + ret = -1; + } #else #if KQEMU_VERSION >= 0x010100 ioctl(kqemu_fd, KQEMU_EXEC, kenv); @@ -737,4 +740,13 @@ int kqemu_cpu_exec(CPUState *env) return 0; } +void kqemu_cpu_interrupt(CPUState *env) +{ +#if defined(_WIN32) && KQEMU_VERSION >= 0x010101 + /* cancelling the I/O request causes KQEMU to finish executing the + current block and successfully returning. */ + CancelIo(kqemu_fd); +#endif +} + #endif |