Patent ID: 8219722

Claim:
A method of executing a multithreaded emulator, the method comprising: selecting a first emulation thread from a plurality of emulation threads on a host system to execute; determining that the first emulation thread is not executing an emulated direct memory access (DMA); determining that the first emulation thread has not stalled; determining that an execution time period for the first emulation thread has expired; suspending the first emulation thread based at least in part on: a) the determination that the first emulation thread is not executing an emulated DMA, b) the determination that the first emulation thread has not stalled, and c) the determination that the execution time period for the first emulation thread has expired; selecting a second emulation thread from the plurality of emulation threads on the host system to execute; determining that the second emulation thread is executing an emulated DMA; determining that the second emulation thread has stalled; and suspending the second emulation thread based at least in part on: d) the determination that the second emulation thread is executing an emulated DMA, and e) the determination that the second emulation thread has stalled.