mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +02:00
V3: Update the error message for array checker. V2: 1. Add comments for each ASSERT. 2. ASSERT need to skip the case of array size of array as zero. For example, TestArray[] in struct in header file. V1: For structure PCD, 1. use compiler time assert to check the array index, report error if array index exceeds the array number. 2. use compiler time assert to check the array size, report error if the user declared size in header file is smaller than the user defined in DEC/DSC file. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: ZhiqiangX Zhao <zhiqiangx.zhao@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Yonghong Zhu <yonghong.zhu@intel.com> Cc: Bob Feng <bob.c.feng@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
192 lines
4.0 KiB
C
192 lines
4.0 KiB
C
/** @file
|
|
Header file for PcdValue structure definition.
|
|
|
|
Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
|
|
This program and the accompanying materials
|
|
are licensed and made available under the terms and conditions of the BSD License
|
|
which accompanies this distribution. The full text of the license may be found at
|
|
http://opensource.org/licenses/bsd-license.php
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
**/
|
|
|
|
#ifndef _PCD_VALUE_COMMON_H
|
|
#define _PCD_VALUE_COMMON_H
|
|
|
|
#include <Common/UefiBaseTypes.h>
|
|
#include <Common/UefiInternalFormRepresentation.h>
|
|
|
|
#define __FIELD_SIZE(TYPE, Field) (sizeof((TYPE *)0)->Field)
|
|
#define __ARRAY_ELEMENT_SIZE(TYPE, Field) (sizeof((TYPE *)0)->Field[0])
|
|
#define __OFFSET_OF(TYPE, Field) ((UINT32) &(((TYPE *)0)->Field))
|
|
#define __FLEXIBLE_SIZE(Size, TYPE, Field, MaxIndex) if (__FIELD_SIZE(TYPE, Field) == 0) Size = MAX((__OFFSET_OF(TYPE, Field) + __ARRAY_ELEMENT_SIZE(TYPE, Field) * (MaxIndex)), Size)
|
|
#define __ARRAY_SIZE(Array) (sizeof(Array)/sizeof(Array[0]))
|
|
|
|
#if defined(_MSC_EXTENSIONS)
|
|
#define __STATIC_ASSERT static_assert
|
|
#else
|
|
#define __STATIC_ASSERT _Static_assert
|
|
#endif
|
|
|
|
VOID
|
|
PcdEntryPoint (
|
|
VOID
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Main function updates PCD values. It is auto generated by Build
|
|
|
|
Arguments:
|
|
|
|
None
|
|
|
|
Returns:
|
|
None
|
|
--*/
|
|
;
|
|
|
|
int
|
|
PcdValueMain (
|
|
int argc,
|
|
char *argv[]
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Main function updates PCD values.
|
|
|
|
Arguments:
|
|
|
|
argc Number of command line parameters.
|
|
argv Array of pointers to parameter strings.
|
|
|
|
Returns:
|
|
EXIT_SUCCESS
|
|
--*/
|
|
;
|
|
|
|
VOID
|
|
__PcdSet (
|
|
CHAR8 *SkuName OPTIONAL,
|
|
CHAR8 *DefaultValueName OPTIONAL,
|
|
CHAR8 *TokenSpaceGuidName,
|
|
CHAR8 *TokenName,
|
|
UINT64 Value
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Get PCD value
|
|
|
|
Arguments:
|
|
|
|
SkuName SkuName String
|
|
DefaultValueName DefaultValueName String
|
|
TokenSpaceGuidName TokenSpaceGuidName String
|
|
TokenName TokenName String
|
|
|
|
Returns:
|
|
|
|
PCD value
|
|
--*/
|
|
;
|
|
|
|
VOID
|
|
__PcdSet (
|
|
CHAR8 *SkuName OPTIONAL,
|
|
CHAR8 *DefaultValueName OPTIONAL,
|
|
CHAR8 *TokenSpaceGuidName,
|
|
CHAR8 *TokenName,
|
|
UINT64 Value
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Set PCD value
|
|
|
|
Arguments:
|
|
|
|
SkuName SkuName String
|
|
DefaultValueName DefaultValueName String
|
|
TokenSpaceGuidName TokenSpaceGuidName String
|
|
TokenName TokenName String
|
|
Value PCD value to be set
|
|
|
|
Returns:
|
|
|
|
None
|
|
--*/
|
|
;
|
|
|
|
VOID *
|
|
__PcdGetPtr (
|
|
CHAR8 *SkuName OPTIONAL,
|
|
CHAR8 *DefaultValueName OPTIONAL,
|
|
CHAR8 *TokenSpaceGuidName,
|
|
CHAR8 *TokenName,
|
|
UINT32 *Size
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Get PCD value buffer
|
|
|
|
Arguments:
|
|
|
|
SkuName SkuName String
|
|
DefaultValueName DefaultValueName String
|
|
TokenSpaceGuidName TokenSpaceGuidName String
|
|
TokenName TokenName String
|
|
Size Size of PCD value buffer
|
|
|
|
Returns:
|
|
|
|
PCD value buffer
|
|
--*/
|
|
;
|
|
|
|
VOID
|
|
__PcdSetPtr (
|
|
CHAR8 *SkuName OPTIONAL,
|
|
CHAR8 *DefaultValueName OPTIONAL,
|
|
CHAR8 *TokenSpaceGuidName,
|
|
CHAR8 *TokenName,
|
|
UINT32 Size,
|
|
UINT8 *Value
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Set PCD value buffer
|
|
|
|
Arguments:
|
|
|
|
SkuName SkuName String
|
|
DefaultValueName DefaultValueName String
|
|
TokenSpaceGuidName TokenSpaceGuidName String
|
|
TokenName TokenName String
|
|
Size Size of PCD value
|
|
Value Pointer to the updated PCD value buffer
|
|
|
|
Returns:
|
|
|
|
None
|
|
--*/
|
|
;
|
|
|
|
#define PcdGet(A, B, C, D) __PcdGet(#A, #B, #C, #D)
|
|
#define PcdSet(A, B, C, D, Value) __PcdSet(#A, #B, #C, #D, Value)
|
|
#define PcdGetPtr(A, B, C, D, Size) __PcdGetPtr(#A, #B, #C, #D, Size)
|
|
#define PcdSetPtr(A, B, C, D, Size, Value) __PcdSetPtr(#A, #B, #C, #D, Size, Value)
|
|
|
|
#endif
|