Blame view

include/linux/random.h 2.68 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
  /*
   * include/linux/random.h
   *
   * Include file for the random number generator.
   */
  
  #ifndef _LINUX_RANDOM_H
  #define _LINUX_RANDOM_H
68622c61d   Jaswinder Singh Rajput   headers_check fix...
9
  #include <linux/types.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
10
  #include <linux/ioctl.h>
0ebb26e7a   Ingo Molnar   sparse irqs: hand...
11
  #include <linux/irqnr.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
  
  /* ioctl()'s for the random number generator */
  
  /* Get the entropy count. */
  #define RNDGETENTCNT	_IOR( 'R', 0x00, int )
  
  /* Add to (or subtract from) the entropy count.  (Superuser only.) */
  #define RNDADDTOENTCNT	_IOW( 'R', 0x01, int )
  
  /* Get the contents of the entropy pool.  (Superuser only.) */
  #define RNDGETPOOL	_IOR( 'R', 0x02, int [2] )
  
  /* 
   * Write bytes into the entropy pool and add to the entropy count.
   * (Superuser only.)
   */
  #define RNDADDENTROPY	_IOW( 'R', 0x03, int [2] )
  
  /* Clear entropy count to 0.  (Superuser only.) */
  #define RNDZAPENTCNT	_IO( 'R', 0x04 )
  
  /* Clear the entropy pool and associated counters.  (Superuser only.) */
  #define RNDCLEARPOOL	_IO( 'R', 0x06 )
  
  struct rand_pool_info {
  	int	entropy_count;
  	int	buf_size;
  	__u32	buf[0];
  };
5960164fd   Joe Eykholt   lib/random32: exp...
41
42
43
  struct rnd_state {
  	__u32 s1, s2, s3;
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
44
45
46
47
48
49
50
51
52
53
54
55
  /* Exported functions */
  
  #ifdef __KERNEL__
  
  extern void rand_initialize_irq(int irq);
  
  extern void add_input_randomness(unsigned int type, unsigned int code,
  				 unsigned int value);
  extern void add_interrupt_randomness(int irq);
  
  extern void get_random_bytes(void *buf, int nbytes);
  void generate_random_uuid(unsigned char uuid_out[16]);
b09b845ca   Al Viro   [RANDOM]: Annotat...
56
57
58
59
60
61
62
63
64
65
  extern __u32 secure_ip_id(__be32 daddr);
  extern u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport);
  extern u32 secure_ipv6_port_ephemeral(const __be32 *saddr, const __be32 *daddr,
  				      __be16 dport);
  extern __u32 secure_tcp_sequence_number(__be32 saddr, __be32 daddr,
  					__be16 sport, __be16 dport);
  extern __u32 secure_tcpv6_sequence_number(__be32 *saddr, __be32 *daddr,
  					  __be16 sport, __be16 dport);
  extern u64 secure_dccp_sequence_number(__be32 saddr, __be32 daddr,
  				       __be16 sport, __be16 dport);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
66
67
  
  #ifndef MODULE
540473208   Arjan van de Ven   [PATCH] mark stru...
68
  extern const struct file_operations random_fops, urandom_fops;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
69
70
71
72
  #endif
  
  unsigned int get_random_int(void);
  unsigned long randomize_range(unsigned long start, unsigned long end, unsigned long len);
aaa248f6c   Stephen Hemminger   [PATCH] rename ne...
73
74
  u32 random32(void);
  void srandom32(u32 seed);
5960164fd   Joe Eykholt   lib/random32: exp...
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
  u32 prandom32(struct rnd_state *);
  
  /*
   * Handle minimum values for seeds
   */
  static inline u32 __seed(u32 x, u32 m)
  {
  	return (x < m) ? x + m : x;
  }
  
  /**
   * prandom32_seed - set seed for prandom32().
   * @state: pointer to state structure to receive the seed.
   * @seed: arbitrary 64-bit value to use as a seed.
   */
  static inline void prandom32_seed(struct rnd_state *state, u64 seed)
  {
  	u32 i = (seed >> 32) ^ (seed << 10) ^ seed;
  
  	state->s1 = __seed(i, 1);
  	state->s2 = __seed(i, 7);
  	state->s3 = __seed(i, 15);
  }
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
98
99
100
  #endif /* __KERNEL___ */
  
  #endif /* _LINUX_RANDOM_H */