X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=OvmfPkg%2FXenBusDxe%2FXenBusDxe.h;h=953e4b72e85e67992380e6a7a698b1ff89c22259;hb=9062ab47870ea728307e32cdd939586a4ec67fc6;hp=388d2996953ca3e278486dcf6bbdadc1c9d97e39;hpb=956622c4c9b25becf57ccc1771ffbc92b78ed005;p=mirror_edk2.git diff --git a/OvmfPkg/XenBusDxe/XenBusDxe.h b/OvmfPkg/XenBusDxe/XenBusDxe.h index 388d299695..953e4b72e8 100644 --- a/OvmfPkg/XenBusDxe/XenBusDxe.h +++ b/OvmfPkg/XenBusDxe/XenBusDxe.h @@ -39,12 +39,13 @@ // // Consumed Protocols // -#include +#include // // Produced Protocols // +#include // @@ -72,10 +73,7 @@ extern EFI_COMPONENT_NAME_PROTOCOL gXenBusDxeComponentName; // #include -#define PCI_VENDOR_ID_XEN 0x5853 -#define PCI_DEVICE_ID_XEN_PLATFORM 0x0001 - - +typedef struct _XENBUS_DEVICE_PATH XENBUS_DEVICE_PATH; typedef struct _XENBUS_DEVICE XENBUS_DEVICE; // Have the state of the driver. @@ -84,11 +82,52 @@ struct _XENBUS_DEVICE { UINT32 Signature; EFI_DRIVER_BINDING_PROTOCOL *This; EFI_HANDLE ControllerHandle; - EFI_PCI_IO_PROTOCOL *PciIo; + XENIO_PROTOCOL *XenIo; EFI_EVENT ExitBootEvent; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + LIST_ENTRY ChildList; - VOID *Hyperpage; shared_info_t *SharedInfo; }; +// There is one of this struct allocated for every child. +#define XENBUS_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('X', 'B', 'p', 'd') +typedef struct { + UINTN Signature; + LIST_ENTRY Link; + EFI_HANDLE Handle; + XENBUS_PROTOCOL XenBusIo; + XENBUS_DEVICE *Dev; + XENBUS_DEVICE_PATH *DevicePath; +} XENBUS_PRIVATE_DATA; + +#define XENBUS_PRIVATE_DATA_FROM_THIS(a) \ + CR (a, XENBUS_PRIVATE_DATA, XenBusIo, XENBUS_PRIVATE_DATA_SIGNATURE) +#define XENBUS_PRIVATE_DATA_FROM_LINK(a) \ + CR (a, XENBUS_PRIVATE_DATA, Link, XENBUS_PRIVATE_DATA_SIGNATURE) + +/* + * Helpers + */ + +/** + Atomically test and clear a bit. + + @param Bit Bit index to test in *Address + @param Address The Address to the buffer that contain the bit to test. + + @return Value of the Bit before it was cleared. +**/ +INT32 +EFIAPI +TestAndClearBit ( + IN INT32 Bit, + IN VOID *Address + ); + +CHAR8* +AsciiStrDup ( + IN CONST CHAR8* Str + ); + #endif