1313a0c13SJung-uk Kim /****************************************************************************** 2313a0c13SJung-uk Kim * 3313a0c13SJung-uk Kim * Module Name: utuuid -- UUID support functions 4313a0c13SJung-uk Kim * 5313a0c13SJung-uk Kim *****************************************************************************/ 6313a0c13SJung-uk Kim 7313a0c13SJung-uk Kim /* 81c0e1b6dSJung-uk Kim * Copyright (C) 2000 - 2015, Intel Corp. 9313a0c13SJung-uk Kim * All rights reserved. 10313a0c13SJung-uk Kim * 11313a0c13SJung-uk Kim * Redistribution and use in source and binary forms, with or without 12313a0c13SJung-uk Kim * modification, are permitted provided that the following conditions 13313a0c13SJung-uk Kim * are met: 14313a0c13SJung-uk Kim * 1. Redistributions of source code must retain the above copyright 15313a0c13SJung-uk Kim * notice, this list of conditions, and the following disclaimer, 16313a0c13SJung-uk Kim * without modification. 17313a0c13SJung-uk Kim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18313a0c13SJung-uk Kim * substantially similar to the "NO WARRANTY" disclaimer below 19313a0c13SJung-uk Kim * ("Disclaimer") and any redistribution must be conditioned upon 20313a0c13SJung-uk Kim * including a substantially similar Disclaimer requirement for further 21313a0c13SJung-uk Kim * binary redistribution. 22313a0c13SJung-uk Kim * 3. Neither the names of the above-listed copyright holders nor the names 23313a0c13SJung-uk Kim * of any contributors may be used to endorse or promote products derived 24313a0c13SJung-uk Kim * from this software without specific prior written permission. 25313a0c13SJung-uk Kim * 26313a0c13SJung-uk Kim * Alternatively, this software may be distributed under the terms of the 27313a0c13SJung-uk Kim * GNU General Public License ("GPL") version 2 as published by the Free 28313a0c13SJung-uk Kim * Software Foundation. 29313a0c13SJung-uk Kim * 30313a0c13SJung-uk Kim * NO WARRANTY 31313a0c13SJung-uk Kim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32313a0c13SJung-uk Kim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33313a0c13SJung-uk Kim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34313a0c13SJung-uk Kim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35313a0c13SJung-uk Kim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36313a0c13SJung-uk Kim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37313a0c13SJung-uk Kim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38313a0c13SJung-uk Kim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39313a0c13SJung-uk Kim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40313a0c13SJung-uk Kim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41313a0c13SJung-uk Kim * POSSIBILITY OF SUCH DAMAGES. 42313a0c13SJung-uk Kim */ 43313a0c13SJung-uk Kim 44313a0c13SJung-uk Kim #include <contrib/dev/acpica/include/acpi.h> 45313a0c13SJung-uk Kim #include <contrib/dev/acpica/include/accommon.h> 46313a0c13SJung-uk Kim 47313a0c13SJung-uk Kim #define _COMPONENT ACPI_COMPILER 48313a0c13SJung-uk Kim ACPI_MODULE_NAME ("utuuid") 49313a0c13SJung-uk Kim 50313a0c13SJung-uk Kim 51*7cf3e94aSJung-uk Kim #if (defined ACPI_ASL_COMPILER || defined ACPI_DISASSEMBLER || defined ACPI_EXEC_APP || defined ACPI_HELP_APP) 52313a0c13SJung-uk Kim /* 53313a0c13SJung-uk Kim * UUID support functions. 54313a0c13SJung-uk Kim * 55313a0c13SJung-uk Kim * This table is used to convert an input UUID ascii string to a 16 byte 56313a0c13SJung-uk Kim * buffer and the reverse. The table maps a UUID buffer index 0-15 to 57313a0c13SJung-uk Kim * the index within the 36-byte UUID string where the associated 2-byte 58313a0c13SJung-uk Kim * hex value can be found. 59313a0c13SJung-uk Kim * 60313a0c13SJung-uk Kim * 36-byte UUID strings are of the form: 61313a0c13SJung-uk Kim * aabbccdd-eeff-gghh-iijj-kkllmmnnoopp 62313a0c13SJung-uk Kim * Where aa-pp are one byte hex numbers, made up of two hex digits 63313a0c13SJung-uk Kim * 64313a0c13SJung-uk Kim * Note: This table is basically the inverse of the string-to-offset table 65313a0c13SJung-uk Kim * found in the ACPI spec in the description of the ToUUID macro. 66313a0c13SJung-uk Kim */ 67313a0c13SJung-uk Kim const UINT8 AcpiGbl_MapToUuidOffset[UUID_BUFFER_LENGTH] = 68313a0c13SJung-uk Kim { 69313a0c13SJung-uk Kim 6,4,2,0,11,9,16,14,19,21,24,26,28,30,32,34 70313a0c13SJung-uk Kim }; 71313a0c13SJung-uk Kim 72313a0c13SJung-uk Kim 73313a0c13SJung-uk Kim /******************************************************************************* 74313a0c13SJung-uk Kim * 75313a0c13SJung-uk Kim * FUNCTION: AcpiUtConvertStringToUuid 76313a0c13SJung-uk Kim * 77313a0c13SJung-uk Kim * PARAMETERS: InString - 36-byte formatted UUID string 78313a0c13SJung-uk Kim * UuidBuffer - Where the 16-byte UUID buffer is returned 79313a0c13SJung-uk Kim * 80313a0c13SJung-uk Kim * RETURN: None. Output data is returned in the UuidBuffer 81313a0c13SJung-uk Kim * 82313a0c13SJung-uk Kim * DESCRIPTION: Convert a 36-byte formatted UUID string to 16-byte UUID buffer 83313a0c13SJung-uk Kim * 84313a0c13SJung-uk Kim ******************************************************************************/ 85313a0c13SJung-uk Kim 86313a0c13SJung-uk Kim void 87313a0c13SJung-uk Kim AcpiUtConvertStringToUuid ( 88313a0c13SJung-uk Kim char *InString, 89313a0c13SJung-uk Kim UINT8 *UuidBuffer) 90313a0c13SJung-uk Kim { 91313a0c13SJung-uk Kim UINT32 i; 92313a0c13SJung-uk Kim 93313a0c13SJung-uk Kim 94313a0c13SJung-uk Kim for (i = 0; i < UUID_BUFFER_LENGTH; i++) 95313a0c13SJung-uk Kim { 96313a0c13SJung-uk Kim UuidBuffer[i] = 97313a0c13SJung-uk Kim (AcpiUtAsciiCharToHex (InString[AcpiGbl_MapToUuidOffset[i]]) << 4); 98313a0c13SJung-uk Kim 99313a0c13SJung-uk Kim UuidBuffer[i] |= 100313a0c13SJung-uk Kim AcpiUtAsciiCharToHex (InString[AcpiGbl_MapToUuidOffset[i] + 1]); 101313a0c13SJung-uk Kim } 102313a0c13SJung-uk Kim } 103*7cf3e94aSJung-uk Kim #endif 104