From patchwork Sat Jan 17 01:14:31 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1569 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1768612540; bh=3Y2l+6BqmCojgxuEeYOjssd5pC2kdp+St+t5S0x5G4Q=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=uqfnkohRft9b0TrlJrimHGQG6gG8OojrQ8gOyzB0cneCzdZj1I3lj7K2hOsshc1nn yf5HVhN38xuiaAiWXVlvpQRPnskLTy15op9SygczAnRBXdLSBc2EqdA/hdz6++ubMe M1M8Ip3BQ7wWDIMtXsXngVNiNkjZ2CHnZZvzAqJ38J4xXX3Yts/qpUE3LIBeUvSMj4 z4Y/NjEcbkjVeKdn9kYVFNuJuu8DCzMUvfxrN+nrA7sDjVfieoEvnI9nKwJ8k7Cggi 0/qTTluq2HSqW9b4FezWl0O+6oX9CM621jC0sa+FcmrFwilJvnbzbUhm2C4rHgj2Sf DmfnZP1d/pmKQ== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id A156769405 for ; Fri, 16 Jan 2026 18:15:40 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id 2wE3RXiMUWt5 for ; Fri, 16 Jan 2026 18:15:40 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1768612540; bh=3Y2l+6BqmCojgxuEeYOjssd5pC2kdp+St+t5S0x5G4Q=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=uqfnkohRft9b0TrlJrimHGQG6gG8OojrQ8gOyzB0cneCzdZj1I3lj7K2hOsshc1nn yf5HVhN38xuiaAiWXVlvpQRPnskLTy15op9SygczAnRBXdLSBc2EqdA/hdz6++ubMe M1M8Ip3BQ7wWDIMtXsXngVNiNkjZ2CHnZZvzAqJ38J4xXX3Yts/qpUE3LIBeUvSMj4 z4Y/NjEcbkjVeKdn9kYVFNuJuu8DCzMUvfxrN+nrA7sDjVfieoEvnI9nKwJ8k7Cggi 0/qTTluq2HSqW9b4FezWl0O+6oX9CM621jC0sa+FcmrFwilJvnbzbUhm2C4rHgj2Sf DmfnZP1d/pmKQ== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 8F976693F4 for ; Fri, 16 Jan 2026 18:15:40 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1768612539; bh=y4lyrI2oBRNPMHiLPLoA8d1jVgg1g5aqvhZV4T1FQQI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GtcbaFS7kA3Nsf5ym/T0ppyPVL7Jti+0QzcFfSFy+Bmf8n8pbjJPMMjXROI4fs1Yj Bt3e8oJRh58Yat/omtIRSHsVIvjIe2vd91OnFBPjjd/vPr3rFLo8oERy/ZwdJ9JeuZ hR7VQ5knT2nxGgtJ8lOBTr569Oj6n9/jwtghUBRLeyz7u2xwcm9XRRFyAlMuuobUeY tBRLhAW1yw4GrzKzVQa+4zuD9GvKpRIbfYSqZK7XoTVwa6Ege+H42th/MOav1PMUmF RLKJY1Zvh0jTASiySnQOK8EgKuxPMM6kHdOkq/htDWqeLtJDttsT9sTUQ63vVJPai/ fkE/zB/BbHpSg== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 046A26913F; Fri, 16 Jan 2026 18:15:39 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id XecxUUB5FznQ; Fri, 16 Jan 2026 18:15:38 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1768612535; bh=Yxoub0DKyIAJEzy2lY2dYGYsXkuggH+UJ0+K0NOltX0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GJ/MdZeDk/eWeEbJWSHJ7Fimip0KJBDM8UU6WrdVJUhCrgmwiPIIF+2/kLE4aif/P cMgCnCMstiLNTRjzQqZa+u+sdWLyXDARHjAEGiKSe44enTlQJk+uIzwcl7fT/trAq5 EIHTcXgisPYzQqJpQpeFX5JJ/3rKiVpi6qz+PXy0MS7ZzeDU2fpO4v8MAez/RU2ZPS rBECjW/k2MK+I/Q+7FcZlbt3T1S+pzBJERPO6o2ZLIkQX38UiX3n2w/shYMInC3XKf M2jfNeHbvUl1EypXaP/JGHYaAsK0W67qrp5n/N93Ur2u3Vi82n+hwT09F/cTg0eDxn 74QoNQ8J4Pm9Q== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id AF460693E0; Fri, 16 Jan 2026 18:15:34 -0700 (MST) From: Simon Glass To: U-Boot Concept Date: Fri, 16 Jan 2026 18:14:31 -0700 Message-ID: <20260117011448.3007171-10-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260117011448.3007171-1-sjg@u-boot.org> References: <20260117011448.3007171-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: CLNUXDIJDTKMFQCPSBKTDJWUQRVZJN52 X-Message-ID-Hash: CLNUXDIJDTKMFQCPSBKTDJWUQRVZJN52 X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Simon Glass , "Claude Opus 4 . 5" X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 09/19] linux: Add uuid.h header with UUID/GUID types List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass Move UUID and GUID type definitions to a dedicated header file that mirrors the Linux kernel organisation. uuid.h provides: - uuid_t type for big-endian UUIDs - guid_t type for little-endian GUIDs - UUID_SIZE and UUID_STRING_LEN constants - GUID_INIT() and UUID_INIT() macros - Comparison functions: guid_equal(), uuid_equal() - Copy functions: guid_copy(), uuid_copy() - Import/export: import_uuid(), export_uuid() These types are used by ext4l for filesystem UUID handling. Co-developed-by: Claude Opus 4.5 Signed-off-by: Simon Glass --- fs/ext4l/ext4_uboot.h | 6 +-- include/linux/uuid.h | 120 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+), 4 deletions(-) create mode 100644 include/linux/uuid.h diff --git a/fs/ext4l/ext4_uboot.h b/fs/ext4l/ext4_uboot.h index 9423c92169e..3ce94750fcf 100644 --- a/fs/ext4l/ext4_uboot.h +++ b/fs/ext4l/ext4_uboot.h @@ -87,6 +87,7 @@ #include #include #include +#include /* atomic_dec_if_positive, atomic_add_unless, etc. are now in asm-generic/atomic.h */ @@ -490,10 +491,7 @@ struct fstrim_range { /* SB_RDONLY, SB_I_VERSION, etc. superblock flags are in linux/fs.h */ -/* UUID type */ -typedef struct { - __u8 b[16]; -} uuid_t; +/* uuid_t is now in linux/uuid.h */ /* Forward declarations for super_block */ struct super_operations; diff --git a/include/linux/uuid.h b/include/linux/uuid.h new file mode 100644 index 00000000000..810cf1d735d --- /dev/null +++ b/include/linux/uuid.h @@ -0,0 +1,120 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * UUID/GUID definitions for U-Boot + * + * Based on Linux uuid.h + */ +#ifndef _LINUX_UUID_H_ +#define _LINUX_UUID_H_ + +#include +#include + +#define UUID_SIZE 16 + +/** + * typedef guid_t - GUID type (little-endian) + * + * GUIDs are stored in little-endian byte order. + */ +typedef struct { + __u8 b[UUID_SIZE]; +} guid_t; + +/** + * typedef uuid_t - UUID type (big-endian / network order) + * + * UUIDs are stored in big-endian byte order. + */ +typedef struct { + __u8 b[UUID_SIZE]; +} uuid_t; + +/** + * GUID_INIT - initialise a GUID (little-endian) + */ +#define GUID_INIT(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7) \ +((guid_t) \ +{{ (a) & 0xff, ((a) >> 8) & 0xff, ((a) >> 16) & 0xff, ((a) >> 24) & 0xff, \ + (b) & 0xff, ((b) >> 8) & 0xff, \ + (c) & 0xff, ((c) >> 8) & 0xff, \ + (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }}) + +/** + * UUID_INIT - initialise a UUID (big-endian) + */ +#define UUID_INIT(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7) \ +((uuid_t) \ +{{ ((a) >> 24) & 0xff, ((a) >> 16) & 0xff, ((a) >> 8) & 0xff, (a) & 0xff, \ + ((b) >> 8) & 0xff, (b) & 0xff, \ + ((c) >> 8) & 0xff, (c) & 0xff, \ + (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }}) + +/* Length of UUID string without NUL */ +#define UUID_STRING_LEN 36 + +/** + * guid_equal - compare two GUIDs + * @u1: first GUID + * @u2: second GUID + * + * Return: true if equal, false otherwise + */ +static inline bool guid_equal(const guid_t *u1, const guid_t *u2) +{ + return memcmp(u1, u2, sizeof(guid_t)) == 0; +} + +/** + * guid_copy - copy a GUID + * @dst: destination + * @src: source + */ +static inline void guid_copy(guid_t *dst, const guid_t *src) +{ + memcpy(dst, src, sizeof(guid_t)); +} + +/** + * uuid_equal - compare two UUIDs + * @u1: first UUID + * @u2: second UUID + * + * Return: true if equal, false otherwise + */ +static inline bool uuid_equal(const uuid_t *u1, const uuid_t *u2) +{ + return memcmp(u1, u2, sizeof(uuid_t)) == 0; +} + +/** + * uuid_copy - copy a UUID + * @dst: destination + * @src: source + */ +static inline void uuid_copy(uuid_t *dst, const uuid_t *src) +{ + memcpy(dst, src, sizeof(uuid_t)); +} + +/** + * import_uuid - import a UUID from raw bytes + * @dst: destination UUID + * @src: source bytes + */ +static inline void import_uuid(uuid_t *dst, const __u8 *src) +{ + memcpy(dst, src, sizeof(uuid_t)); +} + +/** + * export_uuid - export a UUID to raw bytes + * @dst: destination bytes + * @src: source UUID + */ +static inline void export_uuid(__u8 *dst, const uuid_t *src) +{ + memcpy(dst, src, sizeof(uuid_t)); +} + +#endif /* _LINUX_UUID_H_ */