Hypercall Classes

The hypervisor's hypercall interface supports both the simple class and repetitive class of hypercalls to the interface's functions. A simple hypercall performs a single operation and has a fixed-size set of input and output parameters. A repetitive hypercall (rep hypercall) performs a series of simple hypercalls. In addition to a fixed-size set of input and output parameters, rep hypercalls have a set of fixed-size elements.

When a caller first calls a rep hypercall, the caller specifies a rep count that indicates the number of elements in the rep hypercall series. Callers also specify a rep start index that indicates the next element that the hypervisor should process. The hypervisor processes rep hypercall elements in list order--that is, in order of increasing element index.

For the next calls to the rep hypercall, the rep start index indicates how many elements have been completed, and together with the value of rep count, how many elements are left. For example, if a caller specifies a rep count of 25, and only 20 iterations are completed within the 50 microsecond window, the hypercall updates the rep start index to 20 and returns control back to the virtual processor that called it. For more information about the rep start index, see Hypercall Input Values. When the hypercall is reexecuted, the hypervisor will resume at element 20 and complete the remaining 5 elements.

If the hypervisor encounters an error when it processes an element, the hypervisor provides an appropriate status code and a reps completed count. The reps completed count indicates the number of elements that the hypervisor successfully processed before it encountered the error. Assuming that the specified hypercall control word is valid (see Hypercall Continuation) and the input and output parameter lists can be accessed, the hypervisor is guaranteed to try at least one element of the rep hypercall. However, the hypervisor is not required to process the whole list before it returns control back to the caller.

 

 

Send comments about this topic to Microsoft

Build date: 11/16/2013

Show:
© 2014 Microsoft. All rights reserved.