diff options
author | 2000-04-10 19:44:38 +0000 | |
---|---|---|
committer | 2000-04-10 19:44:38 +0000 | |
commit | 452ba1bcddee35c1fe52f4e34ec0cc61fd3425c2 (patch) | |
tree | 6ba8f56a3a6c1a510003f2f56c60b753eb594a9c /sys/dev/rndvar.h | |
parent | missing THREAD_UNLOCK; netch@segfault.kiev.ua (diff) | |
download | wireguard-openbsd-452ba1bcddee35c1fe52f4e34ec0cc61fd3425c2.tar.xz wireguard-openbsd-452ba1bcddee35c1fe52f4e34ec0cc61fd3425c2.zip |
add support for more random sources.
make it easy to add more in the future.
make extract_entropy() faster.
more accurate stats.
Diffstat (limited to 'sys/dev/rndvar.h')
-rw-r--r-- | sys/dev/rndvar.h | 67 |
1 files changed, 38 insertions, 29 deletions
diff --git a/sys/dev/rndvar.h b/sys/dev/rndvar.h index 0d209a84a65..0ba2e64d5f4 100644 --- a/sys/dev/rndvar.h +++ b/sys/dev/rndvar.h @@ -1,8 +1,8 @@ -/* $OpenBSD: rndvar.h,v 1.12 2000/03/19 17:38:03 mickey Exp $ */ +/* $OpenBSD: rndvar.h,v 1.13 2000/04/10 19:44:39 mickey Exp $ */ /* * Copyright (c) 1996 Michael Shalayeff. - * + * * This software derived from one contributed by Theodore Ts'o. * * Redistribution and use in source and binary forms, with or without @@ -37,7 +37,7 @@ #ifndef __RNDVAR_H__ #define __RNDVAR_H__ -#define POOLWORDS 128 /* Power of 2 - note that this is 32-bit words */ +#define POOLWORDS 64 /* Power of 2 - note that this is 32-bit words */ #define RND_RND 0 /* real randomness like nuclear chips */ #define RND_SRND 1 /* strong random source */ @@ -46,42 +46,51 @@ #define RND_ARND 4 /* aRC4 based random number generator */ #define RND_NODEV 5 /* First invalid minor device number */ -struct rndstats { - u_long rnd_total; /* total bits of entropy generated */ - u_long rnd_used; /* strong data bits read so far */ - u_long arc4_reads;/* aRC4 data bytes read so far */ +#define RND_SRC_TRUE 0 +#define RND_SRC_TIMER 1 +#define RND_SRC_MOUSE 2 +#define RND_SRC_TTY 3 +#define RND_SRC_DISK 4 +#define RND_SRC_NET 5 +#define RND_SRC_AUDIO 6 +#define RND_SRC_NUM 8 - u_long rnd_timer; /* timer calls */ - u_long rnd_mouse; /* mouse calls */ - u_long rnd_tty; /* tty calls */ - u_long rnd_disk; /* block devices calls */ - u_long rnd_net; /* net calls */ +struct rndstats { + quad_t rnd_total; /* total bits of entropy generated */ + quad_t rnd_used; /* strong data bits read so far */ + quad_t rnd_reads; /* strong read calls */ + quad_t arc4_reads; /* aRC4 data bytes read so far */ + quad_t arc4_nstirs; /* arc4 pool stirs */ + quad_t arc4_stirs; /* arc4 pool stirs (bits used) */ - u_long rnd_reads; /* strong read calls */ - u_long rnd_waits; /* sleep for data */ - u_long rnd_enqs; /* enqueue calls */ - u_long rnd_deqs; /* dequeue calls */ - u_long rnd_drops; /* queue-full drops */ - u_long rnd_drople;/* queue low watermark low entropy drops */ + quad_t rnd_pad[5]; - u_long rnd_asleep;/* sleeping for the data */ - u_long rnd_queued;/* queued for processing */ - u_long arc4_stirs;/* arc4 pool stirs */ + quad_t rnd_waits; /* sleeps for data */ + quad_t rnd_enqs; /* enqueue calls */ + quad_t rnd_deqs; /* dequeue calls */ + quad_t rnd_drops; /* queue-full drops */ + quad_t rnd_drople; /* queue low watermark low entropy drops */ - u_long rnd_ed[32];/* entropy feed distribution */ + quad_t rnd_ed[32]; /* entropy feed distribution */ + quad_t rnd_sc[RND_SRC_NUM]; /* add* calls */ + quad_t rnd_sb[RND_SRC_NUM]; /* add* bits */ }; #ifdef _KERNEL extern struct rndstats rndstats; -extern void add_mouse_randomness __P((u_int32_t)); -extern void add_net_randomness __P((int)); -extern void add_disk_randomness __P((u_int32_t)); -extern void add_tty_randomness __P((int)); +#define add_true_randomness(d) enqueue_randomness(RND_SRC_TRUE, (int)(d)) +#define add_timer_randomness(d) enqueue_randomness(RND_SRC_TIMER, (int)(d)) +#define add_mouse_randomness(d) enqueue_randomness(RND_SRC_MOUSE, (int)(d)) +#define add_tty_randomness(d) enqueue_randomness(RND_SRC_TTY, (int)(d)) +#define add_disk_randomness(d) enqueue_randomness(RND_SRC_DISK, (int)(d)) +#define add_net_randomness(d) enqueue_randomness(RND_SRC_NET, (int)(d)) +#define add_audio_randomness(d) enqueue_randomness(RND_SRC_AUDIO, (int)(d)) -extern void get_random_bytes __P((void *, size_t)); -extern u_int32_t arc4random __P((void)); -extern int arc4random_8 __P((void)); +void enqueue_randomness __P((int, int)); +void get_random_bytes __P((void *, size_t)); +u_int32_t arc4random __P((void)); +int arc4random_8 __P((void)); #endif /* _KERNEL */ |