RTE OSAdapter POSIX 0.1.0 build 41b3eb3
POSIX/Linux OAL OSAdapter for Platform_RTE
Loading...
Searching...
No Matches
rte_posix_osadapter_random.c
Go to the documentation of this file.
1/* getentropy() is declared by <unistd.h> on glibc only under _DEFAULT_SOURCE; macOS declares it in <sys/random.h>. */
2#define _DEFAULT_SOURCE
3
13
14#include <unistd.h>
15#if defined(__APPLE__)
16#include <sys/random.h>
17#endif
18
19static rte_status_t osadapter_fill(uint8_t *out, size_t len);
20
21static const rte_osadapter_random_t s_posix_random_osadapter = { osadapter_fill };
22
23const rte_osadapter_random_t *rte_posix_osadapter_random(void)
24{
25 return &s_posix_random_osadapter;
26}
27
28static rte_status_t osadapter_fill(uint8_t *out, size_t len)
29{
30 rte_status_t status = RTE_STATUS_HARDWARE_FAULT;
31
32 if ((out != NULL) && (len > 0U) && (len <= (size_t)RTE_RANDOM_MAX_REQUEST))
33 {
34 if (getentropy(out, len) == 0)
35 {
36 status = RTE_STATUS_OK;
37 }
38 }
39 else
40 {
41 status = RTE_STATUS_INVALID_PARAM;
42 }
43 return status;
44}
Real POSIX/Linux OSAdapter for every OAL service (ADR-018).
const rte_osadapter_random_t * rte_posix_osadapter_random(void)
The POSIX rte_random OSAdapter: the kernel CSPRNG via getentropy(); fails (never falls back) if it is...