Re: [PATCH v1] platform/x86: wmi: Switch to use new generic UUID API

From: Christoph Hellwig
Date: Wed Aug 30 2017 - 08:25:51 EST


On Sun, Aug 13, 2017 at 08:34:56AM -0700, Andy Lutomirski wrote:
> > This specification defines a Uniform Resource Name namespace for
> > UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally
> > Unique IDentifier).
>
> No, that still matches what I thought I knew: "UUID" and "GUID" are synonyms.

Well, in practice they aren't - wintel GUID are big endian, and
RFC4122 clearly states it is big endian, although it uses the term
"network byte order":

In the absence of explicit application or presentation protocol
specification to the contrary, a UUID is encoded as a 128-bit object,
as follows:

The fields are encoded as 16 octets, with the sizes and order of the
fields defined above, and with each field encoded with the Most
Significant Byte first (known as network byte order). Note that the
field names, particularly for multiplexed fields, follow historical
practice.

So yes, it is big endian, and it is defined an a sequence of octets.

>
> typedef whatever uuid_t;
> typedef something_different uuid_le; /* which already existed */
>
> extern void uuid_le_to_uuid(uuid_t *out, uuid_le *in);
> extern void uuid_to_uuid_le(...);

What's the point of converting between a RFC4122 UUID and a Wintel
GUID? They are used for entirely different things.