uboot/include/uuid.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2/*
   3 * Copyright (C) 2014 Samsung Electronics
   4 * Przemyslaw Marczak <p.marczak@samsung.com>
   5 */
   6#ifndef __UUID_H__
   7#define __UUID_H__
   8
   9#include <linux/bitops.h>
  10
  11/* This is structure is in big-endian */
  12struct uuid {
  13        unsigned int time_low;
  14        unsigned short time_mid;
  15        unsigned short time_hi_and_version;
  16        unsigned char clock_seq_hi_and_reserved;
  17        unsigned char clock_seq_low;
  18        unsigned char node[6];
  19} __packed;
  20
  21/* Bits of a bitmask specifying the output format for GUIDs */
  22#define UUID_STR_FORMAT_STD     0
  23#define UUID_STR_FORMAT_GUID    BIT(0)
  24#define UUID_STR_UPPER_CASE     BIT(1)
  25
  26#define UUID_STR_LEN            36
  27#define UUID_BIN_LEN            sizeof(struct uuid)
  28
  29#define UUID_VERSION_MASK       0xf000
  30#define UUID_VERSION_SHIFT      12
  31#define UUID_VERSION            0x4
  32
  33#define UUID_VARIANT_MASK       0xc0
  34#define UUID_VARIANT_SHIFT      7
  35#define UUID_VARIANT            0x1
  36
  37int uuid_str_valid(const char *uuid);
  38int uuid_str_to_bin(char *uuid_str, unsigned char *uuid_bin, int str_format);
  39void uuid_bin_to_str(unsigned char *uuid_bin, char *uuid_str, int str_format);
  40#ifdef CONFIG_PARTITION_TYPE_GUID
  41int uuid_guid_get_bin(const char *guid_str, unsigned char *guid_bin);
  42int uuid_guid_get_str(unsigned char *guid_bin, char *guid_str);
  43#endif
  44void gen_rand_uuid(unsigned char *uuid_bin);
  45void gen_rand_uuid_str(char *uuid_str, int str_format);
  46#endif
  47