From 5d2e8ef0d3b13d5f73c9b4dc0bbbf59f758d5c06 Mon Sep 17 00:00:00 2001 From: Hao Wu Date: Wed, 3 Feb 2016 12:58:01 +0800 Subject: [PATCH] MdePkg: Add EFI RAM Disk Protocol definitions Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu Reviewed-by: Ruiyu Ni Reviewed-by: Samer El-Haj-Mahmoud Reviewed-by: M1cha --- 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 0000000000..5df82131da --- /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.
+ 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 c49f1ceb03..796dc054c2 100644 --- a/MdePkg/MdePkg.dec +++ b/MdePkg/MdePkg.dec @@ -1604,6 +1604,9 @@ ## Include/Protocol/WiFi2.h gEfiWiFi2ProtocolGuid = { 0x1b0fb9bf, 0x699d, 0x4fdd, {0xa7, 0xc3, 0x25, 0x46, 0x68, 0x1b, 0xf6, 0x3b }} + ## Include/Protocol/RamDisk.h + gEfiRamDiskProtocolGuid = { 0xab38a0df, 0x6873, 0x44a9, { 0x87, 0xe6, 0xd4, 0xeb, 0x56, 0x14, 0x84, 0x49 }} + # # [Error.gEfiMdePkgTokenSpaceGuid] # 0x80000001 | Invalid value provided. -- 2.39.2