MdePkg and MdeModulePkg Pcd: Add the new EFI_GET_PCD_INFO_PROTOCOL and EFI_GET_PCD_INFO_PPI support for PI 1.2.1 compliance.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14866 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -1516,4 +1516,89 @@ LibPatchPcdSetPtr (
|
||||
IN CONST VOID *Buffer
|
||||
);
|
||||
|
||||
typedef enum {
|
||||
PCD_TYPE_8,
|
||||
PCD_TYPE_16,
|
||||
PCD_TYPE_32,
|
||||
PCD_TYPE_64,
|
||||
PCD_TYPE_BOOL,
|
||||
PCD_TYPE_PTR
|
||||
} PCD_TYPE;
|
||||
|
||||
typedef struct {
|
||||
///
|
||||
/// The returned information associated with the requested TokenNumber. If
|
||||
/// TokenNumber is 0, then PcdType is set to PCD_TYPE_8.
|
||||
///
|
||||
PCD_TYPE PcdType;
|
||||
///
|
||||
/// The size of the data in bytes associated with the TokenNumber specified. If
|
||||
/// TokenNumber is 0, then PcdSize is set 0.
|
||||
///
|
||||
UINTN PcdSize;
|
||||
///
|
||||
/// The null-terminated ASCII string associated with a given token. If the
|
||||
/// TokenNumber specified was 0, then this field corresponds to the null-terminated
|
||||
/// ASCII string associated with the token's namespace Guid. If NULL, there is no
|
||||
/// name associated with this request.
|
||||
///
|
||||
CHAR8 *PcdName;
|
||||
} PCD_INFO;
|
||||
|
||||
|
||||
/**
|
||||
Retrieve additional information associated with a PCD token.
|
||||
|
||||
This includes information such as the type of value the TokenNumber is associated with as well as possible
|
||||
human readable name that is associated with the token.
|
||||
|
||||
If TokenNumber is not in the default token space specified, then ASSERT().
|
||||
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
|
||||
The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
LibPcdGetInfo (
|
||||
IN UINTN TokenNumber,
|
||||
OUT PCD_INFO *PcdInfo
|
||||
);
|
||||
|
||||
/**
|
||||
Retrieve additional information associated with a PCD token.
|
||||
|
||||
This includes information such as the type of value the TokenNumber is associated with as well as possible
|
||||
human readable name that is associated with the token.
|
||||
|
||||
If TokenNumber is not in the token space specified by Guid, then ASSERT().
|
||||
|
||||
@param[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
|
||||
The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
LibPcdGetInfoEx (
|
||||
IN CONST GUID *Guid,
|
||||
IN UINTN TokenNumber,
|
||||
OUT PCD_INFO *PcdInfo
|
||||
);
|
||||
|
||||
/**
|
||||
Retrieve the currently set SKU Id.
|
||||
|
||||
If the sku id got >= PCD_MAX_SKU_ID, then ASSERT().
|
||||
|
||||
@return The currently set SKU Id. If the platform has not set at a SKU Id, then the
|
||||
default SKU Id value of 0 is returned. If the platform has set a SKU Id, then the currently set SKU
|
||||
Id is returned.
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
LibPcdGetSku (
|
||||
VOID
|
||||
);
|
||||
|
||||
#endif
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
Include file matches things in PI for multiple module types.
|
||||
|
||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2013, 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 that accompanies this distribution.
|
||||
The full text of the license may be found at
|
||||
@@ -133,4 +133,33 @@ typedef struct {
|
||||
UINT64 RegionState;
|
||||
} EFI_SMRAM_DESCRIPTOR;
|
||||
|
||||
typedef enum {
|
||||
EFI_PCD_TYPE_8,
|
||||
EFI_PCD_TYPE_16,
|
||||
EFI_PCD_TYPE_32,
|
||||
EFI_PCD_TYPE_64,
|
||||
EFI_PCD_TYPE_BOOL,
|
||||
EFI_PCD_TYPE_PTR
|
||||
} EFI_PCD_TYPE;
|
||||
|
||||
typedef struct {
|
||||
///
|
||||
/// The returned information associated with the requested TokenNumber. If
|
||||
/// TokenNumber is 0, then PcdType is set to EFI_PCD_TYPE_8.
|
||||
///
|
||||
EFI_PCD_TYPE PcdType;
|
||||
///
|
||||
/// The size of the data in bytes associated with the TokenNumber specified. If
|
||||
/// TokenNumber is 0, then PcdSize is set 0.
|
||||
///
|
||||
UINTN PcdSize;
|
||||
///
|
||||
/// The null-terminated ASCII string associated with a given token. If the
|
||||
/// TokenNumber specified was 0, then this field corresponds to the null-terminated
|
||||
/// ASCII string associated with the token's namespace Guid. If NULL, there is no
|
||||
/// name associated with this request.
|
||||
///
|
||||
CHAR8 *PcdName;
|
||||
} EFI_PCD_INFO;
|
||||
|
||||
#endif
|
||||
|
105
MdePkg/Include/Ppi/PcdInfo.h
Normal file
105
MdePkg/Include/Ppi/PcdInfo.h
Normal file
@@ -0,0 +1,105 @@
|
||||
/** @file
|
||||
Native Platform Configuration Database (PCD) INFO PPI
|
||||
|
||||
The PPI that provides additional information about items that reside in the PCD database.
|
||||
|
||||
Different with the EFI_GET_PCD_INFO_PPI defined in PI 1.2.1 specification,
|
||||
the native PCD INFO PPI provide interfaces for dynamic and dynamic-ex type PCD.
|
||||
The interfaces for dynamic type PCD do not require the token space guid as parameter,
|
||||
but interfaces for dynamic-ex type PCD require token space guid as parameter.
|
||||
|
||||
Copyright (c) 2013, 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.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __PCD_INFO_PPI_H__
|
||||
#define __PCD_INFO_PPI_H__
|
||||
|
||||
extern EFI_GUID gGetPcdInfoPpiGuid;
|
||||
|
||||
#define GET_PCD_INFO_PPI_GUID \
|
||||
{ 0x4d8b155b, 0xc059, 0x4c8f, { 0x89, 0x26, 0x6, 0xfd, 0x43, 0x31, 0xdb, 0x8a } }
|
||||
|
||||
///
|
||||
/// The forward declaration for GET_PCD_INFO_PPI.
|
||||
///
|
||||
typedef struct _GET_PCD_INFO_PPI GET_PCD_INFO_PPI;
|
||||
|
||||
/**
|
||||
Retrieve additional information associated with a PCD token in the default token space.
|
||||
|
||||
This includes information such as the type of value the TokenNumber is associated with as well as possible
|
||||
human readable name that is associated with the token.
|
||||
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
|
||||
|
||||
@retval EFI_SUCCESS The PCD information was returned successfully
|
||||
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *GET_PCD_INFO_PPI_GET_INFO) (
|
||||
IN UINTN TokenNumber,
|
||||
OUT EFI_PCD_INFO *PcdInfo
|
||||
);
|
||||
|
||||
/**
|
||||
Retrieve additional information associated with a PCD token.
|
||||
|
||||
This includes information such as the type of value the TokenNumber is associated with as well as possible
|
||||
human readable name that is associated with the token.
|
||||
|
||||
@param[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
|
||||
|
||||
@retval EFI_SUCCESS The PCD information was returned successfully
|
||||
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *GET_PCD_INFO_PPI_GET_INFO_EX) (
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN UINTN TokenNumber,
|
||||
OUT EFI_PCD_INFO *PcdInfo
|
||||
);
|
||||
|
||||
/**
|
||||
Retrieve the currently set SKU Id.
|
||||
|
||||
@return The currently set SKU Id. If the platform has not set at a SKU Id, then the
|
||||
default SKU Id value of 0 is returned. If the platform has set a SKU Id, then the currently set SKU
|
||||
Id is returned.
|
||||
**/
|
||||
typedef
|
||||
UINTN
|
||||
(EFIAPI *GET_PCD_INFO_PPI_GET_SKU) (
|
||||
VOID
|
||||
);
|
||||
|
||||
///
|
||||
/// This is the PCD service to use when querying for some additional data that can be contained in the
|
||||
/// PCD database.
|
||||
///
|
||||
struct _GET_PCD_INFO_PPI {
|
||||
///
|
||||
/// Retrieve additional information associated with a PCD.
|
||||
///
|
||||
GET_PCD_INFO_PPI_GET_INFO GetInfo;
|
||||
GET_PCD_INFO_PPI_GET_INFO_EX GetInfoEx;
|
||||
///
|
||||
/// Retrieve the currently set SKU Id.
|
||||
///
|
||||
GET_PCD_INFO_PPI_GET_SKU GetSku;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
82
MdePkg/Include/Ppi/PiPcdInfo.h
Normal file
82
MdePkg/Include/Ppi/PiPcdInfo.h
Normal file
@@ -0,0 +1,82 @@
|
||||
/** @file
|
||||
Platform Configuration Database (PCD) Info Ppi defined in PI 1.2.1 Vol3.
|
||||
|
||||
The PPI that provides additional information about items that reside in the PCD database.
|
||||
|
||||
Copyright (c) 2013, 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:
|
||||
PI Version 1.2.1 Vol 3.
|
||||
**/
|
||||
|
||||
#ifndef __PI_PCD_INFO_PPI_H__
|
||||
#define __PI_PCD_INFO_PPI_H__
|
||||
|
||||
extern EFI_GUID gEfiGetPcdInfoPpiGuid;
|
||||
|
||||
#define EFI_GET_PCD_INFO_PPI_GUID \
|
||||
{ 0xa60c6b59, 0xe459, 0x425d, { 0x9c, 0x69, 0xb, 0xcc, 0x9c, 0xb2, 0x7d, 0x81 } }
|
||||
|
||||
///
|
||||
/// The forward declaration for EFI_GET_PCD_INFO_PPI.
|
||||
///
|
||||
typedef struct _EFI_GET_PCD_INFO_PPI EFI_GET_PCD_INFO_PPI;
|
||||
|
||||
/**
|
||||
Retrieve additional information associated with a PCD token.
|
||||
|
||||
This includes information such as the type of value the TokenNumber is associated with as well as possible
|
||||
human readable name that is associated with the token.
|
||||
|
||||
@param[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
|
||||
|
||||
@retval EFI_SUCCESS The PCD information was returned successfully
|
||||
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_GET_PCD_INFO_PPI_GET_INFO) (
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN UINTN TokenNumber,
|
||||
OUT EFI_PCD_INFO *PcdInfo
|
||||
);
|
||||
|
||||
/**
|
||||
Retrieve the currently set SKU Id.
|
||||
|
||||
@return The currently set SKU Id. If the platform has not set at a SKU Id, then the
|
||||
default SKU Id value of 0 is returned. If the platform has set a SKU Id, then the currently set SKU
|
||||
Id is returned.
|
||||
**/
|
||||
typedef
|
||||
UINTN
|
||||
(EFIAPI *EFI_GET_PCD_INFO_PPI_GET_SKU) (
|
||||
VOID
|
||||
);
|
||||
|
||||
///
|
||||
/// This is the PCD service to use when querying for some additional data that can be contained in the
|
||||
/// PCD database.
|
||||
///
|
||||
struct _EFI_GET_PCD_INFO_PPI {
|
||||
///
|
||||
/// Retrieve additional information associated with a PCD.
|
||||
///
|
||||
EFI_GET_PCD_INFO_PPI_GET_INFO GetInfo;
|
||||
///
|
||||
/// Retrieve the currently set SKU Id.
|
||||
///
|
||||
EFI_GET_PCD_INFO_PPI_GET_SKU GetSku;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
105
MdePkg/Include/Protocol/PcdInfo.h
Normal file
105
MdePkg/Include/Protocol/PcdInfo.h
Normal file
@@ -0,0 +1,105 @@
|
||||
/** @file
|
||||
Native Platform Configuration Database (PCD) INFO PROTOCOL.
|
||||
|
||||
The protocol that provides additional information about items that reside in the PCD database.
|
||||
|
||||
Different with the EFI_GET_PCD_INFO_PROTOCOL defined in PI 1.2.1 specification,
|
||||
the native PCD INFO PROTOCOL provide interfaces for dynamic and dynamic-ex type PCD.
|
||||
The interfaces for dynamic type PCD do not require the token space guid as parameter,
|
||||
but interfaces for dynamic-ex type PCD require token space guid as parameter.
|
||||
|
||||
Copyright (c) 2013, 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.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __PCD_INFO_H__
|
||||
#define __PCD_INFO_H__
|
||||
|
||||
extern EFI_GUID gGetPcdInfoProtocolGuid;
|
||||
|
||||
#define GET_PCD_INFO_PROTOCOL_GUID \
|
||||
{ 0x5be40f57, 0xfa68, 0x4610, { 0xbb, 0xbf, 0xe9, 0xc5, 0xfc, 0xda, 0xd3, 0x65 } }
|
||||
|
||||
///
|
||||
/// The forward declaration for GET_PCD_INFO_PROTOCOL.
|
||||
///
|
||||
typedef struct _GET_PCD_INFO_PROTOCOL GET_PCD_INFO_PROTOCOL;
|
||||
|
||||
/**
|
||||
Retrieve additional information associated with a PCD token.
|
||||
|
||||
This includes information such as the type of value the TokenNumber is associated with as well as possible
|
||||
human readable name that is associated with the token.
|
||||
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
|
||||
|
||||
@retval EFI_SUCCESS The PCD information was returned successfully
|
||||
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *GET_PCD_INFO_PROTOCOL_GET_INFO) (
|
||||
IN UINTN TokenNumber,
|
||||
OUT EFI_PCD_INFO *PcdInfo
|
||||
);
|
||||
|
||||
/**
|
||||
Retrieve additional information associated with a PCD token.
|
||||
|
||||
This includes information such as the type of value the TokenNumber is associated with as well as possible
|
||||
human readable name that is associated with the token.
|
||||
|
||||
@param[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
|
||||
|
||||
@retval EFI_SUCCESS The PCD information was returned successfully
|
||||
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *GET_PCD_INFO_PROTOCOL_GET_INFO_EX) (
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN UINTN TokenNumber,
|
||||
OUT EFI_PCD_INFO *PcdInfo
|
||||
);
|
||||
|
||||
/**
|
||||
Retrieve the currently set SKU Id.
|
||||
|
||||
@return The currently set SKU Id. If the platform has not set at a SKU Id, then the
|
||||
default SKU Id value of 0 is returned. If the platform has set a SKU Id, then the currently set SKU
|
||||
Id is returned.
|
||||
**/
|
||||
typedef
|
||||
UINTN
|
||||
(EFIAPI *GET_PCD_INFO_PROTOCOL_GET_SKU) (
|
||||
VOID
|
||||
);
|
||||
|
||||
///
|
||||
/// This is the PCD service to use when querying for some additional data that can be contained in the
|
||||
/// PCD database.
|
||||
///
|
||||
struct _GET_PCD_INFO_PROTOCOL {
|
||||
///
|
||||
/// Retrieve additional information associated with a PCD.
|
||||
///
|
||||
GET_PCD_INFO_PROTOCOL_GET_INFO GetInfo;
|
||||
GET_PCD_INFO_PROTOCOL_GET_INFO_EX GetInfoEx;
|
||||
///
|
||||
/// Retrieve the currently set SKU Id.
|
||||
///
|
||||
GET_PCD_INFO_PROTOCOL_GET_SKU GetSku;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
83
MdePkg/Include/Protocol/PiPcdInfo.h
Normal file
83
MdePkg/Include/Protocol/PiPcdInfo.h
Normal file
@@ -0,0 +1,83 @@
|
||||
/** @file
|
||||
Platform Configuration Database (PCD) Info Protocol defined in PI 1.2.1 Vol3.
|
||||
|
||||
The protocol that provides additional information about items that reside in the PCD database.
|
||||
|
||||
Copyright (c) 2013, 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:
|
||||
PI Version 1.2.1 Vol 3.
|
||||
**/
|
||||
|
||||
#ifndef __PI_PCD_INFO_H__
|
||||
#define __PI_PCD_INFO_H__
|
||||
|
||||
extern EFI_GUID gEfiGetPcdInfoProtocolGuid;
|
||||
|
||||
#define EFI_GET_PCD_INFO_PROTOCOL_GUID \
|
||||
{ 0xfd0f4478, 0xefd, 0x461d, { 0xba, 0x2d, 0xe5, 0x8c, 0x45, 0xfd, 0x5f, 0x5e } }
|
||||
|
||||
///
|
||||
/// The forward declaration for EFI_GET_PCD_INFO_PROTOCOL.
|
||||
///
|
||||
typedef struct _EFI_GET_PCD_INFO_PROTOCOL EFI_GET_PCD_INFO_PROTOCOL;
|
||||
|
||||
/**
|
||||
Retrieve additional information associated with a PCD token.
|
||||
|
||||
This includes information such as the type of value the TokenNumber is associated with as well as possible
|
||||
human readable name that is associated with the token.
|
||||
|
||||
@param[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
|
||||
|
||||
@retval EFI_SUCCESS The PCD information was returned successfully
|
||||
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_GET_PCD_INFO_PROTOCOL_GET_INFO) (
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN UINTN TokenNumber,
|
||||
OUT EFI_PCD_INFO *PcdInfo
|
||||
);
|
||||
|
||||
/**
|
||||
Retrieve the currently set SKU Id.
|
||||
|
||||
@return The currently set SKU Id. If the platform has not set at a SKU Id, then the
|
||||
default SKU Id value of 0 is returned. If the platform has set a SKU Id, then the currently set SKU
|
||||
Id is returned.
|
||||
**/
|
||||
typedef
|
||||
UINTN
|
||||
(EFIAPI *EFI_GET_PCD_INFO_PROTOCOL_GET_SKU) (
|
||||
VOID
|
||||
);
|
||||
|
||||
///
|
||||
/// Callers to this protocol must be at a TPL_APPLICATION task priority level.
|
||||
/// This is the PCD service to use when querying for some additional data that can be contained in the
|
||||
/// PCD database.
|
||||
///
|
||||
struct _EFI_GET_PCD_INFO_PROTOCOL {
|
||||
///
|
||||
/// Retrieve additional information associated with a PCD.
|
||||
///
|
||||
EFI_GET_PCD_INFO_PROTOCOL_GET_INFO GetInfo;
|
||||
///
|
||||
/// Retrieve the currently set SKU Id.
|
||||
///
|
||||
EFI_GET_PCD_INFO_PROTOCOL_GET_SKU GetSku;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@@ -919,3 +919,69 @@ LibPatchPcdSetPtr (
|
||||
return (VOID *) Buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieve additional information associated with a PCD token.
|
||||
|
||||
This includes information such as the type of value the TokenNumber is associated with as well as possible
|
||||
human readable name that is associated with the token.
|
||||
|
||||
If TokenNumber is not in the default token space specified, then ASSERT().
|
||||
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
|
||||
The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
LibPcdGetInfo (
|
||||
IN UINTN TokenNumber,
|
||||
OUT PCD_INFO *PcdInfo
|
||||
)
|
||||
{
|
||||
ASSERT (FALSE);
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieve additional information associated with a PCD token.
|
||||
|
||||
This includes information such as the type of value the TokenNumber is associated with as well as possible
|
||||
human readable name that is associated with the token.
|
||||
|
||||
If TokenNumber is not in the token space specified by Guid, then ASSERT().
|
||||
|
||||
@param[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
|
||||
The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
LibPcdGetInfoEx (
|
||||
IN CONST GUID *Guid,
|
||||
IN UINTN TokenNumber,
|
||||
OUT PCD_INFO *PcdInfo
|
||||
)
|
||||
{
|
||||
ASSERT (FALSE);
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieve the currently set SKU Id.
|
||||
|
||||
If the sku id got >= PCD_MAX_SKU_ID, then ASSERT().
|
||||
|
||||
@return The currently set SKU Id. If the platform has not set at a SKU Id, then the
|
||||
default SKU Id value of 0 is returned. If the platform has set a SKU Id, then the currently set SKU
|
||||
Id is returned.
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
LibPcdGetSku (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
ASSERT (FALSE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@@ -18,17 +18,23 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
#include <Protocol/Pcd.h>
|
||||
#include <Protocol/PiPcd.h>
|
||||
#include <Protocol/PcdInfo.h>
|
||||
#include <Protocol/PiPcdInfo.h>
|
||||
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/UefiBootServicesTableLib.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
|
||||
PCD_PROTOCOL *mPcd = NULL;
|
||||
EFI_PCD_PROTOCOL *mPiPcd = NULL;
|
||||
PCD_PROTOCOL *mPcd = NULL;
|
||||
EFI_PCD_PROTOCOL *mPiPcd = NULL;
|
||||
GET_PCD_INFO_PROTOCOL *mPcdInfo = NULL;
|
||||
EFI_GET_PCD_INFO_PROTOCOL *mPiPcdInfo = NULL;
|
||||
|
||||
/**
|
||||
Retrieves the PI PCD protocol from the handle database.
|
||||
|
||||
@retval EFI_PCD_PROTOCOL * The pointer to the EFI_PCD_PROTOCOL.
|
||||
**/
|
||||
EFI_PCD_PROTOCOL *
|
||||
EFIAPI
|
||||
@@ -52,6 +58,8 @@ GetPiPcdProtocol (
|
||||
|
||||
/**
|
||||
Retrieves the PCD protocol from the handle database.
|
||||
|
||||
@retval PCD_PROTOCOL * The pointer to the PCD_PROTOCOL.
|
||||
**/
|
||||
PCD_PROTOCOL *
|
||||
EFIAPI
|
||||
@@ -73,6 +81,45 @@ GetPcdProtocol (
|
||||
return mPcd;
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieves the PI PCD info protocol from the handle database.
|
||||
|
||||
@retval EFI_GET_PCD_INFO_PROTOCOL * The pointer to the EFI_GET_PCD_INFO_PROTOCOL defined in PI 1.2.1 Vol 3.
|
||||
**/
|
||||
EFI_GET_PCD_INFO_PROTOCOL *
|
||||
GetPiPcdInfoProtocolPointer (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
|
||||
if (mPiPcdInfo == NULL) {
|
||||
Status = gBS->LocateProtocol (&gEfiGetPcdInfoProtocolGuid, NULL, (VOID **)&mPiPcdInfo);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
ASSERT (mPiPcdInfo != NULL);
|
||||
}
|
||||
return mPiPcdInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieves the PCD info protocol from the handle database.
|
||||
|
||||
@retval GET_PCD_INFO_PROTOCOL * The pointer to the GET_PCD_INFO_PROTOCOL.
|
||||
**/
|
||||
GET_PCD_INFO_PROTOCOL *
|
||||
GetPcdInfoProtocolPointer (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
|
||||
if (mPcdInfo == NULL) {
|
||||
Status = gBS->LocateProtocol (&gGetPcdInfoProtocolGuid, NULL, (VOID **)&mPcdInfo);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
ASSERT (mPcdInfo != NULL);
|
||||
}
|
||||
return mPcdInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
This function provides a means by which SKU support can be established in the PCD infrastructure.
|
||||
@@ -1037,5 +1084,78 @@ LibPatchPcdSetPtr (
|
||||
return (VOID *) Buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieve additional information associated with a PCD token.
|
||||
|
||||
This includes information such as the type of value the TokenNumber is associated with as well as possible
|
||||
human readable name that is associated with the token.
|
||||
|
||||
If TokenNumber is not in the default token space specified, then ASSERT().
|
||||
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
|
||||
The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
LibPcdGetInfo (
|
||||
IN UINTN TokenNumber,
|
||||
OUT PCD_INFO *PcdInfo
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = GetPcdInfoProtocolPointer()->GetInfo (TokenNumber, (EFI_PCD_INFO *) PcdInfo);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieve additional information associated with a PCD token.
|
||||
|
||||
This includes information such as the type of value the TokenNumber is associated with as well as possible
|
||||
human readable name that is associated with the token.
|
||||
|
||||
If TokenNumber is not in the token space specified by Guid, then ASSERT().
|
||||
|
||||
@param[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
|
||||
The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
LibPcdGetInfoEx (
|
||||
IN CONST GUID *Guid,
|
||||
IN UINTN TokenNumber,
|
||||
OUT PCD_INFO *PcdInfo
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = GetPiPcdInfoProtocolPointer()->GetInfo (Guid, TokenNumber, (EFI_PCD_INFO *) PcdInfo);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieve the currently set SKU Id.
|
||||
|
||||
If the sku id got >= PCD_MAX_SKU_ID, then ASSERT().
|
||||
|
||||
@return The currently set SKU Id. If the platform has not set at a SKU Id, then the
|
||||
default SKU Id value of 0 is returned. If the platform has set a SKU Id, then the currently set SKU
|
||||
Id is returned.
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
LibPcdGetSku (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
UINTN SkuId;
|
||||
|
||||
SkuId = GetPiPcdInfoProtocolPointer()->GetSku ();
|
||||
ASSERT (SkuId < PCD_MAX_SKU_ID);
|
||||
|
||||
return SkuId;
|
||||
}
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
## @file
|
||||
# Instance of PCD Library using PCD Protocol.
|
||||
#
|
||||
# There are two PCD PPIs as follows:
|
||||
# There are two PCD PROTOCOLs as follows:
|
||||
# 1) PCD_PROTOCOL
|
||||
# It is EDKII implementation which support Dynamic/DynamicEx Pcds.
|
||||
# 2) EFI_PCD_PROTOCOL
|
||||
@@ -13,7 +13,7 @@
|
||||
# This library instance uses the PCD_PROTOCOL to handle dynamic PCD request and use
|
||||
# EFI_PCD_PROTOCOL to handle dynamicEx type PCD.
|
||||
#
|
||||
# Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2007 - 2013, 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
|
||||
@@ -54,6 +54,8 @@
|
||||
[Protocols]
|
||||
gPcdProtocolGuid ## CONSUMES
|
||||
gEfiPcdProtocolGuid ## CONSUMES
|
||||
gGetPcdInfoProtocolGuid ## SOMETIMES_CONSUMES
|
||||
gEfiGetPcdInfoProtocolGuid ## SOMETIMES_CONSUMES
|
||||
|
||||
[Depex.common.DXE_DRIVER, Depex.common.DXE_RUNTIME_DRIVER, Depex.common.DXE_SAL_DRIVER, Depex.common.DXE_SMM_DRIVER]
|
||||
gEfiPcdProtocolGuid
|
||||
|
@@ -20,6 +20,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
#include <Ppi/Pcd.h>
|
||||
#include <Ppi/PiPcd.h>
|
||||
#include <Ppi/PcdInfo.h>
|
||||
#include <Ppi/PiPcdInfo.h>
|
||||
|
||||
#include <Library/PeiServicesLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
@@ -71,7 +73,53 @@ GetPiPcdPpiPointer (
|
||||
|
||||
return PiPcdPpi;
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieve the GET_PCD_INFO_PPI pointer.
|
||||
|
||||
This function is to locate GET_PCD_INFO_PPI PPI via PeiService.
|
||||
If fail to locate GET_PCD_INFO_PPI, then ASSERT_EFI_ERROR().
|
||||
|
||||
@retval GET_PCD_INFO_PPI * The pointer to the GET_PCD_INFO_PPI.
|
||||
|
||||
**/
|
||||
GET_PCD_INFO_PPI *
|
||||
GetPcdInfoPpiPointer (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
GET_PCD_INFO_PPI *PcdInfoPpi;
|
||||
|
||||
Status = PeiServicesLocatePpi (&gGetPcdInfoPpiGuid, 0, NULL, (VOID **)&PcdInfoPpi);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
return PcdInfoPpi;
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieve the pointer of EFI_GET_PCD_INFO_PPI defined in PI 1.2.1 Vol 3.
|
||||
|
||||
This function is to locate EFI_GET_PCD_INFO_PPI PPI via PeiService.
|
||||
If fail to locate EFI_GET_PCD_INFO_PPI, then ASSERT_EFI_ERROR().
|
||||
|
||||
@retval EFI_GET_PCD_INFO_PPI * The pointer to the EFI_GET_PCD_INFO_PPI.
|
||||
|
||||
**/
|
||||
EFI_GET_PCD_INFO_PPI *
|
||||
GetPiPcdInfoPpiPointer (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_GET_PCD_INFO_PPI *PiPcdInfoPpi;
|
||||
|
||||
Status = PeiServicesLocatePpi (&gEfiGetPcdInfoPpiGuid, 0, NULL, (VOID **)&PiPcdInfoPpi);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
return PiPcdInfoPpi;
|
||||
}
|
||||
|
||||
/**
|
||||
This function provides a means by which SKU support can be established in the PCD infrastructure.
|
||||
|
||||
@@ -1044,4 +1092,77 @@ LibPatchPcdSetPtr (
|
||||
return (VOID *) Buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieve additional information associated with a PCD token.
|
||||
|
||||
This includes information such as the type of value the TokenNumber is associated with as well as possible
|
||||
human readable name that is associated with the token.
|
||||
|
||||
If TokenNumber is not in the default token space specified, then ASSERT().
|
||||
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
|
||||
The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
LibPcdGetInfo (
|
||||
IN UINTN TokenNumber,
|
||||
OUT PCD_INFO *PcdInfo
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = GetPcdInfoPpiPointer()->GetInfo (TokenNumber, (EFI_PCD_INFO *) PcdInfo);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieve additional information associated with a PCD token.
|
||||
|
||||
This includes information such as the type of value the TokenNumber is associated with as well as possible
|
||||
human readable name that is associated with the token.
|
||||
|
||||
If TokenNumber is not in the token space specified by Guid, then ASSERT().
|
||||
|
||||
@param[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
|
||||
The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName.
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
LibPcdGetInfoEx (
|
||||
IN CONST GUID *Guid,
|
||||
IN UINTN TokenNumber,
|
||||
OUT PCD_INFO *PcdInfo
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = GetPiPcdInfoPpiPointer()->GetInfo (Guid, TokenNumber, (EFI_PCD_INFO *) PcdInfo);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieve the currently set SKU Id.
|
||||
|
||||
If the sku id got >= PCD_MAX_SKU_ID, then ASSERT().
|
||||
|
||||
@return The currently set SKU Id. If the platform has not set at a SKU Id, then the
|
||||
default SKU Id value of 0 is returned. If the platform has set a SKU Id, then the currently set SKU
|
||||
Id is returned.
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
LibPcdGetSku (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
UINTN SkuId;
|
||||
|
||||
SkuId = GetPiPcdInfoPpiPointer()->GetSku ();
|
||||
ASSERT (SkuId < PCD_MAX_SKU_ID);
|
||||
|
||||
return SkuId;
|
||||
}
|
||||
|
@@ -15,7 +15,7 @@
|
||||
#
|
||||
# PCD Library that uses the PCD PPI to access Dynamic and DynamicEx PCD entries
|
||||
#
|
||||
# Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2007 - 2013, 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
|
||||
@@ -57,7 +57,9 @@
|
||||
[Ppis]
|
||||
gPcdPpiGuid ## CONSUMES
|
||||
gEfiPeiPcdPpiGuid ## CONSUMES
|
||||
|
||||
gGetPcdInfoPpiGuid ## SOMETIMES_CONSUMES
|
||||
gEfiGetPcdInfoPpiGuid ## SOMETIMES_CONSUMES
|
||||
|
||||
[Depex.common.PEIM]
|
||||
gEfiPeiPcdPpiGuid
|
||||
|
||||
|
||||
|
@@ -681,6 +681,9 @@
|
||||
## Include/Ppi/Pcd.h
|
||||
gPcdPpiGuid = { 0x6e81c58, 0x4ad7, 0x44bc, { 0x83, 0x90, 0xf1, 0x2, 0x65, 0xf7, 0x24, 0x80 } }
|
||||
|
||||
## Include/Ppi/PcdInfo.h
|
||||
gGetPcdInfoPpiGuid = { 0x4d8b155b, 0xc059, 0x4c8f, { 0x89, 0x26, 0x6, 0xfd, 0x43, 0x31, 0xdb, 0x8a } }
|
||||
|
||||
#
|
||||
# PPIs defined in PI 1.2.
|
||||
#
|
||||
@@ -716,7 +719,21 @@
|
||||
## Include/Ppi/FirmwareVolumeInfo2.h
|
||||
gEfiPeiFirmwareVolumeInfo2PpiGuid = { 0xea7ca24b, 0xded5, 0x4dad, { 0xa3, 0x89, 0xbf, 0x82, 0x7e, 0x8f, 0x9b, 0x38 } }
|
||||
|
||||
|
||||
#
|
||||
# PPIs defined in PI 1.2.1.
|
||||
#
|
||||
|
||||
## Include/Ppi/PiPcdInfo.h
|
||||
gEfiGetPcdInfoPpiGuid = { 0xa60c6b59, 0xe459, 0x425d, { 0x9c, 0x69, 0xb, 0xcc, 0x9c, 0xb2, 0x7d, 0x81 } }
|
||||
|
||||
[Protocols]
|
||||
## Include/Protocol/Pcd.h
|
||||
gPcdProtocolGuid = { 0x11B34006, 0xD85B, 0x4D0A, { 0xA2, 0x90, 0xD5, 0xA5, 0x71, 0x31, 0x0E, 0xF7 }}
|
||||
|
||||
## Include/Protocol/PcdInfo.h
|
||||
gGetPcdInfoProtocolGuid = { 0x5be40f57, 0xfa68, 0x4610, { 0xbb, 0xbf, 0xe9, 0xc5, 0xfc, 0xda, 0xd3, 0x65 } }
|
||||
|
||||
#
|
||||
# Protocols defined in PI1.0.
|
||||
#
|
||||
@@ -925,19 +942,19 @@
|
||||
gEfiExtendedSalCacheServicesProtocolGuid = { 0xedc9494, 0x2743, 0x4ba5, { 0x88, 0x18, 0x0a, 0xef, 0x52, 0x13, 0xf1, 0x88 } }
|
||||
gEfiExtendedSalMcaLogServicesProtocolGuid = { 0xcb3fd86e, 0x38a3, 0x4c03, {0x9a, 0x5c, 0x90, 0xcf, 0xa3, 0xa2, 0xab, 0x7a } }
|
||||
|
||||
#
|
||||
# Protocols defined in PI1.2.1
|
||||
#
|
||||
## Include/Protocol/Security2.h
|
||||
gEfiSecurity2ArchProtocolGuid = { 0x94ab2f58, 0x1438, 0x4ef1, {0x91, 0x52, 0x18, 0x94, 0x1a, 0x3a, 0x0e, 0x68 } }
|
||||
|
||||
#
|
||||
# Protocols defined in PI 1.2.1
|
||||
#
|
||||
|
||||
## Include/Protocol/Security2.h
|
||||
gEfiSecurity2ArchProtocolGuid = { 0x94ab2f58, 0x1438, 0x4ef1, {0x91, 0x52, 0x18, 0x94, 0x1a, 0x3a, 0x0e, 0x68 } }
|
||||
|
||||
## Include/Protocol/SmmEndOfDxe.h
|
||||
gEfiSmmEndOfDxeProtocolGuid = { 0x24e70042, 0xd5c5, 0x4260, { 0x8c, 0x39, 0xa, 0xd3, 0xaa, 0x32, 0xe9, 0x3d }}
|
||||
|
||||
## Include/Protocol/PiPcdInfo.h
|
||||
gEfiGetPcdInfoProtocolGuid = { 0xfd0f4478, 0xefd, 0x461d, { 0xba, 0x2d, 0xe5, 0x8c, 0x45, 0xfd, 0x5f, 0x5e } }
|
||||
|
||||
#
|
||||
# Protocols defined in PI 1.3.
|
||||
#
|
||||
@@ -1192,9 +1209,6 @@
|
||||
## Include/Protocol/Hash.h
|
||||
gEfiHashProtocolGuid = { 0xC5184932, 0xDBA5, 0x46DB, { 0xA5, 0xBA, 0xCC, 0x0B, 0xDA, 0x9C, 0x14, 0x35 }}
|
||||
|
||||
## Include/Protocol/Pcd.h
|
||||
gPcdProtocolGuid = { 0x11B34006, 0xD85B, 0x4D0A, { 0xA2, 0x90, 0xD5, 0xA5, 0x71, 0x31, 0x0E, 0xF7 }}
|
||||
|
||||
## Include/Protocol/TcgService.h
|
||||
gEfiTcgProtocolGuid = { 0xf541796d, 0xa62e, 0x4954, { 0xa7, 0x75, 0x95, 0x84, 0xf6, 0x1b, 0x9c, 0xdd }}
|
||||
|
||||
|
Reference in New Issue
Block a user