From adce1d18883ec4e88b8b8ee95b7cf6a411fd95e5 Mon Sep 17 00:00:00 2001 From: Leandro Pereira Date: Fri, 13 Oct 2017 15:45:02 -0700 Subject: [PATCH] subsys: Add random subsystem Some "random" drivers are not drivers at all: they just implement the function `sys_rand32_get()`. Move those to a random subsystem in preparation for a reorganization. Signed-off-by: Leandro Pereira --- arch/arc/soc/em11d/soc.h | 2 +- arch/arc/soc/em7d/soc.h | 2 +- arch/arc/soc/em9d/soc.h | 2 +- arch/arc/soc/quark_se_c1000_ss/soc.h | 2 +- arch/arm/soc/nordic_nrf5/nrf51/soc.h | 2 +- arch/arm/soc/nordic_nrf5/nrf52/soc.h | 2 +- arch/arm/soc/nxp_kinetis/k6x/soc.h | 2 +- arch/arm/soc/nxp_kinetis/kl2x/soc.h | 2 +- arch/arm/soc/nxp_kinetis/kwx/soc.h | 2 +- arch/arm/soc/st_stm32/stm32f0/soc.h | 2 +- arch/arm/soc/st_stm32/stm32f1/soc.h | 2 +- arch/arm/soc/st_stm32/stm32f3/soc.h | 2 +- arch/arm/soc/st_stm32/stm32f4/soc.h | 2 +- arch/arm/soc/ti_lm3s6965/soc.h | 2 +- arch/x86/soc/atom/soc.h | 2 +- arch/x86/soc/ia32/soc.h | 2 +- arch/x86/soc/intel_quark/quark_x1000/soc.h | 2 +- drivers/ieee802154/ieee802154_cc2520.c | 2 +- drivers/ieee802154/ieee802154_kw41z.c | 2 +- drivers/ieee802154/ieee802154_mcr20a.c | 2 +- drivers/ieee802154/ieee802154_nrf5.c | 2 +- drivers/random/Kconfig | 32 ----------------- drivers/random/Makefile | 2 -- drivers/random/random_mcux_rnga.c | 2 +- drivers/random/random_mcux_trng.c | 2 +- drivers/random/random_stm32_rng.c | 2 +- include/kernel.h | 2 +- include/{drivers => random}/rand32.h | 0 kernel/init.c | 2 +- samples/net/irc_bot/src/irc-bot.c | 2 +- subsys/Kconfig | 2 ++ subsys/Makefile | 3 +- subsys/random/Kconfig | 35 +++++++++++++++++++ subsys/random/Makefile | 2 ++ {drivers => subsys}/random/rand32_timer.c | 2 +- {drivers => subsys}/random/rand32_timestamp.c | 2 +- 36 files changed, 70 insertions(+), 64 deletions(-) rename include/{drivers => random}/rand32.h (100%) create mode 100644 subsys/random/Kconfig create mode 100644 subsys/random/Makefile rename {drivers => subsys}/random/rand32_timer.c (97%) rename {drivers => subsys}/random/rand32_timestamp.c (96%) diff --git a/arch/arc/soc/em11d/soc.h b/arch/arc/soc/em11d/soc.h index e536b9a9aee..55e178b6883 100644 --- a/arch/arc/soc/em11d/soc.h +++ b/arch/arc/soc/em11d/soc.h @@ -31,7 +31,7 @@ #ifndef _ASMLANGUAGE #include -#include +#include #define ARCV2_TIMER0_INT_LVL IRQ_TIMER0 #define ARCV2_TIMER0_INT_PRI 0 diff --git a/arch/arc/soc/em7d/soc.h b/arch/arc/soc/em7d/soc.h index 22201d264d6..e8f23405658 100644 --- a/arch/arc/soc/em7d/soc.h +++ b/arch/arc/soc/em7d/soc.h @@ -40,7 +40,7 @@ #ifndef _ASMLANGUAGE #include -#include +#include #define ARCV2_TIMER0_INT_LVL IRQ_TIMER0 #define ARCV2_TIMER0_INT_PRI 0 diff --git a/arch/arc/soc/em9d/soc.h b/arch/arc/soc/em9d/soc.h index e536b9a9aee..55e178b6883 100644 --- a/arch/arc/soc/em9d/soc.h +++ b/arch/arc/soc/em9d/soc.h @@ -31,7 +31,7 @@ #ifndef _ASMLANGUAGE #include -#include +#include #define ARCV2_TIMER0_INT_LVL IRQ_TIMER0 #define ARCV2_TIMER0_INT_PRI 0 diff --git a/arch/arc/soc/quark_se_c1000_ss/soc.h b/arch/arc/soc/quark_se_c1000_ss/soc.h index 8bb806f6f4f..c7a56186fa1 100644 --- a/arch/arc/soc/quark_se_c1000_ss/soc.h +++ b/arch/arc/soc/quark_se_c1000_ss/soc.h @@ -105,7 +105,7 @@ #ifndef _ASMLANGUAGE #include -#include +#include #include #define INT_ENABLE_ARC ~(0x00000001 << 8) diff --git a/arch/arm/soc/nordic_nrf5/nrf51/soc.h b/arch/arm/soc/nordic_nrf5/nrf51/soc.h index cd91ee8af92..6d0673e1d26 100644 --- a/arch/arm/soc/nordic_nrf5/nrf51/soc.h +++ b/arch/arm/soc/nordic_nrf5/nrf51/soc.h @@ -17,7 +17,7 @@ #include #include #include -#include +#include #endif /* !_ASMLANGUAGE */ diff --git a/arch/arm/soc/nordic_nrf5/nrf52/soc.h b/arch/arm/soc/nordic_nrf5/nrf52/soc.h index a0ecdd012c5..04f2a0efc72 100644 --- a/arch/arm/soc/nordic_nrf5/nrf52/soc.h +++ b/arch/arm/soc/nordic_nrf5/nrf52/soc.h @@ -17,7 +17,7 @@ #include #include #include -#include +#include #endif /* !_ASMLANGUAGE */ diff --git a/arch/arm/soc/nxp_kinetis/k6x/soc.h b/arch/arm/soc/nxp_kinetis/k6x/soc.h index 1b7d0c590b3..cb2a030546a 100644 --- a/arch/arm/soc/nxp_kinetis/k6x/soc.h +++ b/arch/arm/soc/nxp_kinetis/k6x/soc.h @@ -125,7 +125,7 @@ extern "C" { #include #include #include -#include +#include /* For IMG_MANAGER */ #if defined(CONFIG_SOC_FLASH_MCUX) diff --git a/arch/arm/soc/nxp_kinetis/kl2x/soc.h b/arch/arm/soc/nxp_kinetis/kl2x/soc.h index 5f7552fd037..cc13e5db673 100644 --- a/arch/arm/soc/nxp_kinetis/kl2x/soc.h +++ b/arch/arm/soc/nxp_kinetis/kl2x/soc.h @@ -54,7 +54,7 @@ extern "C" { #include #include -#include +#include #endif /* !_ASMLANGUAGE */ diff --git a/arch/arm/soc/nxp_kinetis/kwx/soc.h b/arch/arm/soc/nxp_kinetis/kwx/soc.h index cb4d0367b13..b29deafca59 100644 --- a/arch/arm/soc/nxp_kinetis/kwx/soc.h +++ b/arch/arm/soc/nxp_kinetis/kwx/soc.h @@ -127,7 +127,7 @@ extern "C" { #include #include #include -#include +#include #endif /* !_ASMLANGUAGE */ diff --git a/arch/arm/soc/st_stm32/stm32f0/soc.h b/arch/arm/soc/st_stm32/stm32f0/soc.h index cd186b9f339..d6b9688ea0c 100644 --- a/arch/arm/soc/st_stm32/stm32f0/soc.h +++ b/arch/arm/soc/st_stm32/stm32f0/soc.h @@ -26,7 +26,7 @@ #include #include -#include +#include #include diff --git a/arch/arm/soc/st_stm32/stm32f1/soc.h b/arch/arm/soc/st_stm32/stm32f1/soc.h index 194b40e99fc..bb892ab8704 100644 --- a/arch/arm/soc/st_stm32/stm32f1/soc.h +++ b/arch/arm/soc/st_stm32/stm32f1/soc.h @@ -26,7 +26,7 @@ #include #include -#include +#include #include diff --git a/arch/arm/soc/st_stm32/stm32f3/soc.h b/arch/arm/soc/st_stm32/stm32f3/soc.h index d0d0e8101eb..2d09beec7c0 100644 --- a/arch/arm/soc/st_stm32/stm32f3/soc.h +++ b/arch/arm/soc/st_stm32/stm32f3/soc.h @@ -27,7 +27,7 @@ #include #include -#include +#include #include diff --git a/arch/arm/soc/st_stm32/stm32f4/soc.h b/arch/arm/soc/st_stm32/stm32f4/soc.h index e4ab8a76652..7e523b24066 100644 --- a/arch/arm/soc/st_stm32/stm32f4/soc.h +++ b/arch/arm/soc/st_stm32/stm32f4/soc.h @@ -26,7 +26,7 @@ #include #include -#include +#include #include diff --git a/arch/arm/soc/ti_lm3s6965/soc.h b/arch/arm/soc/ti_lm3s6965/soc.h index 6fa04cc2d33..770e42c1383 100644 --- a/arch/arm/soc/ti_lm3s6965/soc.h +++ b/arch/arm/soc/ti_lm3s6965/soc.h @@ -73,7 +73,7 @@ extern "C" { #include #include -#include +#include /* uart configuration settings */ #if defined(CONFIG_UART_STELLARIS) diff --git a/arch/x86/soc/atom/soc.h b/arch/x86/soc/atom/soc.h index 0cbefbe3f25..d211d244121 100644 --- a/arch/x86/soc/atom/soc.h +++ b/arch/x86/soc/atom/soc.h @@ -19,7 +19,7 @@ #ifndef _ASMLANGUAGE #include -#include +#include #endif #define INT_VEC_IRQ0 0x20 /* vector number for IRQ0 */ diff --git a/arch/x86/soc/ia32/soc.h b/arch/x86/soc/ia32/soc.h index 9740e947337..ee1ab577976 100644 --- a/arch/x86/soc/ia32/soc.h +++ b/arch/x86/soc/ia32/soc.h @@ -19,7 +19,7 @@ #ifndef _ASMLANGUAGE #include -#include +#include #endif /* diff --git a/arch/x86/soc/intel_quark/quark_x1000/soc.h b/arch/x86/soc/intel_quark/quark_x1000/soc.h index d868b180236..524ea322cf5 100644 --- a/arch/x86/soc/intel_quark/quark_x1000/soc.h +++ b/arch/x86/soc/intel_quark/quark_x1000/soc.h @@ -19,7 +19,7 @@ #ifndef _ASMLANGUAGE #include -#include +#include #endif #ifdef CONFIG_IOAPIC diff --git a/drivers/ieee802154/ieee802154_cc2520.c b/drivers/ieee802154/ieee802154_cc2520.c index d7c13de27a1..bc7cda4aaf0 100644 --- a/drivers/ieee802154/ieee802154_cc2520.c +++ b/drivers/ieee802154/ieee802154_cc2520.c @@ -23,7 +23,7 @@ #include #include -#include +#include #include diff --git a/drivers/ieee802154/ieee802154_kw41z.c b/drivers/ieee802154/ieee802154_kw41z.c index d73bc6a070a..58bad927be7 100644 --- a/drivers/ieee802154/ieee802154_kw41z.c +++ b/drivers/ieee802154/ieee802154_kw41z.c @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include "fsl_xcvr.h" diff --git a/drivers/ieee802154/ieee802154_mcr20a.c b/drivers/ieee802154/ieee802154_mcr20a.c index c6acefdb6a8..08880e13be3 100644 --- a/drivers/ieee802154/ieee802154_mcr20a.c +++ b/drivers/ieee802154/ieee802154_mcr20a.c @@ -23,7 +23,7 @@ #include #include -#include +#include #include diff --git a/drivers/ieee802154/ieee802154_nrf5.c b/drivers/ieee802154/ieee802154_nrf5.c index e39d1c1083e..53cb37543ca 100644 --- a/drivers/ieee802154/ieee802154_nrf5.c +++ b/drivers/ieee802154/ieee802154_nrf5.c @@ -23,7 +23,7 @@ #include #include -#include +#include #include #include diff --git a/drivers/random/Kconfig b/drivers/random/Kconfig index 2139b8f4b59..9d74b76b449 100644 --- a/drivers/random/Kconfig +++ b/drivers/random/Kconfig @@ -17,7 +17,6 @@ if RANDOM_GENERATOR source "drivers/random/Kconfig.mcux" source "drivers/random/Kconfig.stm32" - source "drivers/random/Kconfig.esp32" config RANDOM_HAS_DRIVER @@ -48,35 +47,4 @@ config SYS_LOG_RANDOM_LEVEL - 3 INFO: write SYS_LOG_INF in addition to previous levels - 4 DEBUG: write SYS_LOG_DBG in addition to previous levels -config TEST_RANDOM_GENERATOR - bool - prompt "Non-random number generator" - depends on RANDOM_GENERATOR && ! RANDOM_HAS_DRIVER - default n - help - This option signifies that the kernel's random number APIs are - permitted to return values that are not truly random. - This capability is provided for testing purposes, when a truly random - number generator is not available. The non-random number generator - should not be used in a production environment. - -config X86_TSC_RANDOM_GENERATOR - bool - prompt "x86 timestamp counter based number generator" - depends on TEST_RANDOM_GENERATOR && X86 - default y - help - This options enables number generator based on timestamp counter - of x86 boards, obtained with rdtsc instruction. - -config TIMER_RANDOM_GENERATOR - bool - prompt "System timer clock based number generator" - depends on TEST_RANDOM_GENERATOR && !X86_TSC_RANDOM_GENERATOR - default y - help - This options enables number generator based on system timer - clock. This number generator is not random and used for - testing only. - endif diff --git a/drivers/random/Makefile b/drivers/random/Makefile index 910e612999d..4b533883d39 100644 --- a/drivers/random/Makefile +++ b/drivers/random/Makefile @@ -1,7 +1,5 @@ obj-$(CONFIG_RANDOM_MCUX_RNGA) += random_mcux_rnga.o obj-$(CONFIG_RANDOM_MCUX_TRNG) += random_mcux_trng.o -obj-$(CONFIG_TIMER_RANDOM_GENERATOR) = rand32_timer.o -obj-$(CONFIG_X86_TSC_RANDOM_GENERATOR) += rand32_timestamp.o obj-$(CONFIG_RANDOM_STM32_RNG) += random_stm32_rng.o obj-$(CONFIG_RANDOM_ESP32_RNG) += random_esp32.o diff --git a/drivers/random/random_mcux_rnga.c b/drivers/random/random_mcux_rnga.c index abe1fd0ed61..43cec692259 100644 --- a/drivers/random/random_mcux_rnga.c +++ b/drivers/random/random_mcux_rnga.c @@ -6,7 +6,7 @@ #include #include -#include +#include #include #include "fsl_rnga.h" diff --git a/drivers/random/random_mcux_trng.c b/drivers/random/random_mcux_trng.c index 3d75c4dc81d..cfd32fec7d2 100644 --- a/drivers/random/random_mcux_trng.c +++ b/drivers/random/random_mcux_trng.c @@ -6,7 +6,7 @@ #include #include -#include +#include #include #include "fsl_trng.h" diff --git a/drivers/random/random_stm32_rng.c b/drivers/random/random_stm32_rng.c index 8b3810a7ba6..a17c0b61c7a 100644 --- a/drivers/random/random_stm32_rng.c +++ b/drivers/random/random_stm32_rng.c @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/include/kernel.h b/include/kernel.h index 802542eaf26..a5598e1cad1 100644 --- a/include/kernel.h +++ b/include/kernel.h @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include diff --git a/include/drivers/rand32.h b/include/random/rand32.h similarity index 100% rename from include/drivers/rand32.h rename to include/random/rand32.h diff --git a/kernel/init.c b/kernel/init.c index a36b6f7d54b..a5b34ec256b 100644 --- a/kernel/init.c +++ b/kernel/init.c @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/samples/net/irc_bot/src/irc-bot.c b/samples/net/irc_bot/src/irc-bot.c index 864451162d3..32f9ca44739 100644 --- a/samples/net/irc_bot/src/irc-bot.c +++ b/samples/net/irc_bot/src/irc-bot.c @@ -10,7 +10,7 @@ #include #include -#include +#include #include #include #include diff --git a/subsys/Kconfig b/subsys/Kconfig index e3b4f74c3eb..79874dca646 100644 --- a/subsys/Kconfig +++ b/subsys/Kconfig @@ -26,3 +26,5 @@ source "subsys/shell/Kconfig" source "subsys/usb/Kconfig" source "subsys/dfu/Kconfig" + +source "subsys/random/Kconfig" diff --git a/subsys/Makefile b/subsys/Makefile index 0fd04f7b7e0..ca987c37cda 100644 --- a/subsys/Makefile +++ b/subsys/Makefile @@ -6,6 +6,7 @@ obj-$(CONFIG_CONSOLE_SHELL) += shell/ obj-$(CONFIG_CONSOLE_PULL) += console/ obj-$(CONFIG_DISK_ACCESS) += disk/ obj-$(CONFIG_CPLUSPLUS) += cpp/ +obj-$(CONFIG_MCUBOOT_IMG_MANAGER) += dfu/ obj-y += logging/ obj-y += debug/ -obj-$(CONFIG_MCUBOOT_IMG_MANAGER) += dfu/ +obj-y += random/ diff --git a/subsys/random/Kconfig b/subsys/random/Kconfig new file mode 100644 index 00000000000..dacc90408f7 --- /dev/null +++ b/subsys/random/Kconfig @@ -0,0 +1,35 @@ +# Kconfig - random configuration options +# +# Copyright (c) 2017 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 +# + +config TEST_RANDOM_GENERATOR + bool + prompt "Non-random number generator" + depends on RANDOM_GENERATOR && ! RANDOM_HAS_DRIVER + default n + help + This option signifies that the kernel's random number APIs are + permitted to return values that are not truly random. + This capability is provided for testing purposes, when a truly random + number generator is not available. The non-random number generator + should not be used in a production environment. + +config X86_TSC_RANDOM_GENERATOR + bool + prompt "x86 timestamp counter based number generator" + depends on TEST_RANDOM_GENERATOR && X86 + help + This options enables number generator based on timestamp counter + of x86 boards, obtained with rdtsc instruction. + +config TIMER_RANDOM_GENERATOR + bool + prompt "System timer clock based number generator" + depends on TEST_RANDOM_GENERATOR + help + This options enables number generator based on system timer + clock. This number generator is not random and used for + testing only. diff --git a/subsys/random/Makefile b/subsys/random/Makefile new file mode 100644 index 00000000000..cd9e16a011b --- /dev/null +++ b/subsys/random/Makefile @@ -0,0 +1,2 @@ +obj-$(CONFIG_TIMER_RANDOM_GENERATOR) = rand32_timer.o +obj-$(CONFIG_X86_TSC_RANDOM_GENERATOR) += rand32_timestamp.o diff --git a/drivers/random/rand32_timer.c b/subsys/random/rand32_timer.c similarity index 97% rename from drivers/random/rand32_timer.c rename to subsys/random/rand32_timer.c index 5ceb0a2bd92..87c5b9d35b7 100644 --- a/drivers/random/rand32_timer.c +++ b/subsys/random/rand32_timer.c @@ -14,7 +14,7 @@ * provide a random number generator. */ -#include +#include #include #include #include diff --git a/drivers/random/rand32_timestamp.c b/subsys/random/rand32_timestamp.c similarity index 96% rename from drivers/random/rand32_timestamp.c rename to subsys/random/rand32_timestamp.c index 0d6b7bd7f34..280a5639926 100644 --- a/drivers/random/rand32_timestamp.c +++ b/subsys/random/rand32_timestamp.c @@ -16,7 +16,7 @@ #include #include -#include +#include /** *