mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
Merge branch 'master' into for-next
This commit is contained in:
@@ -39,13 +39,16 @@
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/random.h>
|
||||
|
||||
struct rnd_state {
|
||||
u32 s1, s2, s3;
|
||||
};
|
||||
|
||||
static DEFINE_PER_CPU(struct rnd_state, net_rand_state);
|
||||
|
||||
static u32 __random32(struct rnd_state *state)
|
||||
/**
|
||||
* prandom32 - 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 random32().
|
||||
*/
|
||||
u32 prandom32(struct rnd_state *state)
|
||||
{
|
||||
#define TAUSWORTHE(s,a,b,c,d) ((s&c)<<d) ^ (((s <<a) ^ s)>>b)
|
||||
|
||||
@@ -55,14 +58,7 @@ static u32 __random32(struct rnd_state *state)
|
||||
|
||||
return (state->s1 ^ state->s2 ^ state->s3);
|
||||
}
|
||||
|
||||
/*
|
||||
* Handle minimum values for seeds
|
||||
*/
|
||||
static inline u32 __seed(u32 x, u32 m)
|
||||
{
|
||||
return (x < m) ? x + m : x;
|
||||
}
|
||||
EXPORT_SYMBOL(prandom32);
|
||||
|
||||
/**
|
||||
* random32 - pseudo random number generator
|
||||
@@ -75,7 +71,7 @@ u32 random32(void)
|
||||
{
|
||||
unsigned long r;
|
||||
struct rnd_state *state = &get_cpu_var(net_rand_state);
|
||||
r = __random32(state);
|
||||
r = prandom32(state);
|
||||
put_cpu_var(state);
|
||||
return r;
|
||||
}
|
||||
@@ -118,12 +114,12 @@ static int __init random32_init(void)
|
||||
state->s3 = __seed(LCG(state->s2), 15);
|
||||
|
||||
/* "warm it up" */
|
||||
__random32(state);
|
||||
__random32(state);
|
||||
__random32(state);
|
||||
__random32(state);
|
||||
__random32(state);
|
||||
__random32(state);
|
||||
prandom32(state);
|
||||
prandom32(state);
|
||||
prandom32(state);
|
||||
prandom32(state);
|
||||
prandom32(state);
|
||||
prandom32(state);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -147,7 +143,7 @@ static int __init random32_reseed(void)
|
||||
state->s3 = __seed(seeds[2], 15);
|
||||
|
||||
/* mix it in */
|
||||
__random32(state);
|
||||
prandom32(state);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user