diff options
| author | Chris Wilson <[email protected]> | 2016-12-22 08:36:08 +0000 |
|---|---|---|
| committer | Daniel Vetter <[email protected]> | 2016-12-27 11:34:00 +0000 |
| commit | a33d42dd03352d2e9d3d2c00bfa435c7a5ebab25 (patch) | |
| tree | a2d74a1f6f6e31bdf0788d24c66feee224056003 /drivers/gpu/drm/lib/drm_random.h | |
| parent | lib: Add a simple prime number generator (diff) | |
| download | kernel-a33d42dd03352d2e9d3d2c00bfa435c7a5ebab25.tar.gz kernel-a33d42dd03352d2e9d3d2c00bfa435c7a5ebab25.zip | |
drm: Add a simple generator of random permutations
When testing, we want a random but yet reproducible order in which to
process elements. Here we create an array which is a random (using the
Tausworthe PRNG) permutation of the order in which to execute.
Note these are simple helpers intended to be merged upstream in lib/
v2: Tidier code by David Herrmann
v3: Add reminder that this code is intended to be temporary, with at
least the bulk of the prandom changes going to lib/
Signed-off-by: Chris Wilson <[email protected]>
Cc: Joonas Lahtinen <[email protected]>
Cc: David Herrmann <[email protected]>
Reviewed-by: Joonas Lahtinen <[email protected]>
Signed-off-by: Daniel Vetter <[email protected]>
Link: http://patchwork.freedesktop.org/patch/msgid/[email protected]
Diffstat (limited to 'drivers/gpu/drm/lib/drm_random.h')
| -rw-r--r-- | drivers/gpu/drm/lib/drm_random.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/gpu/drm/lib/drm_random.h b/drivers/gpu/drm/lib/drm_random.h new file mode 100644 index 000000000000..a78644bea7f9 --- /dev/null +++ b/drivers/gpu/drm/lib/drm_random.h @@ -0,0 +1,25 @@ +#ifndef __DRM_RANDOM_H__ +#define __DRM_RANDOM_H__ + +/* This is a temporary home for a couple of utility functions that should + * be transposed to lib/ at the earliest convenience. + */ + +#include <linux/random.h> + +#define DRM_RND_STATE_INITIALIZER(seed__) ({ \ + struct rnd_state state__; \ + prandom_seed_state(&state__, (seed__)); \ + state__; \ +}) + +#define DRM_RND_STATE(name__, seed__) \ + struct rnd_state name__ = DRM_RND_STATE_INITIALIZER(seed__) + +unsigned int *drm_random_order(unsigned int count, + struct rnd_state *state); +void drm_random_reorder(unsigned int *order, + unsigned int count, + struct rnd_state *state); + +#endif /* !__DRM_RANDOM_H__ */ |
