1 | /** @file
|
---|
2 | Dynamic Platform Info Repository Internal
|
---|
3 |
|
---|
4 | Copyright (c) 2021, Arm Limited. All rights reserved.<BR>
|
---|
5 |
|
---|
6 | SPDX-License-Identifier: BSD-2-Clause-Patent
|
---|
7 |
|
---|
8 | @par Glossary:
|
---|
9 | - Cm or CM - Configuration Manager
|
---|
10 | - Obj or OBJ - Object
|
---|
11 | **/
|
---|
12 |
|
---|
13 | #ifndef DYNAMIC_PLAT_REPO_INTERNAL_H_
|
---|
14 | #define DYNAMIC_PLAT_REPO_INTERNAL_H_
|
---|
15 |
|
---|
16 | #include "TokenMapper.h"
|
---|
17 |
|
---|
18 | #pragma pack(1)
|
---|
19 |
|
---|
20 | /** CmObj node.
|
---|
21 |
|
---|
22 | This is a node wrapper around the CM_OBJ_DESCRIPTOR structure.
|
---|
23 | It also allows to bind a token to the CM_OBJ_DESCRIPTOR.
|
---|
24 | */
|
---|
25 | typedef struct CmObjectNode {
|
---|
26 | /// This must be the first field in this structure.
|
---|
27 | LIST_ENTRY Link;
|
---|
28 |
|
---|
29 | /// Token associated with the CmObjDesc.
|
---|
30 | CM_OBJECT_TOKEN Token;
|
---|
31 |
|
---|
32 | /// CmObjDesc wrapped.
|
---|
33 | /// Note: the CM_OBJ_DESCRIPTOR.Data field is allocated and copied.
|
---|
34 | CM_OBJ_DESCRIPTOR CmObjDesc;
|
---|
35 | } CM_OBJ_NODE;
|
---|
36 |
|
---|
37 | /** Dynamic repository states.
|
---|
38 |
|
---|
39 | The states must progress as:
|
---|
40 | UnInitialised -> Transient -> Finalized
|
---|
41 | */
|
---|
42 | typedef enum DynRepoState {
|
---|
43 | DynRepoUnInitialised, ///< Un-Initialised state
|
---|
44 | DynRepoTransient, ///< Transient state - CmObjects can be added.
|
---|
45 | DynRepoFinalized, ///< Repo Locked - No further CmObjects can be added.
|
---|
46 | ///< Getting objects is now possible.
|
---|
47 | DynRepoMax ///< Max value.
|
---|
48 | } EDYNAMIC_REPO_STATE;
|
---|
49 |
|
---|
50 | /** A structure describing the platform configuration
|
---|
51 | manager repository information
|
---|
52 | */
|
---|
53 | typedef struct DynamicPlatformRepositoryInfo {
|
---|
54 | /// Repo state machine.
|
---|
55 | EDYNAMIC_REPO_STATE RepoState;
|
---|
56 |
|
---|
57 | /// Count of all the objects added to the Dynamic Platform Repo
|
---|
58 | /// during the Transient state.
|
---|
59 | UINTN ObjectCount;
|
---|
60 |
|
---|
61 | /// Link lists of CmObj from the ArmNameSpace
|
---|
62 | /// that are added in the Transient state.
|
---|
63 | LIST_ENTRY ArmCmObjList[EArmObjMax];
|
---|
64 |
|
---|
65 | /// Structure Members used in Finalized state.
|
---|
66 | /// An array of CmObj Descriptors from the ArmNameSpace
|
---|
67 | /// This array is populated when the Repo is finalized.
|
---|
68 | CM_OBJ_DESCRIPTOR ArmCmObjArray[EArmObjMax];
|
---|
69 |
|
---|
70 | /// A token mapper for the objects in the ArmNamespaceObjectArray
|
---|
71 | /// The Token mapper is populated when the Repo is finalized in
|
---|
72 | /// a call to DynamicPlatRepoFinalise ().
|
---|
73 | TOKEN_MAPPER TokenMapper;
|
---|
74 | } DYNAMIC_PLATFORM_REPOSITORY_INFO;
|
---|
75 |
|
---|
76 | #pragma pack()
|
---|
77 |
|
---|
78 | #endif // DYNAMIC_PLAT_REPO_INTERNAL_H_
|
---|