mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-08-04 20:05:47 +00:00
Create syscalls to make possible using random APIs from user mode threads. These APIs can have different implementations, like using entropy driver or Xoroshiro128. Some of these implementations also have some globals to preserve state between calls. Make it run entire in user space would require user adding these globals to their memeory domains and/or grant access to entropy device. Syscalls simplify its usage. Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
34 lines
709 B
C
34 lines
709 B
C
/*
|
|
* Copyright (c) 2020 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include <random/rand32.h>
|
|
#include <syscall_handler.h>
|
|
|
|
|
|
static inline uint32_t z_vrfy_sys_rand32_get(void)
|
|
{
|
|
return z_impl_sys_rand32_get();
|
|
}
|
|
#include <syscalls/sys_rand32_get_mrsh.c>
|
|
|
|
static inline void z_vrfy_sys_rand_get(void *dst, size_t len)
|
|
{
|
|
Z_OOPS(Z_SYSCALL_MEMORY_WRITE(dst, len));
|
|
|
|
z_impl_sys_rand_get(dst, len);
|
|
}
|
|
#include <syscalls/sys_rand_get_mrsh.c>
|
|
|
|
#if defined(CONFIG_CTR_DRBG_CSPRNG_GENERATOR)
|
|
static inline int z_vrfy_sys_csrand_get(void *dst, size_t len)
|
|
{
|
|
Z_OOPS(Z_SYSCALL_MEMORY_WRITE(dst, len));
|
|
|
|
return z_impl_sys_csrand_get(dst, len);
|
|
}
|
|
#include <syscalls/sys_csrand_get_mrsh.c>
|
|
#endif
|