qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v5 13/20] hw/acpi/aml-build: Add ToUUID macro


From: Shannon Zhao
Subject: Re: [Qemu-devel] [PATCH v5 13/20] hw/acpi/aml-build: Add ToUUID macro
Date: Tue, 28 Apr 2015 17:48:50 +0800
User-agent: Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Thunderbird/24.4.0

On 2015/4/28 17:35, Igor Mammedov wrote:
> On Tue, 28 Apr 2015 16:52:19 +0800
> Shannon Zhao <address@hidden> wrote:
> 
>> On 2015/4/28 16:15, Igor Mammedov wrote:
>>>>> btw:
>>>>>>> whole thing might be simpler if an intermediate conversion is avoided,
>>>>>>> just pack buffer as in spec byte by byte:
>>>>>>>
>>>>>>> /* format: aabbccdd-eeff-gghh-iijj-kkllmmnnoopp */
>>>>>>> assert(strlen(uuid) == ...);
>>>>>>> build_append_byte(var->buf, HEX2BYTE(uuid[3]); /* dd */
>>>>>
>>>>> use build_append_byte(var->buf, HEX2BYTE(uuid + 7); ?
>>>>>
>>>>>>> build_append_byte(var->buf, HEX2BYTE(uuid[2]); /* cc */
>>>>>
>>>>> use build_append_byte(var->buf, HEX2BYTE(uuid + 5); ?
>>> if you mean hyphens /-/ then they are not encoded,
>>> but you surely can add checks for them to make sure that
>>> UUID format is as expected.
>>>
>>
>> I mean uuid[3] points to b not dd. Maybe use following way:
>>
>> static uint8_t Hex2Byte(char *src)
> or even better:
> Hex2Byte(char *src, byte_idx)
>   and do pointer arithmetic inside
> 
> [...]
>> build_append_byte(var->buf, Hex2Byte(uuid + (3 * 2))); /* dd */
> build_append_byte(var->buf, Hex2Byte(uuid, 3)); /* dd - at offset 00 */
> build_append_byte(var->buf, Hex2Byte(uuid, 2)); /* cc - at offset 01 */
> ...
> 
Yes, it's better to first four bytes. But there are hyphens /-/, for
offset 04, 05 and etc it doesn't work. We can't use following expression:

build_append_byte(var->buf, Hex2Byte(uuid, 5)); /* ff - at offset 04 */
build_append_byte(var->buf, Hex2Byte(uuid, 4)); /* ee - at offset 05 */
...





reply via email to

[Prev in Thread] Current Thread [Next in Thread]