Random number generator driver unification

Remove ARM specific driver that duplicates the platform
independent one.

Rename x86 specific driver to make it unique.

Added configuration options for random and non-random
number generators.

Change-Id: Ie1b277d2927cdfe877650ae09134db7c86becb76
Signed-off-by: Dmitriy Korovkin <dmitriy.korovkin@windriver.com>
This commit is contained in:
Dmitriy Korovkin 2015-05-27 17:14:51 -04:00 committed by Anas Nashif
commit 27bcb431cb
9 changed files with 37 additions and 100 deletions

View file

@ -10,4 +10,4 @@ EXTRA_CFLAGS +=-I$(srctree)/arch/arm/ti_lm3s6965
endif
obj-y = CortexM/
obj-y += sysFatalErrorHandler.o rand32.o
obj-y += sysFatalErrorHandler.o

View file

@ -1,78 +0,0 @@
/* rand32.c - random number generator */
/*
* Copyright (c) 2013-2015 Wind River Systems, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1) Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2) Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3) Neither the name of Wind River Systems nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/*
DESCRIPTION
This module provides a non-random implementation of _Rand32Get(), which is not
meant to be used in a final product as a truly random number generator. It
was provided to allow testing of kernel stack canaries on a BSP that does not
(yet) provide a random number generator.
*/
#include <drivers/rand32.h>
#include <drivers/system_timer.h>
#if defined(CONFIG_TEST_RANDOM_GENERATOR)
#if defined(__GNUC__)
/*******************************************************************************
*
* _Rand32Init - initialize the random number generator
*
* The non-random number generator does not require any initialization.
*
* RETURNS: N/A
*/
void _Rand32Init(void)
{
}
/*******************************************************************************
*
* _Rand32Get - get a 32 bit random number
*
* The non-random number generator returns values that are based off the
* target's clock counter, which means that successive calls will normally
* display ever-increasing values.
*
* RETURNS: a 32-bit number
*/
uint32_t _Rand32Get(void)
{
return timer_read();
}
#endif /* __GNUC__ */
#endif /* CONFIG_TEST_RANDOM_GENERATOR */

View file

@ -151,14 +151,6 @@ config PCI_DEBUG
help
This options enables PCI debigging functions
#FIXME This symbols is not being used.
config CUSTOM_RANDOM_GENERATOR
bool "Custom random generator"
default n
help
This option signifies that the target uses custom random number
generator.
if BSP_GENERIC_PC
source "arch/x86/generic_pc/Kconfig"
endif

View file

@ -11,4 +11,4 @@ obj-$(CONFIG_LOAPIC) += systemApic.o
obj-$(CONFIG_CLFLUSH_INSTRUCTION_SUPPORTED) += cache.o
obj-$(CONFIG_PIC) += systemPic.o
obj-$(CONFIG_PIC) += i8259Boi.o
obj-$(CONFIG_TEST_RANDOM_GENERATOR) += rand32.o
obj-$(CONFIG_X86_TSC_RANDOM_GENERATOR) += rand32-timestamp.o

View file

@ -42,7 +42,6 @@ was provided to allow testing of kernel stack canaries on a BSP that does not
#include <nanokernel/cpu.h>
#include <drivers/rand32.h>
#if defined(CONFIG_TEST_RANDOM_GENERATOR)
/*******************************************************************************
*
* _Rand32Init - initialize the random number generator
@ -71,5 +70,3 @@ uint32_t _Rand32Get(void)
{
return _do_read_cpu_timestamp32();
}
#endif /* CONFIG_TEST_RANDOM_GENERATOR */

View file

@ -1,4 +1,5 @@
obj-y = console/
obj-y += random/
obj-y += serial/
obj-y += timer/
obj-y += interrupt_controller/

View file

@ -31,15 +31,42 @@
#
menu "Random Generation Configuration"
config TEST_RANDOM_GENERATOR
config RANDOM_GENERATOR
bool
prompt "Custom random generator"
default n
help
This option signifies that the target uses a real random number
generator.
config TEST_RANDOM_GENERATOR
bool
prompt "Non-random number generator"
depends on !RANDOM_GENERATOR
default n
help
This option signifies that the kernel's random number APIs are
permitted to return values that are not truly random.
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.
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_32
default y
help
This options enables number generator based on timestamp counter
of x86 platform, 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.
endmenu

View file

@ -1,4 +1,4 @@
EXTRA_CFLAGS +=-I$(srctree)/arch/$(ARCH)
EXTRA_CFLAGS +=-I$(srctree)/arch/$(ARCH)/$(strip $(CONFIG_BSP_DIR))
obj-y = rand32-timer.o
obj-$(CONFIG_TIMER_RANDOM_GENERATOR) = rand32-timer.o

View file

@ -41,7 +41,6 @@ was provided to allow testing of kernel stack canaries on a BSP that does not
#include <drivers/rand32.h>
#include <drivers/system_timer.h>
#if defined(CONFIG_TEST_RANDOM_GENERATOR)
#if defined(__GNUC__)
/*******************************************************************************
@ -75,4 +74,3 @@ uint32_t _Rand32Get(void)
}
#endif /* __GNUC__ */
#endif /* CONFIG_TEST_RANDOM_GENERATOR */