DynamicTablesPkg: DynamicPlatRepo: Add TokenGenerator

The DynamicPlatRepo library allows to handle dynamically created
CmObj. The dynamic platform repository can be in the following states:
1 - Non-initialised
2 - Transient:
    Possibility to add CmObj to the platform, but not to query them.
3 - Finalised:
    Possibility to query CmObj, but not to add new.

A token is allocated to each CmObj added to the dynamic platform
repository (except for reference tokens CmObj). This allows to retrieve
dynamic CmObjs among all CmObj (static CmObj for instance).

This patch add the TokenGenerator files.

Signed-off-by: Pierre Gondois <Pierre.Gondois@arm.com>
Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
This commit is contained in:
Pierre Gondois 2021-12-09 10:32:48 +01:00 committed by mergify[bot]
parent b2d0ed20fd
commit 2e2db65e39
2 changed files with 55 additions and 0 deletions

View File

@ -0,0 +1,29 @@
/** @file
Token Generator
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
**/
#include <Protocol/ConfigurationManagerProtocol.h>
/** Generate a token.
@return A token.
**/
CM_OBJECT_TOKEN
EFIAPI
GenerateToken (
VOID
)
{
// Start Tokens at 1 to avoid collisions with CM_NULL_TOKEN.
STATIC UINTN CurrentToken = 1;
return (CM_OBJECT_TOKEN)(CurrentToken++);
}

View File

@ -0,0 +1,26 @@
/** @file
Token Generator
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_GENERATOR_H_
#define TOKEN_GENERATOR_H_
/** Generate a token.
@return A token.
**/
CM_OBJECT_TOKEN
EFIAPI
GenerateToken (
VOID
);
#endif // TOKEN_GENERATOR_H_