2 Functions to make Xen hypercalls.
4 Copyright (C) 2014, Citrix Ltd.
6 SPDX-License-Identifier: BSD-2-Clause-Patent
12 #include <IndustryStandard/Xen/hvm/params.h>
13 #include <IndustryStandard/Xen/memory.h>
15 #include <Library/DebugLib.h>
16 #include <Library/XenHypercallLib.h>
20 XenHypercallLibConstruct (
24 XenHypercallLibInit ();
26 // We don't fail library construction, since that has catastrophic
27 // consequences for client modules (whereas those modules may easily be
28 // running on a non-Xen platform). Instead, XenHypercallIsAvailable()
31 return RETURN_SUCCESS
;
36 XenHypercallHvmGetParam (
40 xen_hvm_param_t Parameter
;
43 Parameter
.domid
= DOMID_SELF
;
44 Parameter
.index
= Index
;
45 Error
= XenHypercall2 (__HYPERVISOR_hvm_op
,
46 HVMOP_get_param
, (INTN
) &Parameter
);
49 "XenHypercall: Error %Ld trying to get HVM parameter %d\n",
50 (INT64
)Error
, Index
));
53 return Parameter
.value
;
58 XenHypercallMemoryOp (
60 IN OUT VOID
*Arguments
63 return XenHypercall2 (__HYPERVISOR_memory_op
,
64 Operation
, (INTN
) Arguments
);
69 XenHypercallEventChannelOp (
71 IN OUT VOID
*Arguments
74 return XenHypercall2 (__HYPERVISOR_event_channel_op
,
75 Operation
, (INTN
) Arguments
);