Set_VM_Time_Out

include vmm.inc

mov eax, Time ; number of milliseconds to time out

mov ebx, VM ; VM handle

mov edx, OFFSET32 RefData ; points to reference data

mov esi, OFFSET32 TimeOutCallback ; points to callback procedure

VMMcall Set_VM_Time_Out

mov [TimeOut], esi ; time-out handle


The Set_VM_Time_Out service schedules a time out that occurs after the specified virtual machine has run for the specified length of time. The system calls the time-out callback procedure only after the virtual machine has run for Time milliseconds. Time that elapses while other virtual machines run is not counted.

Parameters

Time

Specifies the number of milliseconds to wait until calling the time-out callback procedure.

VM

Specifies a handle identifying the virtual machine.

RefData

Points to reference data to be passed to the callback procedure.

TimeOutCallback

Points to the callback procedure. For more information about the callback procedure, see the following “Comments” section.

Return Value

The ESI register contains the handle of the time out if the service is successful. Otherwise, the ESI is zero indicating that the time out is not scheduled.

Comments

The system calls the time-out callback procedure when the virtual machine runs for the specified number of milliseconds. The system calls the procedure as follows:

mov ebx, VM ; current VM handle

mov ecx, Extra ; number of milliseconds since time out

mov edx, OFFSET32 RefData ; points to reference data

mov ebp, OFFSET32 crs ; points to Client_Reg_Struc

call [TimeOutCallback]

The VM parameter is a handle specifying the virtual machine for which the time out was scheduled. The RefData parameter points to the reference data for the callback procedure, and the crs parameter points to a Client_Reg_Struc structure that contains the register values for the virtual machine.

The Extra parameter specifies the number of milliseconds that have elapsed since the actual time out occurred. Time outs are often delayed by 10 milliseconds or more, because the normal system timer runs at 20 milliseconds or slower.

If a virtual device needs more accurate time outs, it must increase the timer interrupt frequency using virtual timer device (VTD) services.

Uses

ESI, Flags

See Also

Set_Global_Time_Out