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
|
---|