include vmm.inc VMMcall Get_VMM_Reenter_Count jecxz not_reentered ; ecx is zero if VMM not re-entered mov [Count], ecx ; otherwise, number of times re-entered |
The Get_VMM_Reenter_Count service returns the number of times the
VMM has been re-entered as a result of a hardware interrupt, page fault, or
other processor exception. Virtual devices typically use this service to determine whether they can call VMM services that do not re-enter.
This service has no parameters.
The ECX register is zero if the VMM has not been re-entered. Otherwise, the ECX register specifies the number of times the VMM has been re-entered.
If this service returns a nonzero value, a virtual device may call only VMM
services that are asynchronous. If a virtual device must call other VMM
services, the virtual device can schedule an event using a service such as Schedule_Global_Event. The system calls the event's callback procedure when all VMM services are available.
The Call_Global_Event and Call_VM_Event services call this service to determine whether the event callback procedure should be called immediately.
Flags
Call_Global_Event, Call_VM_Event, Schedule_Global_Event, Schedule_VM_Event