ChibiOS
21.11.4
chport.h
Go to the documentation of this file.
1
/*
2
ChibiOS - Copyright (C) 2006,2007,2008,2009,2010,2011,2012,2013,2014,
3
2015,2016,2017,2018,2019,2020,2021 Giovanni Di Sirio.
4
5
This file is part of ChibiOS.
6
7
ChibiOS is free software; you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published by
9
the Free Software Foundation version 3 of the License.
10
11
ChibiOS is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with this program. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
/**
21
* @file rt/include/chport.h
22
* @brief Port wrapper header.
23
*
24
* @addtogroup port_wrapper
25
* @details This module performs checks on the information exported by
26
* the port layer. The port layer is checked at compile time
27
* in order to make sure that it exports all the required macros
28
* and definitions.
29
* @note This module does not export any functionality.
30
* @{
31
*/
32
33
#ifndef CHPORT_H
34
#define CHPORT_H
35
36
/* Inclusion of the port layer.*/
37
#include "
chcore.h
"
38
39
/*===========================================================================*/
40
/* Module constants. */
41
/*===========================================================================*/
42
43
/*===========================================================================*/
44
/* Module pre-compile time settings. */
45
/*===========================================================================*/
46
47
/*===========================================================================*/
48
/* Derived constants and error checks. */
49
/*===========================================================================*/
50
51
/* Required macros checks.*/
52
#if !defined(PORT_COMPILER_NAME)
53
#error "PORT_COMPILER_NAME not defined in chcore.h"
54
#endif
55
56
#if !defined(PORT_IDLE_THREAD_STACK_SIZE)
57
#error "PORT_IDLE_THREAD_STACK_SIZE not defined in chcore.h"
58
#endif
59
60
#if !defined(PORT_INT_REQUIRED_STACK)
61
#error "PORT_INT_REQUIRED_STACK not defined in chcore.h"
62
#endif
63
64
#if !defined(PORT_SUPPORTS_RT)
65
#error "PORT_SUPPORTS_RT not defined in chcore.h"
66
#endif
67
68
#if !defined(PORT_NATURAL_ALIGN)
69
#error "PORT_NATURAL_ALIGN not defined in chcore.h"
70
#endif
71
72
#if !defined(PORT_STACK_ALIGN)
73
#error "PORT_STACK_ALIGN not defined in chcore.h"
74
#endif
75
76
#if !defined(PORT_WORKING_AREA_ALIGN)
77
#error "PORT_WORKING_AREA_ALIGN not defined in chcore.h"
78
#endif
79
80
#if !defined(PORT_ARCHITECTURE_NAME)
81
#error "PORT_ARCHITECTURE_NAME not defined in chcore.h"
82
#endif
83
84
#if !defined(PORT_CORE_VARIANT_NAME)
85
#error "PORT_CORE_VARIANT_NAME not defined in chcore.h"
86
#endif
87
88
#if !defined(PORT_INFO)
89
#error "PORT_INFO not defined in chcore.h"
90
#endif
91
92
#if !defined(PORT_IRQ_IS_VALID_PRIORITY)
93
#error "PORT_IRQ_IS_VALID_PRIORITY not defined in chcore.h"
94
#endif
95
96
#if !defined(PORT_IRQ_IS_VALID_KERNEL_PRIORITY)
97
#error "PORT_IRQ_IS_VALID_KERNEL_PRIORITY not defined in chcore.h"
98
#endif
99
100
#if !defined(PORT_SETUP_CONTEXT)
101
#error "PORT_SETUP_CONTEXT not defined in chcore.h"
102
#endif
103
104
#if !defined(PORT_WA_SIZE)
105
#error "PORT_WA_SIZE not defined in chcore.h"
106
#endif
107
108
#if !defined(PORT_IRQ_PROLOGUE)
109
#error "PORT_IRQ_PROLOGUE not defined in chcore.h"
110
#endif
111
112
#if !defined(PORT_IRQ_EPILOGUE)
113
#error "PORT_IRQ_EPILOGUE not defined in chcore.h"
114
#endif
115
116
#if !defined(PORT_IRQ_HANDLER)
117
#error "PORT_IRQ_HANDLER not defined in chcore.h"
118
#endif
119
120
#if !defined(PORT_FAST_IRQ_HANDLER)
121
#error "PORT_FAST_IRQ_HANDLER not defined in chcore.h"
122
#endif
123
124
/* Just in case the port layer does not export the following definitions.*/
125
#if !defined(PORT_CORES_NUMBER)
126
#define PORT_CORES_NUMBER 1
127
#endif
128
129
#if (PORT_CORES_NUMBER < 1) || (PORT_CORES_NUMBER > 64)
130
#error "invalid PORT_CORES_NUMBER value"
131
#endif
132
133
#if PORT_CORES_NUMBER == 1
134
#if CH_CFG_SMP_MODE != FALSE
135
#error "this port does not support SMP"
136
#endif
137
#endif
138
139
/* Recursive locks port capability assessed.*/
140
#if defined(port_get_lock_status) && defined(port_is_locked)
141
#define CH_PORT_SUPPORTS_RECURSIVE_LOCKS TRUE
142
#else
143
#define CH_PORT_SUPPORTS_RECURSIVE_LOCKS FALSE
144
#endif
145
146
/*===========================================================================*/
147
/* Module data structures and types. */
148
/*===========================================================================*/
149
150
/*===========================================================================*/
151
/* Module macros. */
152
/*===========================================================================*/
153
154
/*===========================================================================*/
155
/* External declarations. */
156
/*===========================================================================*/
157
158
/*===========================================================================*/
159
/* Module inline functions. */
160
/*===========================================================================*/
161
162
#endif
/* CHPORT_H */
163
164
/** @} */
chcore.h
Port related template macros and structures.
os
rt
include
chport.h
Generated on
for ChibiOS by
1.14.0