| /** @file | |
| Functions declarations to make Xen hypercalls. | |
| Copyright (C) 2014, Citrix Ltd. | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #ifndef __XEN_HYPERCALL_LIB_H__ | |
| #define __XEN_HYPERCALL_LIB_H__ | |
| /** | |
| To call when the gEfiXenInfoGuid HOB became available after the library init | |
| function has already been executed. | |
| This allow to make hypercall in the PEIM stage. | |
| **/ | |
| RETURN_STATUS | |
| EFIAPI | |
| XenHypercallLibInit ( | |
| VOID | |
| ); | |
| /** | |
| Check if the Xen Hypercall library is able to make calls to the Xen | |
| hypervisor. | |
| Client code should call further functions in this library only if, and after, | |
| this function returns TRUE. | |
| @retval TRUE Hypercalls are available. | |
| @retval FALSE Hypercalls are not available. | |
| **/ | |
| BOOLEAN | |
| EFIAPI | |
| XenHypercallIsAvailable ( | |
| VOID | |
| ); | |
| /** | |
| This function will put the two arguments in the right place (registers) and | |
| invoke the hypercall identified by HypercallID. | |
| @param HypercallID The symbolic ID of the hypercall to be invoked | |
| @param Arg1 First argument. | |
| @param Arg2 Second argument. | |
| @return Return 0 if success otherwise it return an errno. | |
| **/ | |
| INTN | |
| EFIAPI | |
| XenHypercall2 ( | |
| IN UINTN HypercallID, | |
| IN OUT INTN Arg1, | |
| IN OUT INTN Arg2 | |
| ); | |
| /** | |
| Return the value of the HVM parameter Index. | |
| @param Index The parameter to get, e.g. HVM_PARAM_STORE_EVTCHN. | |
| @return The value of the asked parameter or 0 in case of error. | |
| **/ | |
| UINT64 | |
| EFIAPI | |
| XenHypercallHvmGetParam ( | |
| UINT32 Index | |
| ); | |
| /** | |
| Hypercall to do different operation on the memory. | |
| @param Operation The operation number, e.g. XENMEM_add_to_physmap. | |
| @param Arguments The arguments associated to the operation. | |
| @return Return the return value from the hypercall, 0 in case of success | |
| otherwise, an error code. | |
| **/ | |
| INTN | |
| EFIAPI | |
| XenHypercallMemoryOp ( | |
| IN UINTN Operation, | |
| IN OUT VOID *Arguments | |
| ); | |
| /** | |
| Do an operation on the event channels. | |
| @param Operation The operation number, e.g. EVTCHNOP_send. | |
| @param Arguments The argument associated to the operation. | |
| @return Return the return value from the hypercall, 0 in case of success | |
| otherwise, an error code. | |
| **/ | |
| INTN | |
| EFIAPI | |
| XenHypercallEventChannelOp ( | |
| IN INTN Operation, | |
| IN OUT VOID *Arguments | |
| ); | |
| #endif |