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