Line data Source code
1 : /*
2 : * include/linux/random.h
3 : *
4 : * Include file for the random number generator.
5 : */
6 :
7 : #ifndef _LINUX_RANDOM_H
8 : #define _LINUX_RANDOM_H
9 :
10 : #include <linux/types.h>
11 : #include <linux/ioctl.h>
12 : #include <linux/irqnr.h>
13 :
14 : /* ioctl()'s for the random number generator */
15 :
16 : /* Get the entropy count. */
17 : #define RNDGETENTCNT _IOR( 'R', 0x00, int )
18 :
19 : /* Add to (or subtract from) the entropy count. (Superuser only.) */
20 : #define RNDADDTOENTCNT _IOW( 'R', 0x01, int )
21 :
22 : /* Get the contents of the entropy pool. (Superuser only.) */
23 : #define RNDGETPOOL _IOR( 'R', 0x02, int [2] )
24 :
25 : /*
26 : * Write bytes into the entropy pool and add to the entropy count.
27 : * (Superuser only.)
28 : */
29 : #define RNDADDENTROPY _IOW( 'R', 0x03, int [2] )
30 :
31 : /* Clear entropy count to 0. (Superuser only.) */
32 : #define RNDZAPENTCNT _IO( 'R', 0x04 )
33 :
34 : /* Clear the entropy pool and associated counters. (Superuser only.) */
35 : #define RNDCLEARPOOL _IO( 'R', 0x06 )
36 :
37 : struct rand_pool_info {
38 : int entropy_count;
39 : int buf_size;
40 : __u32 buf[0];
41 : };
42 :
43 : /* Exported functions */
44 :
45 : #ifdef __KERNEL__
46 :
47 : extern void rand_initialize_irq(int irq);
48 :
49 : extern void add_input_randomness(unsigned int type, unsigned int code,
50 : unsigned int value);
51 : extern void add_interrupt_randomness(int irq);
52 :
53 : extern void get_random_bytes(void *buf, int nbytes);
54 : void generate_random_uuid(unsigned char uuid_out[16]);
55 :
56 : #ifndef MODULE
57 : extern const struct file_operations random_fops, urandom_fops;
58 : #endif
59 :
60 : unsigned int get_random_int(void);
61 : unsigned long randomize_range(unsigned long start, unsigned long end, unsigned long len);
62 :
63 : u32 random32(void);
64 : void srandom32(u32 seed);
65 1 :
66 : #endif /* __KERNEL___ */
67 :
68 : #endif /* _LINUX_RANDOM_H */
|