#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; }