Exemplo n.º 1
0
void acpi_ut_convert_string_to_uuid(char *in_string, u8 *uuid_buffer)
{
	u32 i;

	for (i = 0; i < UUID_BUFFER_LENGTH; i++) {
		uuid_buffer[i] =
		    (acpi_ut_ascii_char_to_hex
		     (in_string[acpi_gbl_map_to_uuid_offset[i]]) << 4);

		uuid_buffer[i] |=
		    acpi_ut_ascii_char_to_hex(in_string
					      [acpi_gbl_map_to_uuid_offset[i] +
					       1]);
	}
}
static u64 acpi_ut_strtoul_base16(char *string, u32 flags)
{
	int ascii_digit;
	u32 valid_digits = 1;
	u64 return_value = 0;

	/* Main loop: convert each ASCII byte in the input string */

	while (*string) {

		/* Check for overflow (32 or 64 bit) - return current converted value */

		if ((valid_digits > 16) ||
		    ((valid_digits > 8) && (flags & ACPI_STRTOUL_32BIT))) {
			goto exit;
		}

		ascii_digit = *string;
		if (!isxdigit(ascii_digit)) {

			/* Not Hex ASCII A-F, a-f, or 0-9, terminate */

			goto exit;
		}

		/* Convert and insert the hex digit */

		return_value =
		    (return_value << 4) |
		    acpi_ut_ascii_char_to_hex(ascii_digit);

		string++;
		valid_digits++;
	}

exit:
	return (return_value);
}