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/* Use UUID_STR_LEN + 1 for string space */
  27#define UUID_STR_LEN            36
  28#define UUID_BIN_LEN            sizeof(struct uuid)
  29
  30#define UUID_VERSION_MASK       0xf000
  31#define UUID_VERSION_SHIFT      12
  32#define UUID_VERSION            0x4
  33
  34#define UUID_VARIANT_MASK       0xc0
  35#define UUID_VARIANT_SHIFT      7
  36#define UUID_VARIANT            0x1
  37
  38int uuid_str_valid(const char *uuid);
  39int uuid_str_to_bin(const char *uuid_str, unsigned char *uuid_bin,
  40                    int str_format);
  41void uuid_bin_to_str(const unsigned char *uuid_bin, char *uuid_str,
  42                     int str_format);
  43int uuid_guid_get_bin(const char *guid_str, unsigned char *guid_bin);
  44const char *uuid_guid_get_str(const unsigned char *guid_bin);
  45void gen_rand_uuid(unsigned char *uuid_bin);
  46void gen_rand_uuid_str(char *uuid_str, int str_format);
  47#endif
  48