2 This file is for functins related to assign and free Framework HII handle number.
4 Copyright (c) 2008 - 2010, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 #include "HiiHandle.h"
19 // FRAMEWORK_EFI_HII_HANDLE
21 UINT8 mHandle
[1024 * 8] = {0};
25 Initialize the Framework Hii Handle database.
29 InitHiiHandleDatabase (
34 // FRAMEWORK_EFI_HII_HANDLE 0 is reserved.
35 // Set Bit 0 in mHandle[0] to 1.
41 Allocate a new Framework HII handle.
43 @param Handle Returns the new Framework HII Handle assigned.
45 @retval EFI_SUCCESS A new Framework HII Handle is assigned.
46 @retval EFI_OUT_OF_RESOURCE The Framework HII Handle database is depleted.
51 OUT FRAMEWORK_EFI_HII_HANDLE
*Handle
56 for (Index
= 0; Index
< sizeof (mHandle
) * 8; Index
++) {
57 if ((mHandle
[Index
/ 8] & (1 << (Index
% 8))) == 0) {
58 mHandle
[Index
/ 8] = (UINT8
) (mHandle
[Index
/ 8] | (1 << (Index
% 8)));
59 *Handle
= (FRAMEWORK_EFI_HII_HANDLE
) Index
;
60 ASSERT (*Handle
!= 0);
65 return EFI_OUT_OF_RESOURCES
;
69 Free Framework HII handle.
71 @param Handle The Framework HII Handle to be freed.
76 IN FRAMEWORK_EFI_HII_HANDLE Handle
81 Num
= (UINT16
) Handle
;
83 ASSERT ((mHandle
[Num
/ 8] & (1 << (Num
% 8))) != 0);
84 mHandle
[Num
/ 8] = (UINT8
) (mHandle
[Num
/ 8] & (~(1 << (Num
% 8))));