xref: /openbsd-src/sys/dev/pci/drm/include/linux/random.h (revision f005ef32267c16bdb134f0e9fa4477dbe07c263a)
17f4dd379Sjsg /* Public domain. */
27f4dd379Sjsg 
37f4dd379Sjsg #ifndef _LINUX_RANDOM_H
47f4dd379Sjsg #define _LINUX_RANDOM_H
57f4dd379Sjsg 
67f4dd379Sjsg #include <sys/types.h>
77f4dd379Sjsg #include <sys/systm.h>
87f4dd379Sjsg 
949261a46Sjsg static inline uint32_t
get_random_u32(void)1049261a46Sjsg get_random_u32(void)
1149261a46Sjsg {
1249261a46Sjsg 	return arc4random();
1349261a46Sjsg }
1449261a46Sjsg 
15*f005ef32Sjsg static inline uint32_t
get_random_u32_below(uint32_t x)16*f005ef32Sjsg get_random_u32_below(uint32_t x)
17*f005ef32Sjsg {
18*f005ef32Sjsg 	return arc4random_uniform(x);
19*f005ef32Sjsg }
20*f005ef32Sjsg 
2149261a46Sjsg static inline unsigned int
get_random_int(void)2249261a46Sjsg get_random_int(void)
2349261a46Sjsg {
2449261a46Sjsg 	return arc4random();
2549261a46Sjsg }
267f4dd379Sjsg 
277f4dd379Sjsg static inline uint64_t
get_random_u64(void)287f4dd379Sjsg get_random_u64(void)
297f4dd379Sjsg {
307f4dd379Sjsg 	uint64_t r;
317f4dd379Sjsg 	arc4random_buf(&r, sizeof(r));
327f4dd379Sjsg 	return r;
337f4dd379Sjsg }
347f4dd379Sjsg 
357f4dd379Sjsg static inline unsigned long
get_random_long(void)367f4dd379Sjsg get_random_long(void)
377f4dd379Sjsg {
387f4dd379Sjsg #ifdef __LP64__
397f4dd379Sjsg 	return get_random_u64();
407f4dd379Sjsg #else
417f4dd379Sjsg 	return get_random_u32();
427f4dd379Sjsg #endif
437f4dd379Sjsg }
447f4dd379Sjsg 
45c349dbc7Sjsg static inline uint32_t
prandom_u32_max(uint32_t x)46c349dbc7Sjsg prandom_u32_max(uint32_t x)
47c349dbc7Sjsg {
48c349dbc7Sjsg 	return arc4random_uniform(x + 1);
49c349dbc7Sjsg }
50c349dbc7Sjsg 
51ad8b1aafSjsg static inline void
get_random_bytes(void * buf,int nbytes)52ad8b1aafSjsg get_random_bytes(void *buf, int nbytes)
53ad8b1aafSjsg {
54ad8b1aafSjsg 	arc4random_buf(buf, nbytes);
55ad8b1aafSjsg }
56ad8b1aafSjsg 
577f4dd379Sjsg #endif
58