harvest_context
} harvest_context;
#define RANDOM_HARVEST_INIT_LOCK() mtx_init(&harvest_context.hc_mtx, \
#define RANDOM_HARVEST_LOCK() mtx_lock_spin(&harvest_context.hc_mtx)
#define RANDOM_HARVEST_UNLOCK() mtx_unlock_spin(&harvest_context.hc_mtx)
&harvest_context.hc_kthread_proc,
struct harvest_context *hc;
hc = &harvest_context;
harvest_context.hc_active_buf = 0;
harvest_context.hc_destination[RANDOM_CACHED]++;
tsleep(&harvest_context.hc_kthread_proc, 0, "harvqterm", hz/5);
struct harvest_context *hc;
hc = &harvest_context;
pos = harvest_context.hc_entropy_fast_accumulator.pos;
harvest_context.hc_entropy_fast_accumulator.buf[pos] ^=
harvest_context.hc_entropy_fast_accumulator.pos = (pos + 1)%RANDOM_ACCUM_MAX;
event.he_destination = harvest_context.hc_destination[origin]++;