Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Samer El-Haj-Mahmoud <elhaj@hpe.com> Reviewed-by: M1cha <sigmaepsilon92@gmail.com>
		
			
				
	
	
		
			107 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @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
 |