Remove all comments and copyrightable content from the moved content. Use BSD-2-Clause license for new file.
Update #3053. Update #3875. --- cpukit/headers.am | 1 + cpukit/include/rtems/confdefs.h | 116 +-------------------------- cpukit/include/rtems/confdefs/mpci.h | 147 +++++++++++++++++++++++++++++++++++ 3 files changed, 149 insertions(+), 115 deletions(-) create mode 100644 cpukit/include/rtems/confdefs/mpci.h diff --git a/cpukit/headers.am b/cpukit/headers.am index 84e9523718..20059a7909 100644 --- a/cpukit/headers.am +++ b/cpukit/headers.am @@ -188,6 +188,7 @@ include_rtems_confdefs_HEADERS += include/rtems/confdefs/bsp.h include_rtems_confdefs_HEADERS += include/rtems/confdefs/libio.h include_rtems_confdefs_HEADERS += include/rtems/confdefs/libpci.h include_rtems_confdefs_HEADERS += include/rtems/confdefs/malloc.h +include_rtems_confdefs_HEADERS += include/rtems/confdefs/mpci.h include_rtems_confdefs_HEADERS += include/rtems/confdefs/obsolete.h include_rtems_confdefs_HEADERS += include/rtems/confdefs/percpu.h include_rtems_confdefs_HEADERS += include/rtems/confdefs/scheduler.h diff --git a/cpukit/include/rtems/confdefs.h b/cpukit/include/rtems/confdefs.h index 4f1ba45de8..a28e277311 100644 --- a/cpukit/include/rtems/confdefs.h +++ b/cpukit/include/rtems/confdefs.h @@ -54,6 +54,7 @@ #include <rtems/confdefs/libio.h> #include <rtems/confdefs/libpci.h> #include <rtems/confdefs/malloc.h> +#include <rtems/confdefs/mpci.h> #include <rtems/confdefs/percpu.h> #include <rtems/confdefs/scheduler.h> @@ -426,108 +427,6 @@ extern "C" { #endif /**@}*/ /* end of Device Driver Table Configuration */ -/** - * @defgroup ConfigurationMultiprocessing Multiprocessing Configuration - * - * @addtogroup Configuration - * - * This module contains the parameters related to the Multiprocessing - * configuration of RTEMS. - * - * In a single processor or SMP configuration, only two parameters are - * needed and they are defaulted. The user should not have to specify - * any parameters. - */ -/**@{*/ - -/** - * This defines the extra stack space required for the MPCI server thread. - */ -#ifndef CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK - #define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK 0 -#endif - -#if defined(RTEMS_MULTIPROCESSING) - /* - * Default Multiprocessing Configuration Table. The defaults are - * appropriate for most of the RTEMS Multiprocessor Test Suite. Each - * value may be overridden within each test to customize the environment. - */ - - #ifdef CONFIGURE_MP_APPLICATION - #ifndef CONFIGURE_MP_NODE_NUMBER - #define CONFIGURE_MP_NODE_NUMBER NODE_NUMBER - #endif - - #ifndef CONFIGURE_MP_MAXIMUM_NODES - #define CONFIGURE_MP_MAXIMUM_NODES 2 - #endif - - #ifndef CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS - #define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS 32 - #endif - - #ifndef CONFIGURE_MP_MAXIMUM_PROXIES - #define CONFIGURE_MP_MAXIMUM_PROXIES 32 - #endif - - #ifndef CONFIGURE_MP_MPCI_TABLE_POINTER - #include <mpci.h> - #define CONFIGURE_MP_MPCI_TABLE_POINTER &MPCI_table - #endif - - #ifdef CONFIGURE_INIT - #if CONFIGURE_MP_NODE_NUMBER < 1 - #error "CONFIGURE_MP_NODE_NUMBER must be greater than or equal to one" - #endif - - #if CONFIGURE_MP_NODE_NUMBER > CONFIGURE_MP_MAXIMUM_NODES - #error "CONFIGURE_MP_NODE_NUMBER must be less than or equal to CONFIGURE_MP_MAXIMUM_NODES" - #endif - - Objects_MP_Control _Objects_MP_Controls[ - CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS - ]; - - struct Thread_Configured_proxy_control { - Thread_Proxy_control Control; - Thread_queue_Configured_heads Heads; - }; - - static Thread_Configured_proxy_control _Thread_MP_Configured_proxies[ - CONFIGURE_MP_MAXIMUM_PROXIES - ]; - - Thread_Configured_proxy_control * const _Thread_MP_Proxies = - &_Thread_MP_Configured_proxies[ 0 ]; - - const MPCI_Configuration _MPCI_Configuration = { - CONFIGURE_MP_NODE_NUMBER, /* local node number */ - CONFIGURE_MP_MAXIMUM_NODES, /* maximum # nodes */ - CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS, /* maximum # global objects */ - CONFIGURE_MP_MAXIMUM_PROXIES, /* maximum # proxies */ - CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK, /* MPCI stack > minimum */ - CONFIGURE_MP_MPCI_TABLE_POINTER /* ptr to MPCI config table */ - }; - - char _MPCI_Receive_server_stack[ - CONFIGURE_MINIMUM_TASK_STACK_SIZE - + CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK - + CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK - + CPU_ALL_TASKS_ARE_FP * CONTEXT_FP_SIZE - ] RTEMS_ALIGNED( CPU_INTERRUPT_STACK_ALIGNMENT ) - RTEMS_SECTION( ".rtemsstack.mpci" ); - #endif - - #define _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT 1 - #else - #define _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT 0 - #endif /* CONFIGURE_MP_APPLICATION */ -#else - #define _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT 0 -#endif /* RTEMS_MULTIPROCESSING */ -/**@}*/ /* end of Multiprocessing Configuration */ - /** * This macro specifies that the user wants to use unlimited objects for any * classic or posix objects that have not already been given resource limits. @@ -1090,10 +989,6 @@ struct _reent *__getreent(void) #define _CONFIGURE_TASKS_STACK 0 #define _CONFIGURE_POSIX_THREADS_STACK 0 -#if CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK != 0 - #error "CONFIGURE_EXECUTIVE_RAM_SIZE defined with request for CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK" -#endif - #if CONFIGURE_EXTRA_TASK_STACKS != 0 #error "CONFIGURE_EXECUTIVE_RAM_SIZE defined with request for CONFIGURE_EXTRA_TASK_STACKS" #endif @@ -1524,15 +1419,6 @@ struct _reent *__getreent(void) #endif #endif -/* - * If the user is trying to configure a multiprocessing application and - * RTEMS was not configured and built multiprocessing, then error out. - */ -#if defined(CONFIGURE_MP_APPLICATION) && \ - !defined(RTEMS_MULTIPROCESSING) -#error "CONFIGURATION ERROR: RTEMS not configured for multiprocessing!!" -#endif - #if !defined(RTEMS_SCHEDSIM) /* * You must either explicitly include or exclude the clock driver. diff --git a/cpukit/include/rtems/confdefs/mpci.h b/cpukit/include/rtems/confdefs/mpci.h new file mode 100644 index 0000000000..053439bb2e --- /dev/null +++ b/cpukit/include/rtems/confdefs/mpci.h @@ -0,0 +1,147 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) + * + * 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. + * + * 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 OWNER 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. + */ + +/** + * @file + * + * @ingroup RTEMSApplicationConfiguration + * + * @brief Evaluate MPCI Configuration Options + * + * This header file defines _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT for use by + * other configuration header files. + */ + +#ifndef _RTEMS_CONFDEFS_MPCI_H +#define _RTEMS_CONFDEFS_MPCI_H + +#ifndef __CONFIGURATION_TEMPLATE_h +#error "Do not include this file directly, use <rtems/confdefs.h> instead" +#endif + +#ifdef CONFIGURE_INIT + +#ifdef RTEMS_MULTIPROCESSING + +#include <mpci.h> + +#ifdef CONFIGURE_MP_APPLICATION + +#ifndef CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK + #define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK 0 +#endif + +#ifndef CONFIGURE_MP_NODE_NUMBER + #define CONFIGURE_MP_NODE_NUMBER NODE_NUMBER +#endif + +#ifndef CONFIGURE_MP_MAXIMUM_NODES + #define CONFIGURE_MP_MAXIMUM_NODES 2 +#endif + +#ifndef CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS + #define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS 32 +#endif + +#ifndef CONFIGURE_MP_MAXIMUM_PROXIES + #define CONFIGURE_MP_MAXIMUM_PROXIES 32 +#endif + +#ifndef CONFIGURE_MP_MPCI_TABLE_POINTER + #define CONFIGURE_MP_MPCI_TABLE_POINTER &MPCI_table +#endif + +#if CONFIGURE_MP_NODE_NUMBER < 1 + #error "CONFIGURE_MP_NODE_NUMBER must be greater than or equal to one" +#endif + +#if CONFIGURE_MP_NODE_NUMBER > CONFIGURE_MP_MAXIMUM_NODES + #error "CONFIGURE_MP_NODE_NUMBER must be less than or equal to CONFIGURE_MP_MAXIMUM_NODES" +#endif + +#define _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT 1 + +#ifdef __cplusplus +extern "C" { +#endif + +Objects_MP_Control _Objects_MP_Controls[ + CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS +]; + +struct Thread_Configured_proxy_control { + Thread_Proxy_control Control; + Thread_queue_Configured_heads Heads; +}; + +static Thread_Configured_proxy_control _Thread_MP_Configured_proxies[ + CONFIGURE_MP_MAXIMUM_PROXIES +]; + +Thread_Configured_proxy_control * const _Thread_MP_Proxies = + &_Thread_MP_Configured_proxies[ 0 ]; + +const MPCI_Configuration _MPCI_Configuration = { + CONFIGURE_MP_NODE_NUMBER, + CONFIGURE_MP_MAXIMUM_NODES, + CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS, + CONFIGURE_MP_MAXIMUM_PROXIES, + CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK, + CONFIGURE_MP_MPCI_TABLE_POINTER +}; + +char _MPCI_Receive_server_stack[ + CONFIGURE_MINIMUM_TASK_STACK_SIZE + + CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK + + CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK + + CPU_ALL_TASKS_ARE_FP * CONTEXT_FP_SIZE +] RTEMS_ALIGNED( CPU_INTERRUPT_STACK_ALIGNMENT ) +RTEMS_SECTION( ".rtemsstack.mpci" ); + +#ifdef __cplusplus +} +#endif + +#else /* CONFIGURE_MP_APPLICATION */ + +#define _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT 0 + +#endif /* CONFIGURE_MP_APPLICATION */ + +#else /* RTEMS_MULTIPROCESSING */ + +#ifdef CONFIGURE_MP_APPLICATION + #error "CONFIGURE_MP_APPLICATION must not be defined if multiprocessing is disabled" +#endif + +#define _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT 0 + +#endif /* RTEMS_MULTIPROCESSING */ + +#endif /* CONFIGURE_INIT */ + +#endif /* _RTEMS_CONFDEFS_MPCI_H */ -- 2.16.4 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel