RTEMS 6.1-rc7
Loading...
Searching...
No Matches
mpci.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-2-Clause */
2
12/*
13 * Copyright (C) 2020 embedded brains GmbH & Co. KG
14 *
15 * Redistribution and use in source and binary forms, with or without
16 * modification, are permitted provided that the following conditions
17 * are met:
18 * 1. Redistributions of source code must retain the above copyright
19 * notice, this list of conditions and the following disclaimer.
20 * 2. Redistributions in binary form must reproduce the above copyright
21 * notice, this list of conditions and the following disclaimer in the
22 * documentation and/or other materials provided with the distribution.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 * POSSIBILITY OF SUCH DAMAGE.
35 */
36
37#ifndef _RTEMS_CONFDEFS_MPCI_H
38#define _RTEMS_CONFDEFS_MPCI_H
39
40#ifndef __CONFIGURATION_TEMPLATE_h
41#error "Do not include this file directly, use <rtems/confdefs.h> instead"
42#endif
43
44#ifdef CONFIGURE_INIT
45
46#ifdef RTEMS_MULTIPROCESSING
47
48#ifdef CONFIGURE_MP_APPLICATION
49
51
52#ifndef CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
53 #define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK 0
54#endif
55
56#ifndef CONFIGURE_MP_NODE_NUMBER
57 #define CONFIGURE_MP_NODE_NUMBER NODE_NUMBER
58#endif
59
60#ifndef CONFIGURE_MP_MAXIMUM_NODES
61 #define CONFIGURE_MP_MAXIMUM_NODES 2
62#endif
63
64#ifndef CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
65 #define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS 32
66#endif
67
68#ifndef CONFIGURE_MP_MAXIMUM_PROXIES
69 #define CONFIGURE_MP_MAXIMUM_PROXIES 32
70#endif
71
72#ifndef CONFIGURE_MP_MPCI_TABLE_POINTER
73 #include <mpci.h>
74
75 #define CONFIGURE_MP_MPCI_TABLE_POINTER &MPCI_table
76#endif
77
78#if CONFIGURE_MP_NODE_NUMBER < 1
79 #error "CONFIGURE_MP_NODE_NUMBER must be greater than or equal to one"
80#endif
81
82#if CONFIGURE_MP_NODE_NUMBER > CONFIGURE_MP_MAXIMUM_NODES
83 #error "CONFIGURE_MP_NODE_NUMBER must be less than or equal to CONFIGURE_MP_MAXIMUM_NODES"
84#endif
85
86#ifdef __cplusplus
87extern "C" {
88#endif
89
90Objects_MP_Control _Objects_MP_Controls[
92];
93
94struct Thread_Configured_proxy_control {
97};
98
99static Thread_Configured_proxy_control _Thread_MP_Configured_proxies[
101];
102
103Thread_Configured_proxy_control * const _Thread_MP_Proxies =
104 &_Thread_MP_Configured_proxies[ 0 ];
105
113};
114
118 + CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK
119 + CPU_ALL_TASKS_ARE_FP * CONTEXT_FP_SIZE
120] RTEMS_ALIGNED( CPU_INTERRUPT_STACK_ALIGNMENT )
121RTEMS_SECTION( ".rtemsstack.mpci" );
122
123#ifdef __cplusplus
124}
125#endif
126
127#endif /* CONFIGURE_MP_APPLICATION */
128
129#else /* RTEMS_MULTIPROCESSING */
130
131#ifdef CONFIGURE_MP_APPLICATION
132 #error "CONFIGURE_MP_APPLICATION must not be defined if multiprocessing is disabled"
133#endif
134
135#endif /* RTEMS_MULTIPROCESSING */
136
137#endif /* CONFIGURE_INIT */
138
139#endif /* _RTEMS_CONFDEFS_MPCI_H */
#define RTEMS_SECTION(_section)
Instructs the compiler to place the variable or function in the section.
Definition: basedefs.h:411
#define RTEMS_ALIGNED(_alignment)
Instructs the compiler in a declaration or definition to enforce the alignment.
Definition: basedefs.h:157
#define CONFIGURE_MINIMUM_TASK_STACK_SIZE
This configuration option is an integer define.
Definition: appl-config.h:3281
#define CONFIGURE_MP_MPCI_TABLE_POINTER
This configuration option is an initializer define.
Definition: appl-config.h:3869
#define CONFIGURE_MP_NODE_NUMBER
This configuration option is an integer define.
Definition: appl-config.h:3906
#define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
This configuration option is an integer define.
Definition: appl-config.h:3714
#define CONFIGURE_MP_MAXIMUM_PROXIES
This configuration option is an integer define.
Definition: appl-config.h:3840
#define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
This configuration option is an integer define.
Definition: appl-config.h:3772
#define CONFIGURE_MP_MAXIMUM_NODES
This configuration option is an integer define.
Definition: appl-config.h:3802
#define CONTEXT_FP_SIZE
Size of floating point context area.
Definition: context.h:70
char _MPCI_Receive_server_stack[]
The MPCI receive server stack.
const MPCI_Configuration _MPCI_Configuration
The MPCI configuration.
Definition: mpcidefault.c:54
Definition: mpci.h:155
Definition: thread.h:582
Thread queue heads.
Definition: threadq.h:385
This header file evaluates configuration options related to the thread configuration.