Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1641842
| From | Christoph Hellwig <hch@lst.de> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 05/17] uuid: add the v1 layout to uuid_t |
| Date | 2017-05-15 17:50 +0200 |
| Message-ID | <tHqpZ-1AI-41@gated-at.bofh.it> (permalink) |
| References | <tHqpX-1AI-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Turn the content of uuid_t into a union and add the fields for the v1
interpretation to it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: David Howells <dhowells@redhat.com>
---
include/uapi/linux/uuid.h | 39 +++++++++++++++++++++++++++++++++------
1 file changed, 33 insertions(+), 6 deletions(-)
diff --git a/include/uapi/linux/uuid.h b/include/uapi/linux/uuid.h
index c31fc94695b9..6b6a583ec1fe 100644
--- a/include/uapi/linux/uuid.h
+++ b/include/uapi/linux/uuid.h
@@ -32,15 +32,42 @@ typedef struct {
(d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }})
typedef struct {
- __u8 b[16];
+ union {
+ __u8 b[16];
+
+ /*
+ * V1 (time-based) UUID definition [RFC 4122]:
+ * - the timestamp is a 60-bit value, split 32/16/12, and goes
+ * in 100ns increments since midnight 15th October 1582
+ * - add UUID_TO_UNIX_TIME to convert unix time in 100ns
+ * units to UUID time
+ * - the clock sequence is a 14-bit counter to avoid duplicate
+ * times
+ */
+ struct {
+ __be32 time_low;
+ __be16 time_mid;
+ __be16 time_hi_and_version;
+#define UUID_TO_UNIX_TIME 0x01b21dd213814000ULL
+#define UUID_TIMEHI_MASK 0x0fff
+#define UUID_VERSION_TIME 0x1000 /* time-based UUID */
+#define UUID_VERSION_NAME 0x3000 /* name-based UUID */
+#define UUID_VERSION_RANDOM 0x4000 /* (pseudo-)random generated UUID */
+ u8 clock_seq_hi_and_reserved;
+#define UUID_CLOCKHI_MASK 0x3f
+#define UUID_VARIANT_STD 0x80
+ u8 clock_seq_low;
+ u8 node[6];
+ } v1;
+ };
} uuid_t;
-#define UUID(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, \
+#define UUID(a, _b, c, d0, d1, d2, d3, d4, d5, d6, d7) \
+{ .b = { \
+ ((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) }})
+ (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }}
/* backwards compatibility, don't use in new code */
typedef guid_t uuid_le;
--
2.11.0
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
cleanup UUID types V2 Christoph Hellwig <hch@lst.de> - 2017-05-15 17:50 +0200 [PATCH 05/17] uuid: add the v1 layout to uuid_t Christoph Hellwig <hch@lst.de> - 2017-05-15 17:50 +0200 [PATCH 11/17] uuid: remove struct uuid_v1 Christoph Hellwig <hch@lst.de> - 2017-05-15 17:50 +0200 [PATCH 04/17] uuid: don't export guid_index and uuid_index Christoph Hellwig <hch@lst.de> - 2017-05-15 17:50 +0200 [PATCH 10/17] afs: switch to use uuid_t and uuid_gen Christoph Hellwig <hch@lst.de> - 2017-05-15 17:50 +0200 [PATCH 16/17] ima/policy: switch to use uuid_t Christoph Hellwig <hch@lst.de> - 2017-05-15 17:50 +0200
csiph-web