moved type and constants for random data to include file;
added consistency check in random; added source of randomness internal to random using timing; only retrieve random bins that are full.
This commit is contained in:
@@ -461,6 +461,7 @@
|
||||
# define GET_PRIVID 17 /* get ID of privilege structure */
|
||||
# define GET_HZ 18 /* get HZ value */
|
||||
# define GET_WHOAMI 19 /* get own name and endpoint */
|
||||
# define GET_RANDOMNESS_BIN 20 /* get one randomness bin */
|
||||
#define I_ENDPT m7_i4 /* calling process */
|
||||
#define I_VAL_PTR m7_p1 /* virtual address at caller */
|
||||
#define I_VAL_LEN m7_i1 /* max length of value */
|
||||
|
||||
@@ -156,6 +156,7 @@ _PROTOTYPE(int sys_segctl, (int *index, u16_t *seg, vir_bytes *off,
|
||||
#define sys_getprivtab(dst) sys_getinfo(GET_PRIVTAB, dst, 0,0,0)
|
||||
#define sys_getproc(dst,nr) sys_getinfo(GET_PROC, dst, 0,0, nr)
|
||||
#define sys_getrandomness(dst) sys_getinfo(GET_RANDOMNESS, dst, 0,0,0)
|
||||
#define sys_getrandom_bin(d,b) sys_getinfo(GET_RANDOMNESS_BIN, d, 0,0,b)
|
||||
#define sys_getimage(dst) sys_getinfo(GET_IMAGE, dst, 0,0,0)
|
||||
#define sys_getirqhooks(dst) sys_getinfo(GET_IRQHOOKS, dst, 0,0,0)
|
||||
#define sys_getirqactids(dst) sys_getinfo(GET_IRQACTIDS, dst, 0,0,0)
|
||||
|
||||
@@ -58,6 +58,8 @@ _PROTOTYPE( int micro_delay, (u32_t micros));
|
||||
_PROTOTYPE( u32_t micros_to_ticks, (u32_t micros));
|
||||
_PROTOTYPE( int asynsend, (endpoint_t ep, message *msg));
|
||||
_PROTOTYPE( void ser_putc, (char c));
|
||||
_PROTOTYPE( void get_randomness, (struct k_randomness *, int));
|
||||
|
||||
|
||||
#define ASSERT(c) if(!(c)) { panic(__FILE__, "assert " #c " failed at line", __LINE__); }
|
||||
|
||||
|
||||
@@ -178,6 +178,22 @@ struct kmessages {
|
||||
char km_buf[_KMESS_BUF_SIZE]; /* buffer for messages */
|
||||
};
|
||||
|
||||
#include <ibm/interrupt.h>
|
||||
|
||||
/* randomness struct: random sources after interrupts: */
|
||||
#define RANDOM_SOURCES NR_IRQ_VECTORS
|
||||
#define RANDOM_ELEMENTS 64
|
||||
|
||||
typedef unsigned short rand_t;
|
||||
|
||||
struct k_randomness {
|
||||
int random_elements, random_sources;
|
||||
struct k_randomness_bin {
|
||||
int r_next; /* next index to write */
|
||||
int r_size; /* number of random elements */
|
||||
rand_t r_buf[RANDOM_ELEMENTS]; /* buffer for random info */
|
||||
} bin[RANDOM_SOURCES];
|
||||
};
|
||||
|
||||
#endif /* _TYPE_H */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user