cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

hw_random.h (2168B)


      1/*
      2	Hardware Random Number Generator
      3
      4	Please read Documentation/admin-guide/hw_random.rst for details on use.
      5
      6	----------------------------------------------------------
      7	This software may be used and distributed according to the terms
      8        of the GNU General Public License, incorporated herein by reference.
      9
     10 */
     11
     12#ifndef LINUX_HWRANDOM_H_
     13#define LINUX_HWRANDOM_H_
     14
     15#include <linux/completion.h>
     16#include <linux/types.h>
     17#include <linux/list.h>
     18#include <linux/kref.h>
     19
     20/**
     21 * struct hwrng - Hardware Random Number Generator driver
     22 * @name:		Unique RNG name.
     23 * @init:		Initialization callback (can be NULL).
     24 * @cleanup:		Cleanup callback (can be NULL).
     25 * @data_present:	Callback to determine if data is available
     26 *			on the RNG. If NULL, it is assumed that
     27 *			there is always data available.  *OBSOLETE*
     28 * @data_read:		Read data from the RNG device.
     29 *			Returns the number of lower random bytes in "data".
     30 *			Must not be NULL.    *OBSOLETE*
     31 * @read:		New API. drivers can fill up to max bytes of data
     32 *			into the buffer. The buffer is aligned for any type
     33 *			and max is a multiple of 4 and >= 32 bytes.
     34 * @priv:		Private data, for use by the RNG driver.
     35 * @quality:		Estimation of true entropy in RNG's bitstream
     36 *			(in bits of entropy per 1024 bits of input;
     37 *			valid values: 1 to 1024, or 0 for unknown).
     38 */
     39struct hwrng {
     40	const char *name;
     41	int (*init)(struct hwrng *rng);
     42	void (*cleanup)(struct hwrng *rng);
     43	int (*data_present)(struct hwrng *rng, int wait);
     44	int (*data_read)(struct hwrng *rng, u32 *data);
     45	int (*read)(struct hwrng *rng, void *data, size_t max, bool wait);
     46	unsigned long priv;
     47	unsigned short quality;
     48
     49	/* internal. */
     50	struct list_head list;
     51	struct kref ref;
     52	struct completion cleanup_done;
     53};
     54
     55struct device;
     56
     57/** Register a new Hardware Random Number Generator driver. */
     58extern int hwrng_register(struct hwrng *rng);
     59extern int devm_hwrng_register(struct device *dev, struct hwrng *rng);
     60/** Unregister a Hardware Random Number Generator driver. */
     61extern void hwrng_unregister(struct hwrng *rng);
     62extern void devm_hwrng_unregister(struct device *dve, struct hwrng *rng);
     63
     64#endif /* LINUX_HWRANDOM_H_ */