| /** @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_ |