mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-20 21:44:05 +08:00
config: Add <rtems/confdefs/mcpi.h>
Remove all comments and copyrightable content from the moved content. Use BSD-2-Clause license for new file. Update #3053. Update #3875.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
/* SPDX-License-Identifier: BSD-2-Clause */
|
||||
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* @ingroup RTEMSApplicationConfiguration
|
||||
*
|
||||
* @brief Evaluate MPCI Configuration Options
|
||||
*
|
||||
* This header file defines _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT for use by
|
||||
* other configuration header files.
|
||||
*/
|
||||
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#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
|
||||
|
||||
#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
|
||||
#include <mpci.h>
|
||||
|
||||
#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 */
|
||||
Reference in New Issue
Block a user