\r
#include <Uefi.h>\r
\r
-//\r
-// Xen interface version used\r
-//\r
-#define __XEN_INTERFACE_VERSION__ 0x00040400\r
-\r
//\r
// Libraries\r
//\r
//\r
// Consumed Protocols\r
//\r
-#include <Protocol/PciIo.h>\r
+#include <Protocol/XenIo.h>\r
\r
\r
//\r
//\r
#include <IndustryStandard/Xen/xen.h>\r
\r
-#define PCI_VENDOR_ID_XEN 0x5853\r
-#define PCI_DEVICE_ID_XEN_PLATFORM 0x0001\r
-\r
-\r
+typedef struct _XENBUS_DEVICE_PATH XENBUS_DEVICE_PATH;\r
typedef struct _XENBUS_DEVICE XENBUS_DEVICE;\r
\r
// Have the state of the driver.\r
UINT32 Signature;\r
EFI_DRIVER_BINDING_PROTOCOL *This;\r
EFI_HANDLE ControllerHandle;\r
- EFI_PCI_IO_PROTOCOL *PciIo;\r
+ XENIO_PROTOCOL *XenIo;\r
EFI_EVENT ExitBootEvent;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+ LIST_ENTRY ChildList;\r
\r
- VOID *Hyperpage;\r
shared_info_t *SharedInfo;\r
};\r
\r
+// There is one of this struct allocated for every child.\r
+#define XENBUS_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('X', 'B', 'p', 'd')\r
+typedef struct {\r
+ UINTN Signature;\r
+ LIST_ENTRY Link;\r
+ EFI_HANDLE Handle;\r
+ XENBUS_PROTOCOL XenBusIo;\r
+ XENBUS_DEVICE *Dev;\r
+ XENBUS_DEVICE_PATH *DevicePath;\r
+} XENBUS_PRIVATE_DATA;\r
+\r
+#define XENBUS_PRIVATE_DATA_FROM_THIS(a) \\r
+ CR (a, XENBUS_PRIVATE_DATA, XenBusIo, XENBUS_PRIVATE_DATA_SIGNATURE)\r
+#define XENBUS_PRIVATE_DATA_FROM_LINK(a) \\r
+ CR (a, XENBUS_PRIVATE_DATA, Link, XENBUS_PRIVATE_DATA_SIGNATURE)\r
+\r
/*\r
* Helpers\r
*/\r
EFIAPI\r
TestAndClearBit (\r
IN INT32 Bit,\r
- IN volatile VOID *Address\r
+ IN VOID *Address\r
+ );\r
+\r
+CHAR8*\r
+AsciiStrDup (\r
+ IN CONST CHAR8* Str\r
);\r
\r
#endif\r