]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/Protocol/RamDisk.h
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Include / Protocol / RamDisk.h
1 /** @file
2 This file defines the EFI RAM Disk Protocol.
3
4 Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7 @par Revision Reference:
8 This Protocol is introduced in UEFI Specification 2.6
9
10 **/
11
12 #ifndef __RAM_DISK_PROTOCOL_H__
13 #define __RAM_DISK_PROTOCOL_H__
14
15 //
16 // EFI RAM Disk Protocol GUID value
17 //
18 #define EFI_RAM_DISK_PROTOCOL_GUID \
19 { 0xab38a0df, 0x6873, 0x44a9, { 0x87, 0xe6, 0xd4, 0xeb, 0x56, 0x14, 0x84, 0x49 }};
20
21 //
22 // Forward reference for pure ANSI compatability
23 //
24 typedef struct _EFI_RAM_DISK_PROTOCOL EFI_RAM_DISK_PROTOCOL;
25
26 /**
27 Register a RAM disk with specified address, size and type.
28
29 @param[in] RamDiskBase The base address of registered RAM disk.
30 @param[in] RamDiskSize The size of registered RAM disk.
31 @param[in] RamDiskType The type of registered RAM disk. The GUID can be
32 any of the values defined in section 9.3.6.9, or a
33 vendor defined GUID.
34 @param[in] ParentDevicePath
35 Pointer to the parent device path. If there is no
36 parent device path then ParentDevicePath is NULL.
37 @param[out] DevicePath On return, points to a pointer to the device path
38 of the RAM disk device.
39 If ParentDevicePath is not NULL, the returned
40 DevicePath is created by appending a RAM disk node
41 to the parent device path. If ParentDevicePath is
42 NULL, the returned DevicePath is a RAM disk device
43 path without appending. This function is
44 responsible for allocating the buffer DevicePath
45 with the boot service AllocatePool().
46
47 @retval EFI_SUCCESS The RAM disk is registered successfully.
48 @retval EFI_INVALID_PARAMETER DevicePath or RamDiskType is NULL.
49 RamDiskSize is 0.
50 @retval EFI_ALREADY_STARTED A Device Path Protocol instance to be created
51 is already present in the handle database.
52 @retval EFI_OUT_OF_RESOURCES The RAM disk register operation fails due to
53 resource limitation.
54
55 **/
56 typedef
57 EFI_STATUS
58 (EFIAPI *EFI_RAM_DISK_REGISTER_RAMDISK) (
59 IN UINT64 RamDiskBase,
60 IN UINT64 RamDiskSize,
61 IN EFI_GUID *RamDiskType,
62 IN EFI_DEVICE_PATH *ParentDevicePath OPTIONAL,
63 OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath
64 );
65
66 /**
67 Unregister a RAM disk specified by DevicePath.
68
69 @param[in] DevicePath A pointer to the device path that describes a RAM
70 Disk device.
71
72 @retval EFI_SUCCESS The RAM disk is unregistered successfully.
73 @retval EFI_INVALID_PARAMETER DevicePath is NULL.
74 @retval EFI_UNSUPPORTED The device specified by DevicePath is not a
75 valid ramdisk device path and not supported
76 by the driver.
77 @retval EFI_NOT_FOUND The RAM disk pointed by DevicePath doesn't
78 exist.
79
80 **/
81 typedef
82 EFI_STATUS
83 (EFIAPI *EFI_RAM_DISK_UNREGISTER_RAMDISK) (
84 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
85 );
86
87 ///
88 /// RAM Disk Protocol structure.
89 ///
90 struct _EFI_RAM_DISK_PROTOCOL {
91 EFI_RAM_DISK_REGISTER_RAMDISK Register;
92 EFI_RAM_DISK_UNREGISTER_RAMDISK Unregister;
93 };
94
95 ///
96 /// RAM Disk Protocol GUID variable.
97 ///
98 extern EFI_GUID gEfiRamDiskProtocolGuid;
99
100 #endif