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)1049261a46Sjsgget_random_u32(void) 1149261a46Sjsg { 1249261a46Sjsg return arc4random(); 1349261a46Sjsg } 1449261a46Sjsg 15*f005ef32Sjsg static inline uint32_t get_random_u32_below(uint32_t x)16*f005ef32Sjsgget_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)2249261a46Sjsgget_random_int(void) 2349261a46Sjsg { 2449261a46Sjsg return arc4random(); 2549261a46Sjsg } 267f4dd379Sjsg 277f4dd379Sjsg static inline uint64_t get_random_u64(void)287f4dd379Sjsgget_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)367f4dd379Sjsgget_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)46c349dbc7Sjsgprandom_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)52ad8b1aafSjsgget_random_bytes(void *buf, int nbytes) 53ad8b1aafSjsg { 54ad8b1aafSjsg arc4random_buf(buf, nbytes); 55ad8b1aafSjsg } 56ad8b1aafSjsg 577f4dd379Sjsg #endif 58