1 /* Public domain. */ 2 3 #ifndef _LINUX_RANDOM_H 4 #define _LINUX_RANDOM_H 5 6 #include <sys/types.h> 7 #include <sys/systm.h> 8 9 static inline uint32_t get_random_u32(void)10get_random_u32(void) 11 { 12 return arc4random(); 13 } 14 15 static inline uint32_t get_random_u32_below(uint32_t x)16get_random_u32_below(uint32_t x) 17 { 18 return arc4random_uniform(x); 19 } 20 21 static inline unsigned int get_random_int(void)22get_random_int(void) 23 { 24 return arc4random(); 25 } 26 27 static inline uint64_t get_random_u64(void)28get_random_u64(void) 29 { 30 uint64_t r; 31 arc4random_buf(&r, sizeof(r)); 32 return r; 33 } 34 35 static inline unsigned long get_random_long(void)36get_random_long(void) 37 { 38 #ifdef __LP64__ 39 return get_random_u64(); 40 #else 41 return get_random_u32(); 42 #endif 43 } 44 45 static inline uint32_t prandom_u32_max(uint32_t x)46prandom_u32_max(uint32_t x) 47 { 48 return arc4random_uniform(x + 1); 49 } 50 51 static inline void get_random_bytes(void * buf,int nbytes)52get_random_bytes(void *buf, int nbytes) 53 { 54 arc4random_buf(buf, nbytes); 55 } 56 57 #endif 58