Reviewed-by: Samer El-Haj-Mahmoud <[email protected]>

-----Original Message-----
From: edk2-devel [mailto:[email protected]] On Behalf Of Hao Wu
Sent: Thursday, February 4, 2016 1:31 AM
To: [email protected]; [email protected]
Cc: Hao Wu <[email protected]>
Subject: [edk2] [PATCH 1/2] MdePkg: Add EFI RAM Disk Protocol definitions

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <[email protected]>
---
 MdePkg/Include/Protocol/RamDisk.h | 106 ++++++++++++++++++++++++++++++++++++++
 MdePkg/MdePkg.dec                 |   3 ++
 2 files changed, 109 insertions(+)
 create mode 100644 MdePkg/Include/Protocol/RamDisk.h

diff --git a/MdePkg/Include/Protocol/RamDisk.h 
b/MdePkg/Include/Protocol/RamDisk.h
new file mode 100644
index 0000000..5df8213
--- /dev/null
+++ b/MdePkg/Include/Protocol/RamDisk.h
@@ -0,0 +1,106 @@
+/** @file
+  This file defines the EFI RAM Disk Protocol.
+
+  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>  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.
+
+  @par Revision Reference:
+  This Protocol is introduced in UEFI Specification 2.6
+
+**/
+
+#ifndef __RAM_DISK_PROTOCOL_H__
+#define __RAM_DISK_PROTOCOL_H__
+
+//
+// EFI RAM Disk Protocol GUID value
+//
+#define EFI_RAM_DISK_PROTOCOL_GUID \
+  { 0xab38a0df, 0x6873, 0x44a9, { 0x87, 0xe6, 0xd4, 0xeb, 0x56, 0x14, 
+0x84, 0x49 }};
+
+//
+// Forward reference for pure ANSI compatability // typedef struct 
+_EFI_RAM_DISK_PROTOCOL  EFI_RAM_DISK_PROTOCOL;
+
+/**
+  Register a RAM disk with specified address, size and type.
+
+  @param[in]  RamDiskBase    The base address of registered RAM disk.
+  @param[in]  RamDiskSize    The size of registered RAM disk.
+  @param[in]  RamDiskType    The type of registered RAM disk. The GUID can be
+                             any of the values defined in section 9.3.6.9, or a
+                             vendor defined GUID.
+  @param[in]  ParentDevicePath
+                             Pointer to the parent device path. If there is no
+                             parent device path then ParentDevicePath is NULL.
+  @param[out] DevicePath     On return, points to a pointer to the device path
+                             of the RAM disk device.
+                             If ParentDevicePath is not NULL, the returned
+                             DevicePath is created by appending a RAM disk node
+                             to the parent device path. If ParentDevicePath is
+                             NULL, the returned DevicePath is a RAM disk device
+                             path without appending. This function is
+                             responsible for allocating the buffer DevicePath
+                             with the boot service AllocatePool().
+
+  @retval EFI_SUCCESS             The RAM disk is registered successfully.
+  @retval EFI_INVALID_PARAMETER   DevicePath or RamDiskType is NULL.
+                                  RamDiskSize is 0.
+  @retval EFI_ALREADY_STARTED     A Device Path Protocol instance to be created
+                                  is already present in the handle database.
+  @retval EFI_OUT_OF_RESOURCES    The RAM disk register operation fails due to
+                                  resource limitation.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_RAM_DISK_REGISTER_RAMDISK) (
+  IN UINT64                       RamDiskBase,
+  IN UINT64                       RamDiskSize,
+  IN EFI_GUID                     *RamDiskType,
+  IN EFI_DEVICE_PATH              *ParentDevicePath     OPTIONAL,
+  OUT EFI_DEVICE_PATH_PROTOCOL    **DevicePath
+  );
+
+/**
+  Unregister a RAM disk specified by DevicePath.
+
+  @param[in] DevicePath      A pointer to the device path that describes a RAM
+                             Disk device.
+
+  @retval EFI_SUCCESS             The RAM disk is unregistered successfully.
+  @retval EFI_INVALID_PARAMETER   DevicePath is NULL.
+  @retval EFI_UNSUPPORTED         The device specified by DevicePath is not a
+                                  valid ramdisk device path and not supported
+                                  by the driver.
+  @retval EFI_NOT_FOUND           The RAM disk pointed by DevicePath doesn't
+                                  exist.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_RAM_DISK_UNREGISTER_RAMDISK) (
+  IN  EFI_DEVICE_PATH_PROTOCOL    *DevicePath
+  );
+
+///
+/// RAM Disk Protocol structure.
+///
+struct _EFI_RAM_DISK_PROTOCOL {
+  EFI_RAM_DISK_REGISTER_RAMDISK        Register;
+  EFI_RAM_DISK_UNREGISTER_RAMDISK      Unregister;
+};
+
+///
+/// RAM Disk Protocol GUID variable.
+///
+extern EFI_GUID gEfiRamDiskProtocolGuid;
+
+#endif
diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec index 7ab0cbb..ebd5806 100644
--- a/MdePkg/MdePkg.dec
+++ b/MdePkg/MdePkg.dec
@@ -1587,6 +1587,9 @@
   ## Include/Protocol/Rest.h
   gEfiRestProtocolGuid                 =  { 0x0db48a36, 0x4e54, 0xea9c, {0x9b, 
0x09, 0x1e, 0xa5, 0xbe, 0x3a, 0x66, 0x0b }}
 
+  ## Include/Protocol/RamDisk.h
+  gEfiRamDiskProtocolGuid              = { 0xab38a0df, 0x6873, 0x44a9, { 0x87, 
0xe6, 0xd4, 0xeb, 0x56, 0x14, 0x84, 0x49 }}
+
 #
 # [Error.gEfiMdePkgTokenSpaceGuid]
 #   0x80000001 | Invalid value provided.
--
1.9.5.msysgit.0

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to