power_play/src/uid.c
2025-04-24 13:21:36 -05:00

27 lines
609 B
C

#include "uid.h"
#include "rand.h"
#include "sys.h"
/* Returns a uid generated from the system's random number generator */
struct uid uid_true_rand(void)
{
struct uid res = ZI;
sys_true_rand(STRING_FROM_STRUCT(&res));
return res;
}
/* Combines 2 uids into a new uid */
struct uid uid_combine(struct uid a, struct uid b)
{
struct uid res;
res.hi = (a.hi * 3) + b.hi;
res.lo = (a.lo * 3) + b.lo;
res.hi += res.lo;
res.lo += res.hi;
res.hi = rand_u64_from_seed(res.hi);
res.lo = rand_u64_from_seed(res.lo);
res.hi += res.lo;
res.lo += res.hi;
return res;
}