### random_harvest (9)

#### Leading comments

Copyright (c) 2002-2015 Mark R V Murray All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/...

#### NAME

**random_harvest**- gather entropy from the kernel for the entropy device

#### SYNOPSIS

In sys/types.h In sys/random.h Ft void Fo random_harvest Fa void *entropy Fa u_int size Fa u_int bits Fa u_int frac Fa enum esource source Fc#### DESCRIPTION

The Fn random_harvest function is used by device drivers and other kernel processes to pass data that is considered (at least partially) stochastic to the entropy device.
The caller should pass a pointer (to no more than 16 bytes) of
the
``random''
data in
Fa entropy .
The argument
Fa size
contains the number of bytes pointed to.
The caller should
*very conservatively*
estimate the number of random bits
in the sample,
and pass this in
Fa bits
or
Fa frac .
If the estimated number of bits per sample is an integer, then
Fa bits
is used, and
Fa frac
is 0.
Otherwise,
for low-entropy samples,
``fractional''
entropy can be supplied in
Fa frac .
(This is considered to be
Fa frac /
1024 bits of entropy.)
The
Fa source
is chosen from
**RANDOM_WRITE , RANDOM_KEYBOARD , RANDOM_MOUSE , RANDOM_NET**
and
**RANDOM_INTERRUPT**
and is used to indicate the source of the entropy.

Interrupt harvesting has been simplified
for the kernel programmer.
If a device driver registers an interrupt handler
with
BUS_SETUP_INTR9
or
bus_setup_intr9,
then it is only necessary to
include the
**INTR_ENTROPY**
bit in the
Fa flags
argument to have that interrupt source
be used for entropy harvesting.