tidy up guid on linux

This commit is contained in:
Nikita Smith
2024-11-07 14:49:38 -08:00
parent d177e39a54
commit d114a0e961
2 changed files with 13 additions and 12 deletions
+10 -6
View File
@@ -489,13 +489,17 @@ struct TxtRng
////////////////////////////////
//~ Globally Unique Ids
typedef struct Guid Guid;
struct Guid
typedef union Guid Guid;
union Guid
{
U32 data1;
U16 data2;
U16 data3;
U8 data4[8];
struct
{
U32 data1;
U16 data2;
U16 data3;
U8 data4[8];
};
U8 v[16];
};
StaticAssert(sizeof(Guid) == 16, g_guid_size_check);
+3 -6
View File
@@ -1133,14 +1133,11 @@ os_safe_call(OS_ThreadFunctionType *func, OS_ThreadFunctionType *fail_handler, v
////////////////////////////////
//~ rjf: @os_hooks GUIDs (Implemented Per-OS)
internal OS_Guid
internal Guid
os_make_guid(void)
{
U8 random_bytes[16] = {0};
StaticAssert(sizeof(random_bytes) == sizeof(OS_Guid), os_lnx_guid_size_check);
getrandom(random_bytes, sizeof(random_bytes), 0);
OS_Guid guid = {0};
MemoryCopy(&guid, random_bytes, sizeof(random_bytes));
Guid guid = {0};
getrandom(guid.v, sizeof(guid.v), 0);
guid.data3 &= 0x0fff;
guid.data3 |= (4 << 12);
guid.data4[0] &= 0x3f;