root/drivers/acpi/acpica/utuuid.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. acpi_ut_convert_string_to_uuid

   1 // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
   2 /******************************************************************************
   3  *
   4  * Module Name: utuuid -- UUID support functions
   5  *
   6  * Copyright (C) 2000 - 2019, Intel Corp.
   7  *
   8  *****************************************************************************/
   9 
  10 #include <acpi/acpi.h>
  11 #include "accommon.h"
  12 
  13 #define _COMPONENT          ACPI_COMPILER
  14 ACPI_MODULE_NAME("utuuid")
  15 
  16 #if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_HELP_APP)
  17 /*
  18  * UUID support functions.
  19  *
  20  * This table is used to convert an input UUID ascii string to a 16 byte
  21  * buffer and the reverse. The table maps a UUID buffer index 0-15 to
  22  * the index within the 36-byte UUID string where the associated 2-byte
  23  * hex value can be found.
  24  *
  25  * 36-byte UUID strings are of the form:
  26  *     aabbccdd-eeff-gghh-iijj-kkllmmnnoopp
  27  * Where aa-pp are one byte hex numbers, made up of two hex digits
  28  *
  29  * Note: This table is basically the inverse of the string-to-offset table
  30  * found in the ACPI spec in the description of the to_UUID macro.
  31  */
  32 const u8 acpi_gbl_map_to_uuid_offset[UUID_BUFFER_LENGTH] = {
  33         6, 4, 2, 0, 11, 9, 16, 14, 19, 21, 24, 26, 28, 30, 32, 34
  34 };
  35 
  36 /*******************************************************************************
  37  *
  38  * FUNCTION:    acpi_ut_convert_string_to_uuid
  39  *
  40  * PARAMETERS:  in_string           - 36-byte formatted UUID string
  41  *              uuid_buffer         - Where the 16-byte UUID buffer is returned
  42  *
  43  * RETURN:      None. Output data is returned in the uuid_buffer
  44  *
  45  * DESCRIPTION: Convert a 36-byte formatted UUID string to 16-byte UUID buffer
  46  *
  47  ******************************************************************************/
  48 
  49 void acpi_ut_convert_string_to_uuid(char *in_string, u8 *uuid_buffer)
  50 {
  51         u32 i;
  52 
  53         for (i = 0; i < UUID_BUFFER_LENGTH; i++) {
  54                 uuid_buffer[i] =
  55                     (acpi_ut_ascii_char_to_hex
  56                      (in_string[acpi_gbl_map_to_uuid_offset[i]]) << 4);
  57 
  58                 uuid_buffer[i] |=
  59                     acpi_ut_ascii_char_to_hex(in_string
  60                                               [acpi_gbl_map_to_uuid_offset[i] +
  61                                                1]);
  62         }
  63 }
  64 #endif

/* [<][>][^][v][top][bottom][index][help] */