mirror of https://github.com/acidanthera/audk.git
124 lines
3.4 KiB
C
124 lines
3.4 KiB
C
/** @file
|
|
Token Mapper
|
|
|
|
Copyright (c) 2021, Arm Limited. All rights reserved.<BR>
|
|
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
@par Glossary:
|
|
- Cm or CM - Configuration Manager
|
|
- Obj or OBJ - Object
|
|
**/
|
|
|
|
#ifndef TOKEN_MAPPER_H_
|
|
#define TOKEN_MAPPER_H_
|
|
|
|
#pragma pack(1)
|
|
|
|
/** Token mapping descriptor.
|
|
|
|
Bind a token and a CmObj together.
|
|
*/
|
|
typedef struct TokenMapDescriptor {
|
|
/// Object Token.
|
|
CM_OBJECT_TOKEN Token;
|
|
|
|
/// CmObjectDescriptor CM_OBJ_DESCRIPTOR.Data is a reference copy
|
|
/// and not allocated. It points to the individual objects in the
|
|
/// Dynamic Plat Repo ArmNameSpaceObjectArray.
|
|
CM_OBJ_DESCRIPTOR CmObjDesc;
|
|
} TOKEN_MAP_DESCRIPTOR;
|
|
|
|
/** Token mapper.
|
|
|
|
Contain all the Token/CmObj couple mapping.
|
|
**/
|
|
typedef struct TokenMapper {
|
|
/// Maximum number of TOKEN_MAP_DESCRIPTOR entries in TokenDescArray.
|
|
UINTN MaxTokenDescCount;
|
|
|
|
/// Next TOKEN_MAP_DESCRIPTOR entry to use in TokenDescArray.
|
|
UINTN ItemCount;
|
|
|
|
/// Array of TOKEN_MAP_DESCRIPTOR.
|
|
TOKEN_MAP_DESCRIPTOR *TokenDescArray;
|
|
} TOKEN_MAPPER;
|
|
|
|
#pragma pack()
|
|
|
|
/** Add a CmObjDesc to the TokenMapper.
|
|
|
|
@param [in] TokenMapper The TokenMapper instance.
|
|
@param [in] Token CmObj token.
|
|
@param [in] ObjectId CmObj ObjectId.
|
|
@param [in] Size CmObj Size.
|
|
@param [in] Data CmObj Data.
|
|
This memory is referenced, not copied.
|
|
|
|
@retval EFI_SUCCESS The function completed successfully.
|
|
@retval EFI_BUFFER_TOO_SMALL Buffer too small.
|
|
@retval EFI_INVALID_PARAMETER A parameter is invalid.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
TokenMapperAddObject (
|
|
IN TOKEN_MAPPER *TokenMapper,
|
|
IN CM_OBJECT_TOKEN Token,
|
|
IN CM_OBJECT_ID ObjectId,
|
|
IN UINT32 Size,
|
|
IN VOID *Data
|
|
);
|
|
|
|
/** Get a CmObjDesc from a ObjectId/Token couple.
|
|
|
|
The Token parameter is not optional. An existing token must be provided.
|
|
|
|
@param [in] TokenMapper The TokenMapper instance.
|
|
@param [in] Token Token of the CmObj to search.
|
|
@param [in] ObjectId Object Id of the CmObj to search.
|
|
@param [out] CmObjDesc CM_OBJ_DESCRIPTOR containing the CmObj searched.
|
|
|
|
@retval EFI_SUCCESS The function completed successfully.
|
|
@retval EFI_INVALID_PARAMETER A parameter is invalid.
|
|
@retval EFI_NOT_FOUND Not found.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
TokenMapperGetObject (
|
|
IN TOKEN_MAPPER *TokenMapper,
|
|
IN CM_OBJECT_TOKEN Token,
|
|
IN CM_OBJECT_ID ObjectId,
|
|
OUT CM_OBJ_DESCRIPTOR *CmObjDesc
|
|
);
|
|
|
|
/** Initialise a TokenMapper.
|
|
|
|
@param [in] TokenMapper The TokenMapper to initialise.
|
|
@param [in] DescriptorCount Number of entries to allocate.
|
|
|
|
@retval EFI_SUCCESS The function completed successfully.
|
|
@retval EFI_ALREADY_STARTED Instance already initialised.
|
|
@retval EFI_INVALID_PARAMETER A parameter is invalid.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
TokenMapperInitialise (
|
|
IN TOKEN_MAPPER *TokenMapper,
|
|
IN UINTN DescriptorCount
|
|
);
|
|
|
|
/** Shutdown a TokenMapper.
|
|
|
|
@param [in] TokenMapper The TokenMapper to shutdown.
|
|
|
|
@retval EFI_SUCCESS The function completed successfully.
|
|
@retval EFI_INVALID_PARAMETER A parameter is invalid.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
TokenMapperShutdown (
|
|
IN TOKEN_MAPPER *TokenMapper
|
|
);
|
|
|
|
#endif // TOKEN_MAPPER_H_
|