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 10 get_random_u32(void) 11 { 12 return arc4random(); 13 } 14 15 static inline uint32_t 16 get_random_u32_below(uint32_t x) 17 { 18 return arc4random_uniform(x); 19 } 20 21 static inline unsigned int 22 get_random_int(void) 23 { 24 return arc4random(); 25 } 26 27 static inline uint64_t 28 get_random_u64(void) 29 { 30 uint64_t r; 31 arc4random_buf(&r, sizeof(r)); 32 return r; 33 } 34 35 static inline unsigned long 36 get_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 46 prandom_u32_max(uint32_t x) 47 { 48 return arc4random_uniform(x + 1); 49 } 50 51 static inline void 52 get_random_bytes(void *buf, int nbytes) 53 { 54 arc4random_buf(buf, nbytes); 55 } 56 57 #endif 58