1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*f80ad8b4SAndroid Build Coastguard Worker /* 3*f80ad8b4SAndroid Build Coastguard Worker * include/linux/random.h 4*f80ad8b4SAndroid Build Coastguard Worker * 5*f80ad8b4SAndroid Build Coastguard Worker * Include file for the random number generator. 6*f80ad8b4SAndroid Build Coastguard Worker */ 7*f80ad8b4SAndroid Build Coastguard Worker 8*f80ad8b4SAndroid Build Coastguard Worker #ifndef _UAPI_LINUX_RANDOM_H 9*f80ad8b4SAndroid Build Coastguard Worker #define _UAPI_LINUX_RANDOM_H 10*f80ad8b4SAndroid Build Coastguard Worker 11*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h> 12*f80ad8b4SAndroid Build Coastguard Worker #include <linux/ioctl.h> 13*f80ad8b4SAndroid Build Coastguard Worker #include <linux/irqnr.h> 14*f80ad8b4SAndroid Build Coastguard Worker 15*f80ad8b4SAndroid Build Coastguard Worker /* ioctl()'s for the random number generator */ 16*f80ad8b4SAndroid Build Coastguard Worker 17*f80ad8b4SAndroid Build Coastguard Worker /* Get the entropy count. */ 18*f80ad8b4SAndroid Build Coastguard Worker #define RNDGETENTCNT _IOR( 'R', 0x00, int ) 19*f80ad8b4SAndroid Build Coastguard Worker 20*f80ad8b4SAndroid Build Coastguard Worker /* Add to (or subtract from) the entropy count. (Superuser only.) */ 21*f80ad8b4SAndroid Build Coastguard Worker #define RNDADDTOENTCNT _IOW( 'R', 0x01, int ) 22*f80ad8b4SAndroid Build Coastguard Worker 23*f80ad8b4SAndroid Build Coastguard Worker /* Get the contents of the entropy pool. (Superuser only.) (Removed in 2.6.9-rc2.) */ 24*f80ad8b4SAndroid Build Coastguard Worker #define RNDGETPOOL _IOR( 'R', 0x02, int [2] ) 25*f80ad8b4SAndroid Build Coastguard Worker 26*f80ad8b4SAndroid Build Coastguard Worker /* 27*f80ad8b4SAndroid Build Coastguard Worker * Write bytes into the entropy pool and add to the entropy count. 28*f80ad8b4SAndroid Build Coastguard Worker * (Superuser only.) 29*f80ad8b4SAndroid Build Coastguard Worker */ 30*f80ad8b4SAndroid Build Coastguard Worker #define RNDADDENTROPY _IOW( 'R', 0x03, int [2] ) 31*f80ad8b4SAndroid Build Coastguard Worker 32*f80ad8b4SAndroid Build Coastguard Worker /* Clear entropy count to 0. (Superuser only.) */ 33*f80ad8b4SAndroid Build Coastguard Worker #define RNDZAPENTCNT _IO( 'R', 0x04 ) 34*f80ad8b4SAndroid Build Coastguard Worker 35*f80ad8b4SAndroid Build Coastguard Worker /* Clear the entropy pool and associated counters. (Superuser only.) */ 36*f80ad8b4SAndroid Build Coastguard Worker #define RNDCLEARPOOL _IO( 'R', 0x06 ) 37*f80ad8b4SAndroid Build Coastguard Worker 38*f80ad8b4SAndroid Build Coastguard Worker /* Reseed CRNG. (Superuser only.) */ 39*f80ad8b4SAndroid Build Coastguard Worker #define RNDRESEEDCRNG _IO( 'R', 0x07 ) 40*f80ad8b4SAndroid Build Coastguard Worker 41*f80ad8b4SAndroid Build Coastguard Worker struct rand_pool_info { 42*f80ad8b4SAndroid Build Coastguard Worker int entropy_count; 43*f80ad8b4SAndroid Build Coastguard Worker int buf_size; 44*f80ad8b4SAndroid Build Coastguard Worker __u32 buf[]; 45*f80ad8b4SAndroid Build Coastguard Worker }; 46*f80ad8b4SAndroid Build Coastguard Worker 47*f80ad8b4SAndroid Build Coastguard Worker /* 48*f80ad8b4SAndroid Build Coastguard Worker * Flags for getrandom(2) 49*f80ad8b4SAndroid Build Coastguard Worker * 50*f80ad8b4SAndroid Build Coastguard Worker * GRND_NONBLOCK Don't block and return EAGAIN instead 51*f80ad8b4SAndroid Build Coastguard Worker * GRND_RANDOM No effect 52*f80ad8b4SAndroid Build Coastguard Worker * GRND_INSECURE Return non-cryptographic random bytes 53*f80ad8b4SAndroid Build Coastguard Worker */ 54*f80ad8b4SAndroid Build Coastguard Worker #define GRND_NONBLOCK 0x0001 55*f80ad8b4SAndroid Build Coastguard Worker #define GRND_RANDOM 0x0002 56*f80ad8b4SAndroid Build Coastguard Worker #define GRND_INSECURE 0x0004 57*f80ad8b4SAndroid Build Coastguard Worker 58*f80ad8b4SAndroid Build Coastguard Worker /** 59*f80ad8b4SAndroid Build Coastguard Worker * struct vgetrandom_opaque_params - arguments for allocating memory for vgetrandom 60*f80ad8b4SAndroid Build Coastguard Worker * 61*f80ad8b4SAndroid Build Coastguard Worker * @size_per_opaque_state: Size of each state that is to be passed to vgetrandom(). 62*f80ad8b4SAndroid Build Coastguard Worker * @mmap_prot: Value of the prot argument in mmap(2). 63*f80ad8b4SAndroid Build Coastguard Worker * @mmap_flags: Value of the flags argument in mmap(2). 64*f80ad8b4SAndroid Build Coastguard Worker * @reserved: Reserved for future use. 65*f80ad8b4SAndroid Build Coastguard Worker */ 66*f80ad8b4SAndroid Build Coastguard Worker struct vgetrandom_opaque_params { 67*f80ad8b4SAndroid Build Coastguard Worker __u32 size_of_opaque_state; 68*f80ad8b4SAndroid Build Coastguard Worker __u32 mmap_prot; 69*f80ad8b4SAndroid Build Coastguard Worker __u32 mmap_flags; 70*f80ad8b4SAndroid Build Coastguard Worker __u32 reserved[13]; 71*f80ad8b4SAndroid Build Coastguard Worker }; 72*f80ad8b4SAndroid Build Coastguard Worker 73*f80ad8b4SAndroid Build Coastguard Worker #endif /* _UAPI_LINUX_RANDOM_H */ 74