4 Copyright (c) 2006, Intel Corporation
5 All rights reserved. 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.
18 #include "../Common/PcdCommon.h"
22 PCD_PPI mPcdPpiInstance
= {
55 PcdRegisterCallBackOnSet
,
56 PcdUnRegisterCallBackOnSet
,
62 STATIC EFI_PEI_PPI_DESCRIPTOR mPpiPCD
= {
63 (EFI_PEI_PPI_DESCRIPTOR_PPI
| EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST
),
73 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
74 IN EFI_PEI_SERVICES
**PeiServices
80 PcdImage
= (UINT8
*) LocatePcdImage ();
82 BuildPcdDatabase (PcdImage
);
84 Status
= PeiCoreInstallPpi (&mPpiPCD
);
86 ASSERT_EFI_ERROR (Status
);
99 PCD_DATABASE
*Database
;
100 EFI_HOB_GUID_TYPE
*GuidHob
;
102 GuidHob
= GetFirstGuidHob (&gPcdDataBaseHobGuid
);
103 ASSERT (GuidHob
!= NULL
);
105 Database
= (PCD_DATABASE
*) GET_GUID_HOB_DATA (GuidHob
);
107 Database
->Info
.SkuId
= SkuId
;
120 return PeiPcdGet8Ex (NULL
, TokenNumber
);
131 return PeiPcdGet16Ex (NULL
, TokenNumber
);
142 return PeiPcdGet32Ex (NULL
, TokenNumber
);
153 return PeiPcdGet64Ex (NULL
, TokenNumber
);
164 return PeiPcdGetPtrEx (NULL
, TokenNumber
);
175 return PeiPcdGetBoolEx (NULL
, TokenNumber
);
186 return PeiPcdGetSizeEx (NULL
, TokenNumber
);
194 IN CONST EFI_GUID
*Guid
,
200 PeiGetPcdEntryWorker (TokenNumber
, Guid
, PcdByte8
, &Data
);
210 IN CONST EFI_GUID
*Guid
,
216 PeiGetPcdEntryWorker (TokenNumber
, Guid
, PcdByte16
, &Data
);
226 IN CONST EFI_GUID
*Guid
,
232 PeiGetPcdEntryWorker (TokenNumber
, Guid
, PcdByte32
, &Data
);
242 IN CONST EFI_GUID
*Guid
,
248 PeiGetPcdEntryWorker (TokenNumber
, Guid
, PcdByte64
, &Data
);
258 IN CONST EFI_GUID
*Guid
,
264 PeiGetPcdEntryWorker (TokenNumber
, Guid
, PcdPointer
, &Data
);
274 IN CONST EFI_GUID
*Guid
,
280 PeiGetPcdEntryWorker (TokenNumber
, Guid
, PcdBoolean
, &Data
);
290 IN CONST EFI_GUID
*Guid
,
294 return PeiGetPcdEntrySizeWorker (TokenNumber
, Guid
);
302 IN UINTN TokenNumber
,
306 return PeiPcdSet8Ex (NULL
, TokenNumber
, Value
);
314 IN UINTN TokenNumber
,
318 return PeiPcdSet16Ex (NULL
, TokenNumber
, Value
);
326 IN UINTN TokenNumber
,
330 return PeiPcdSet32Ex (NULL
, TokenNumber
, Value
);
338 IN UINTN TokenNumber
,
342 return PeiPcdSet64Ex (NULL
, TokenNumber
, Value
);
349 IN UINTN TokenNumber
,
353 return PeiPcdSetPtrEx (NULL
, TokenNumber
, Value
);
361 IN UINTN TokenNumber
,
365 return PeiPcdSetBoolEx (NULL
, TokenNumber
, Value
);
373 IN CONST EFI_GUID
*Guid
,
374 IN UINTN TokenNumber
,
378 return PeiSetPcdEntryWorker (TokenNumber
, Guid
, PcdByte8
, &Value
);
386 IN CONST EFI_GUID
*Guid
,
387 IN UINTN TokenNumber
,
391 return PeiSetPcdEntryWorker (TokenNumber
, Guid
, PcdByte16
, &Value
);
399 IN CONST EFI_GUID
*Guid
,
400 IN UINTN TokenNumber
,
404 return PeiSetPcdEntryWorker (TokenNumber
, Guid
, PcdByte32
, &Value
);
412 IN CONST EFI_GUID
*Guid
,
413 IN UINTN TokenNumber
,
417 return PeiSetPcdEntryWorker (TokenNumber
, Guid
, PcdByte64
, &Value
);
425 IN CONST EFI_GUID
*Guid
,
426 IN UINTN TokenNumber
,
430 return PeiSetPcdEntryWorker (TokenNumber
, Guid
, PcdPointer
, (VOID
*)Value
);
438 IN CONST EFI_GUID
*Guid
,
439 IN UINTN TokenNumber
,
443 return PeiSetPcdEntryWorker (TokenNumber
, Guid
, PcdBoolean
, &Value
);
452 PcdRegisterCallBackOnSet (
453 IN UINTN TokenNumber
,
454 IN CONST EFI_GUID
*Guid
, OPTIONAL
455 IN PCD_PPI_CALLBACK CallBackFunction
458 return PeiRegisterCallBackWorker (TokenNumber
, Guid
, CallBackFunction
, TRUE
);
465 PcdUnRegisterCallBackOnSet (
466 IN UINTN TokenNumber
,
467 IN CONST EFI_GUID
*Guid
, OPTIONAL
468 IN PCD_PPI_CALLBACK CallBackFunction
471 return PeiRegisterCallBackWorker (TokenNumber
, Guid
, CallBackFunction
, FALSE
);
479 IN CONST EFI_GUID
*Guid
, OPTIONAL
480 IN OUT UINTN
*TokenNumber
483 return PeiGetNextTokenWorker (TokenNumber
, Guid
);