| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | 
							- /**
 
-  * @file drivers/entropy.h
 
-  *
 
-  * @brief Public APIs for the entropy driver.
 
-  */
 
- /*
 
-  * Copyright (c) 2016 ARM Ltd.
 
-  * Copyright (c) 2017 Intel Corporation
 
-  *
 
-  * SPDX-License-Identifier: Apache-2.0
 
-  */
 
- #ifndef ZEPHYR_INCLUDE_DRIVERS_ENTROPY_H_
 
- #define ZEPHYR_INCLUDE_DRIVERS_ENTROPY_H_
 
- /**
 
-  * @brief Entropy Interface
 
-  * @defgroup entropy_interface Entropy Interface
 
-  * @ingroup io_interfaces
 
-  * @{
 
-  */
 
- #include <zephyr/types.h>
 
- #include <device.h>
 
- #ifdef __cplusplus
 
- extern "C" {
 
- #endif
 
- /**
 
-  * @typedef entropy_get_entropy_t
 
-  * @brief Callback API to get entropy.
 
-  *
 
-  * See entropy_get_entropy() for argument description
 
-  */
 
- typedef int (*entropy_get_entropy_t)(const struct device *dev,
 
- 				     uint8_t *buffer,
 
- 				     uint16_t length);
 
- /**
 
-  * @typedef entropy_get_entropy_isr_t
 
-  * @brief Callback API to get entropy from an ISR.
 
-  *
 
-  * See entropy_get_entropy_isr() for argument description
 
-  */
 
- typedef int (*entropy_get_entropy_isr_t)(const struct device *dev,
 
- 					 uint8_t *buffer,
 
- 					 uint16_t length,
 
- 					 uint32_t flags);
 
- __subsystem struct entropy_driver_api {
 
- 	entropy_get_entropy_t     get_entropy;
 
- 	entropy_get_entropy_isr_t get_entropy_isr;
 
- };
 
- /**
 
-  * @brief Fills a buffer with entropy. Blocks if required in order to
 
-  *        generate the necessary random data.
 
-  *
 
-  * @param dev Pointer to the entropy device.
 
-  * @param buffer Buffer to fill with entropy.
 
-  * @param length Buffer length.
 
-  * @retval 0 on success.
 
-  * @retval -ERRNO errno code on error.
 
-  */
 
- __syscall int entropy_get_entropy(const struct device *dev,
 
- 				  uint8_t *buffer,
 
- 				  uint16_t length);
 
- static inline int z_impl_entropy_get_entropy(const struct device *dev,
 
- 					     uint8_t *buffer,
 
- 					     uint16_t length)
 
- {
 
- 	const struct entropy_driver_api *api =
 
- 		(const struct entropy_driver_api *)dev->api;
 
- 	__ASSERT(api->get_entropy != NULL,
 
- 		"Callback pointer should not be NULL");
 
- 	return api->get_entropy(dev, buffer, length);
 
- }
 
- /* Busy-wait for random data to be ready */
 
- #define ENTROPY_BUSYWAIT  BIT(0)
 
- /**
 
-  * @brief Fills a buffer with entropy in a non-blocking or busy-wait manner.
 
-  * 	  Callable from ISRs.
 
-  *
 
-  * @param dev Pointer to the device structure.
 
-  * @param buffer Buffer to fill with entropy.
 
-  * @param length Buffer length.
 
-  * @param flags Flags to modify the behavior of the call.
 
-  * @retval number of bytes filled with entropy or -error.
 
-  */
 
- static inline int entropy_get_entropy_isr(const struct device *dev,
 
- 					  uint8_t *buffer,
 
- 					  uint16_t length,
 
- 					  uint32_t flags)
 
- {
 
- 	const struct entropy_driver_api *api =
 
- 		(const struct entropy_driver_api *)dev->api;
 
- 	if (unlikely(!api->get_entropy_isr)) {
 
- 		return -ENOTSUP;
 
- 	}
 
- 	return api->get_entropy_isr(dev, buffer, length, flags);
 
- }
 
- #ifdef __cplusplus
 
- }
 
- #endif
 
- /**
 
-  * @}
 
-  */
 
- #include <syscalls/entropy.h>
 
- #endif /* ZEPHYR_INCLUDE_DRIVERS_ENTROPY_H_ */
 
 
  |