unsigned long RNG_taus::get_UL () { s1 = TAUSWORTHE (s1, 13, 19, 4294967294UL, 12); s2 = TAUSWORTHE (s2, 2, 25, 4294967288UL, 4); s3 = TAUSWORTHE (s3, 3, 11, 4294967280UL, 17); return (s1 ^ s2 ^ s3); }
/** * prandom_u32_state - seeded pseudo-random number generator. * @state: pointer to state structure holding seeded state. * * This is used for pseudo-randomness with no outside seeding. * For more random results, use prandom_u32(). */ u32 prandom_u32_state(struct rnd_state *state) { #define TAUSWORTHE(s, a, b, c, d) ((s & c) << d) ^ (((s << a) ^ s) >> b) state->s1 = TAUSWORTHE(state->s1, 6U, 13U, 4294967294U, 18U); state->s2 = TAUSWORTHE(state->s2, 2U, 27U, 4294967288U, 2U); state->s3 = TAUSWORTHE(state->s3, 13U, 21U, 4294967280U, 7U); return (state->s1 ^ state->s2 ^ state->s3); }
static UINT32 taus_get () { #define TAUSWORTHE(s,a,b,c,d) ((s &c) <<d) ^ (((s <<a) ^s) >>b) taus_state[0] = TAUSWORTHE (taus_state[0], 13, 19, 4294967294UL, 12); taus_state[1] = TAUSWORTHE (taus_state[1], 2, 25, 4294967288UL, 4); taus_state[2] = TAUSWORTHE (taus_state[2], 3, 11, 4294967280UL, 17); return (taus_state[0] ^ taus_state[1] ^ taus_state[2]); }
/** * prandom_u32_state - seeded pseudo-random number generator. * @state: pointer to state structure holding seeded state. * * This is used for pseudo-randomness with no outside seeding. * For more random results, use prandom_u32(). */ u32 prandom_u32_state(struct rnd_state *state) { #define TAUSWORTHE(s,a,b,c,d) ((s&c)<<d) ^ (((s <<a) ^ s)>>b) state->s1 = TAUSWORTHE(state->s1, 13, 19, 4294967294UL, 12); state->s2 = TAUSWORTHE(state->s2, 2, 25, 4294967288UL, 4); state->s3 = TAUSWORTHE(state->s3, 3, 11, 4294967280UL, 17); return (state->s1 ^ state->s2 ^ state->s3); }
static u32 __random32(struct rnd_state *state) { #define TAUSWORTHE(s,a,b,c,d) ((s&c)<<d) ^ (((s <<a) ^ s)>>b) state->s1 = TAUSWORTHE(state->s1, 13, 19, 4294967294UL, 12); state->s2 = TAUSWORTHE(state->s2, 2, 25, 4294967288UL, 4); state->s3 = TAUSWORTHE(state->s3, 3, 11, 4294967280UL, 17); /* dacashman change */ printk(KERN_DEBUG "RANDOM - __random32 called. Change num %d. Value: %x\t%x\t%x\n", ++state_change_num, state->s1, state->s2, state->s3); return (state->s1 ^ state->s2 ^ state->s3); }
inline unsigned long taus_get (void *vstate) { taus_state_t *state = (taus_state_t *) vstate; #define MASK 0xffffffffUL #define TAUSWORTHE(s,a,b,c,d) (((s &c) <<d) &MASK) ^ ((((s <<a) &MASK)^s) >>b) state->s1 = TAUSWORTHE (state->s1, 13, 19, 4294967294UL, 12); state->s2 = TAUSWORTHE (state->s2, 2, 25, 4294967288UL, 4); state->s3 = TAUSWORTHE (state->s3, 3, 11, 4294967280UL, 17); return (state->s1 ^ state->s2 ^ state->s3); }
static inline unsigned int taus_get (taus_state_t * state) { //#define MASK 0xffffffffUL //#define TAUSWORTHE(s,a,b,c,d) (((s &c) <<d) &MASK) ^ ((((s <<a) &MASK)^s) >>b) #define TAUSWORTHE(s,a,b,c,d) (((s &c) <<d)) ^ ((((s <<a))^s) >>b) state->s1 = TAUSWORTHE (state->s1, 13, 19, 4294967294, 12); state->s2 = TAUSWORTHE (state->s2, 2 , 25, 4294967288, 4); state->s3 = TAUSWORTHE (state->s3, 3 , 11, 4294967280, 17); return (state->s1 ^ state->s2 ^ state->s3); }