On Fri, 2016-02-26 at 16:11 +0200, Andy Shevchenko wrote: > On Thu, 2016-02-18 at 01:03 +0100, Rafael J. Wysocki wrote: > > > > On Wednesday, February 17, 2016 02:17:24 PM Andy Shevchenko wrote: > > > > > > Switch to use a generic UUID API instead of custom approach. It > > > allows to > > > define UUIDs, compare them, and validate. > [] >
Summon initial author of the UUID library. Summary: the API of comparison functions is rather strange. What the point to not take pointers directly? (Moreover I hope compiler too clever not to make a copy of constant arguments there) I could only imagine the case you are trying to avoid temporary variables for constants like NULL_UUID. Issue with this is the ugliness in the users of that, in particularly present in ACPI (drivers/acpi/apei/ghes.c). I would like to have more clear interface for that. Perhaps we may add something like cmp_p(pointer, non-pointer); cmp_pp(pointer, pointer); to not break existing API for now. It would be useful for many cases in the kernel. > > > > > > > > +static const uuid_le ads_uuid = > > > + UUID_LE(0xdbb8e3e6, 0x5886, 0x4ba6, > > > + 0x87, 0x95, 0x13, 0x19, 0xf5, 0x2a, 0x96, 0x6b); > > > > > > static bool acpi_enumerate_nondev_subnodes(acpi_handle scope, > > > const union > > > acpi_object > > > *desc, > > > @@ -138,7 +136,7 @@ static bool > > > acpi_enumerate_nondev_subnodes(acpi_handle scope, > > > || links->type != ACPI_TYPE_PACKAGE) > > > break; > > > > > > - if (memcmp(uuid->buffer.pointer, ads_uuid, > > > sizeof(ads_uuid))) > > > + if (uuid_le_cmp(*(uuid_le *)uuid->buffer.pointer, > > > ads_uuid)) > > Maybe it's too late, but I don't quite understand the pointer > > manipulations here. > > > > I can see why you need a type conversion (although it looks ugly), > > but why do you > > need to dereference it too? > The function takes that kind of type on input. The other variants are > not compiled. > Perhaps we better change uuid_{lb}e_cmp() first to take normal > pointers, though I think the initial idea was to get type checking at > compile time. > -- Andy Shevchenko <andriy.shevche...@linux.intel.com> Intel Finland Oy