23 lines
552 B
C
23 lines
552 B
C
/* Returns a uid generated from the system's random number generator */
|
|
struct uid uid_true_rand(void)
|
|
{
|
|
struct uid res = ZI;
|
|
rand_true(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;
|
|
}
|