]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiHandle.c
1) Add in SharingStringPack to make UpdateString only create/update string token...
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / FrameworkHiiToUefiHiiThunk / HiiHandle.c
CommitLineData
d4775f2a 1/**@file\r
a3318eaf 2 This file is for functins related to assign and free Framework HII handle number.\r
d4775f2a 3 \r
4Copyright (c) 2008, Intel Corporation\r
5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15\r
16#include "HiiHandle.h"\r
17\r
18//\r
19// FRAMEWORK_EFI_HII_HANDLE\r
20//\r
21UINT8 mHandle[1024 * 8] = {0};\r
22\r
3321fa09 23/**\r
24\r
25 Initialize the Framework Hii Handle database.\r
26\r
27**/\r
d4775f2a 28VOID\r
29InitHiiHandleDatabase (\r
30 VOID\r
31 )\r
32{\r
33 //\r
34 // FRAMEWORK_EFI_HII_HANDLE 0 is reserved.\r
35 // Set Bit 0 in mHandle[0] to 1.\r
36 //\r
37 mHandle[0] |= 1 << 0;\r
38}\r
39\r
3321fa09 40/**\r
41 Allocate a new Framework HII handle. \r
42\r
43 @param Handle Returns the new Framework HII Handle assigned.\r
44\r
45 @retval EFI_SUCCESS A new Framework HII Handle is assigned.\r
46 @retval EFI_OUT_OF_RESOURCE The Framework HII Handle database is depleted.\r
d4775f2a 47\r
3321fa09 48**/\r
d4775f2a 49EFI_STATUS\r
50AllocateHiiHandle (\r
3321fa09 51 OUT FRAMEWORK_EFI_HII_HANDLE *Handle\r
d4775f2a 52 )\r
53{\r
54 UINTN Index;\r
55\r
56 for (Index = 0; Index < sizeof (mHandle) * 8; Index++) {\r
57 if ((mHandle[Index / 8] & (1 << (Index % 8))) == 0) {\r
98b16b9d 58 mHandle[Index / 8] = (UINT8) (mHandle[Index / 8] | (1 << (Index % 8)));\r
d4775f2a 59 *Handle = (FRAMEWORK_EFI_HII_HANDLE) Index;\r
60 ASSERT (*Handle != 0);\r
61 return EFI_SUCCESS;\r
62 }\r
63 }\r
64 \r
65 return EFI_OUT_OF_RESOURCES;\r
66}\r
67\r
3321fa09 68/**\r
69 Free Framework HII handle. \r
70\r
71 @param Handle The Framework HII Handle to be freed.\r
72\r
73**/\r
d4775f2a 74VOID\r
75FreeHiiHandle (\r
3321fa09 76 IN FRAMEWORK_EFI_HII_HANDLE Handle\r
d4775f2a 77 )\r
78{\r
79 UINT16 Num;\r
80\r
81 Num = (UINT16) Handle;\r
82\r
fed39e58 83 ASSERT ((mHandle [Num / 8] & (1 << (Num % 8))) != 0);\r
98b16b9d 84 mHandle [Num / 8] = (UINT8) (mHandle [Num / 8] & (~(1 << (Num % 8))));\r
d4775f2a 85}\r