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/...
NAMErandom_harvest - gather entropy from the kernel for the entropy device
SYNOPSISIn sys/types.h In sys/random.h Ft void Fo random_harvest_direct Fa void *entropy Fa u_int size Fa u_int bits Fa enum esource source Fc Ft void Fo random_harvest_fast Fa void *entropy Fa u_int size Fa u_int bits Fa enum esource source Fc Ft void Fo random_harvest_queue Fa void *entropy Fa u_int size Fa u_int bits Fa enum esource source Fc
DESCRIPTIONThe Fn random_harvest_* functions are 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 pointing to the ``random'' data in Fa entropy . The argument Fa size contains the number of bytes pointed to. The Fa source is chosen from one of the values enumerated in sys/dev/random.h and is used to indicate the source of the entropy.
The Fo random_harvest_direct Fc variant is used for early harvesting before any multitasking is enabled.
The Fn random_harvest_fast variant is used by sources that should not take a performance hit from harvesting, as they are high-rate sources. Some entropy is sacrificed, but the high rate of supply will compensate for this.
The Fn random_harvest_queue variant is used for general harvesting and is the default choice for most entropy sources such as interrupts or console events.
The Fa bits argument is only used by the deprecated Yarrow algorithm. For compatibility, the caller should very conservatively estimate the number of random bits in the sample, and pass this in Fa bits .
Interrupt harvesting has been in part 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. This should be done wherever practicable.