Liming, Responses below.
Mike > -----Original Message----- > From: Gao, Liming > Sent: Wednesday, June 22, 2016 6:33 PM > To: Kinney, Michael D <[email protected]>; [email protected]; > Kinney, > Michael D <[email protected]> > Subject: RE: [RFC V2] Add more flexible PCD value formats in DEC/INF/DSC/FDF > files > > Mike: > For GUID C Name in DEC file, how to find its value? Or require it be > defined in the > same package. DEC File - GUID C name must be defined in same package INF File - GUID C name must be defined in dependent package from [Packages] section DSC/FDF File - GUID C name must be defined in dependent package of module referenced in DSC/FDF > For VOID* byte array, could we support the usage to set the value in the > specified > offset. For example, VOID* { 0, 1, 2, OFFSET(8) 3, 4, 5 } Is this used to skip init of bytes? What value is assigned to skipped bytes? > > Thanks > Liming > > -----Original Message----- > > From: edk2-devel [mailto:[email protected]] On Behalf Of > > Kinney, Michael D > > Sent: Thursday, June 23, 2016 8:28 AM > > To: [email protected]; Kinney, Michael D <[email protected]> > > Subject: [edk2] [RFC V2] Add more flexible PCD value formats in > > DEC/INF/DSC/FDF files > > > > Hi > > > > I have updated this RFC to V2 that includes a concepts provided by > > Tim Lewis that includes extensions to initialize a VOID* PCD that > > cannot be described with a C structure (e.g. UEFI Load Option). > > > > The changes for V2 are: > > > > * Update examples to cover new syntax cases > > * Clarify that this proposal is for PCD values in DEC/INF/DSC/FDF > > files. Not just DEC/DSC. > > * Add support for multi character ASCII and UCS16 char constants > > and strings for VOID* PCD byte arrays > > * Add support for GUID() macro in VOID* PCD byte arrays > > * Add support for DEVICE_PATH() macro in VOID* PCD byte arrays > > * Add support for LABEL() and OFFSET_OF() macros in VOID* PCD > > byte arrays. > > * Add support for expressions to compute values. > > > > <proposal> > > > > I would like to propose more flexible value formats for PCDs > > in DEC/INF/DSC/FDF files and --pcd command line option. > > > > This would include the following additions: > > > > * ASCII character values using single quotes(e.g. 'A'). > > * ASCII multi-character values using single quotes(e.g. 'ABCD'). > > No null-terminator. > > * UCS16 character values using L and single quotes(e.g. L'A'). > > * UCS16 multi-character values using L and single quotes(e.g. L'ABCD'). > > No null-terminator. > > * Support TRUE/FALSE for UINT8/16/32/64 values > > * Support TRUE/FALSE in VOID* byte array > > * Support decimal values in VOID* byte array > > * Support ASCII single quote character values in VOID* byte arrays > > * Support byte arrays, ASCII string, Unicode String, > > ASCII multi-character strings, UCS16 multi-character strings for > > UINT8/16/32/64 values as long as they fit in the target type. > > * Support multi-character values using single quotes(e.g. 'ABCD') in > > VOID* byte arrays that are expanded to a sequence of byte values. > > * Support multi-character values using double quotes(e.g. "ABCD") in > > VOID* byte arrays that are expanded to a sequence of byte values. > > * Support UCS16 multi-character values using L and single quotes(e.g. > > L'ABCD') > > in VOID* byte arrays that are expanded to a sequence of byte values. > > * Support UCS16 multi-character values using L and double quotes(e.g. > > L"ABCD") > > in VOID* byte arrays that are expanded to a sequence of byte values. > > * Support UINT8(), UINT16, UINT32(), and UINT64() macros in > > VOID* byte arrays that are expanded to a sequence of byte values. > > * Support GUID() macro in VOID* byte arrays that are expanded to a > > sequence of 16 byte values. The GUID() operand supports Registry > > format GUIDs, C struct style GUIDs, and GUID C names. > > * Support DEVICE_PATH() macro in VOID* byte arrays that are expanded > > to a sequence of byte values. The DEVICE_PATH() operand is a > > double quoted string that follow the device path as string format > > defined in UEFI Specification 2.6 Section 9.6. > > * Support LABEL() macro in VOID* byte arrays to tag the byte > > offset of a location in a VOID* byte array. > > * Support OFFSET_OF() macro in VOID* byte arrays that returns the > > byte offset of a LABEL() declared in a VOID* byte array. > > * Support infix expressions that return an integer result that can > > be used to compute a PCD value with support for > > (, ), +, -, *, /, %, ~, &, |, ^ operators. > > > > Some examples of this additional flexibility are: > > BOOLEAN TRUE > > BOOLEAN FALSE > > BOOLEAN 0 > > BOOLEAN 1 > > BOOLEAN {0} > > BOOLEAN {1} > > UINT8 TRUE > > UINT8 FALSE > > UINT8 0x12 > > UINT8 12 > > UINT8 'A' > > UINT8 {TRUE} > > UINT8 {0x12} > > UINT8 {'A'} > > UINT8 (6 + 6) > > UINT16 TRUE > > UINT16 0x1234 > > UINT16 1234 > > UINT16 'AB' > > UINT16 "A" > > UINT16 L'A' > > UINT16 {0x34, TRUE} > > UINT16 {27, FALSE} > > UINT16 {'A', 'B'} > > UINT16 ('A' - 0x02) > > UINT32 FALSE > > UINT32 0x12345678 > > UINT32 12345678 > > UINT32 "ABC" > > UINT32 L"A" > > UINT32 'ABCD' > > UINT32 L'AB' > > UINT32 {0x12, 27, TRUE, 'A'} > > UINT32 ((5 * 0x100) / 0x10) > > UINT64 FALSE > > UINT64 0x1234567812345678 > > UINT64 1234567812345678 > > UINT64 "ABCDEFG" > > UINT64 L"ABC" > > UINT64 'ABCDEFGH' > > UINT64 L'ABCD' > > UINT64 {0x12, 27, TRUE, FALSE, 'A', 'B', 'C', 'D'} > > UINT64 (0x12345678 & 0xff00) > > VOID* {0x1, 0x2, 0x3} > > VOID* {10, 11, 12, 13, 14} > > VOID* {'X', 'Y', 'Z'} > > VOID* {TRUE, FALSE, FALSE, TRUE} > > VOID* {0x41, 0x42, 67, 68, 'E', 'F', TRUE, FALSE} > > VOID* { UINT8(7), UINT16(8), UINT32(0x27), UINT64(0x1234567812345678) } > > VOID* { 'AB', L'AB', "AB", L"AB" } > > VOID* { GUID("11E13869-1896-4A07-8B21-D8B23DD2A2B4") } > > VOID* { GUID({ 0x11e13869, 0x1896, 0x4a07, { 0x8b, 0x21, 0xd8, 0xb2, > > 0x3d, > > 0xd2, 0xa2, 0xb4 } }) } > > VOID* { GUID(gEfiBlockIoProtocolGuid) } > > VOID* { DEVICE_PATH("PciRoot(0)/Pci(0,0)") } > > VOID* { 0, 1, 2, LABEL(Start) 3, 4, 5, LABEL(End) 6, > > UINT8(OFFSET_OF(End) - > > OFFSET_OF(Start)) } > > > > </proposal> > > > > Mike > > > > _______________________________________________ > > edk2-devel mailing list > > [email protected] > > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

