OvmfPkg/XenPvBlkDxe: Xen PV Block device, initial skeleton

A ParaVirtualize block driver.

Change in V4:
- Replace the license by the commonly used file header text.
- Add brief description for the driver.

Change in V3:
- enable compilation for Ia32 and Ia32X64
- fix version (driver binding)

Change in V2:
- Add minimal support for controller name
- Remove stuff about BlockIo2
- Little cleanup
- Licenses and file headers
- Rename XenbusIo into XenBusIo

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16272 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Anthony PERARD
2014-10-29 06:51:42 +00:00
committed by jljusten
parent e86895d9e4
commit de671da8e4
12 changed files with 876 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
/** @file
Main header for XenPvBlkDxe
Copyright (C) 2014, Citrix Ltd.
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef __EFI_XEN_PV_BLK_DXE_H__
#define __EFI_XEN_PV_BLK_DXE_H__
#include <Uefi.h>
//
// Xen interface version used
//
#define __XEN_INTERFACE_VERSION__ 0x00040400
#define xen_mb() MemoryFence()
#define xen_rmb() MemoryFence()
#define xen_wmb() MemoryFence()
//
// Libraries
//
#include <Library/UefiBootServicesTableLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/BaseLib.h>
#include <Library/UefiLib.h>
#include <Library/DevicePathLib.h>
#include <Library/DebugLib.h>
//
// UEFI Driver Model Protocols
//
#include <Protocol/DriverBinding.h>
#include <Protocol/ComponentName2.h>
#include <Protocol/ComponentName.h>
//
// Consumed Protocols
//
#include <Protocol/XenBus.h>
//
// Produced Protocols
//
#include <Protocol/BlockIo.h>
//
// Driver Version
//
#define XEN_PV_BLK_DXE_VERSION 0x00000010
//
// Protocol instances
//
extern EFI_DRIVER_BINDING_PROTOCOL gXenPvBlkDxeDriverBinding;
extern EFI_COMPONENT_NAME2_PROTOCOL gXenPvBlkDxeComponentName2;
extern EFI_COMPONENT_NAME_PROTOCOL gXenPvBlkDxeComponentName;
//
// Include files with function prototypes
//
#include "DriverBinding.h"
#include "ComponentName.h"
#endif