xref: /aosp_15_r20/external/arm-trusted-firmware/include/tools_share/uuid.h (revision 54fd6939e177f8ff529b10183254802c76df6d08)
1*54fd6939SJiyong Park /*-
2*54fd6939SJiyong Park  * Copyright (c) 2002 Marcel Moolenaar
3*54fd6939SJiyong Park  * All rights reserved.
4*54fd6939SJiyong Park  *
5*54fd6939SJiyong Park  * Redistribution and use in source and binary forms, with or without
6*54fd6939SJiyong Park  * modification, are permitted provided that the following conditions
7*54fd6939SJiyong Park  * are met:
8*54fd6939SJiyong Park  *
9*54fd6939SJiyong Park  * 1. Redistributions of source code must retain the above copyright
10*54fd6939SJiyong Park  *    notice, this list of conditions and the following disclaimer.
11*54fd6939SJiyong Park  * 2. Redistributions in binary form must reproduce the above copyright
12*54fd6939SJiyong Park  *    notice, this list of conditions and the following disclaimer in the
13*54fd6939SJiyong Park  *    documentation and/or other materials provided with the distribution.
14*54fd6939SJiyong Park  *
15*54fd6939SJiyong Park  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16*54fd6939SJiyong Park  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17*54fd6939SJiyong Park  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18*54fd6939SJiyong Park  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19*54fd6939SJiyong Park  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20*54fd6939SJiyong Park  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21*54fd6939SJiyong Park  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22*54fd6939SJiyong Park  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23*54fd6939SJiyong Park  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24*54fd6939SJiyong Park  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25*54fd6939SJiyong Park  *
26*54fd6939SJiyong Park  * $FreeBSD$
27*54fd6939SJiyong Park  */
28*54fd6939SJiyong Park 
29*54fd6939SJiyong Park /*
30*54fd6939SJiyong Park  * Portions copyright (c) 2014-2020, ARM Limited and Contributors.
31*54fd6939SJiyong Park  * All rights reserved.
32*54fd6939SJiyong Park  */
33*54fd6939SJiyong Park 
34*54fd6939SJiyong Park #ifndef UUID_H
35*54fd6939SJiyong Park #define UUID_H
36*54fd6939SJiyong Park 
37*54fd6939SJiyong Park /* Length of a node address (an IEEE 802 address). */
38*54fd6939SJiyong Park #define	_UUID_NODE_LEN		6
39*54fd6939SJiyong Park 
40*54fd6939SJiyong Park /* Length of UUID string including dashes. */
41*54fd6939SJiyong Park #define _UUID_STR_LEN		36
42*54fd6939SJiyong Park 
43*54fd6939SJiyong Park /*
44*54fd6939SJiyong Park  * See also:
45*54fd6939SJiyong Park  *      http://www.opengroup.org/dce/info/draft-leach-uuids-guids-01.txt
46*54fd6939SJiyong Park  *      http://www.opengroup.org/onlinepubs/009629399/apdxa.htm
47*54fd6939SJiyong Park  *
48*54fd6939SJiyong Park  * A DCE 1.1 compatible source representation of UUIDs.
49*54fd6939SJiyong Park  */
50*54fd6939SJiyong Park struct uuid {
51*54fd6939SJiyong Park 	uint8_t		time_low[4];
52*54fd6939SJiyong Park 	uint8_t		time_mid[2];
53*54fd6939SJiyong Park 	uint8_t		time_hi_and_version[2];
54*54fd6939SJiyong Park 	uint8_t		clock_seq_hi_and_reserved;
55*54fd6939SJiyong Park 	uint8_t		clock_seq_low;
56*54fd6939SJiyong Park 	uint8_t		node[_UUID_NODE_LEN];
57*54fd6939SJiyong Park };
58*54fd6939SJiyong Park 
59*54fd6939SJiyong Park struct efi_guid {
60*54fd6939SJiyong Park 	uint32_t time_low;
61*54fd6939SJiyong Park 	uint16_t time_mid;
62*54fd6939SJiyong Park 	uint16_t time_hi_and_version;
63*54fd6939SJiyong Park 	uint8_t clock_seq_and_node[8];
64*54fd6939SJiyong Park };
65*54fd6939SJiyong Park 
66*54fd6939SJiyong Park union uuid_helper_t {
67*54fd6939SJiyong Park 	struct uuid uuid_struct;
68*54fd6939SJiyong Park 	struct efi_guid efi_guid;
69*54fd6939SJiyong Park };
70*54fd6939SJiyong Park 
71*54fd6939SJiyong Park /* XXX namespace pollution? */
72*54fd6939SJiyong Park typedef struct uuid uuid_t;
73*54fd6939SJiyong Park 
74*54fd6939SJiyong Park #endif /* UUID_H */
75