source: rtems/cpukit/include/rtems/config.h @ 1af94608

Last change on this file since 1af94608 was 1af94608, checked in by Sebastian Huber <sebastian.huber@…>, on 05/28/20 at 11:47:15

rtems: Generate <rtems/config.h>

Change license to BSD-2-Clause according to file histories and
documentation re-licensing agreement.

Update #3899.
Update #3993.

  • Property mode set to 100644
File size: 15.1 KB
Line 
1/* SPDX-License-Identifier: BSD-2-Clause */
2
3/**
4 * @file
5 *
6 * @ingroup RTEMSAPIConfig
7 *
8 * @brief This header file provides parts of the application configuration
9 *   information API.
10 */
11
12/*
13 * Copyright (C) 2009, 2020 embedded brains GmbH (http://www.embedded-brains.de)
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/*
38 * This file is part of the RTEMS quality process and was automatically
39 * generated.  If you find something that needs to be fixed or
40 * worded better please post a report or patch to an RTEMS mailing list
41 * or raise a bug report:
42 *
43 * https://docs.rtems.org/branches/master/user/support/bugs.html
44 *
45 * For information on updating and regenerating please refer to:
46 *
47 * https://docs.rtems.org/branches/master/eng/req/howto.html
48 */
49
50/* Generated from spec:/rtems/config/if/header */
51
52#ifndef _RTEMS_CONFIG_H
53#define _RTEMS_CONFIG_H
54
55#include <stddef.h>
56#include <stdint.h>
57#include <rtems/rtems/config.h>
58#include <rtems/score/cpu.h>
59#include <rtems/score/isr.h>
60#include <rtems/score/memory.h>
61#include <rtems/score/object.h>
62#include <rtems/score/smp.h>
63#include <rtems/score/stack.h>
64#include <rtems/score/threadidledata.h>
65#include <rtems/score/userextdata.h>
66#include <rtems/score/watchdogticks.h>
67#include <rtems/score/wkspacedata.h>
68
69#if defined(RTEMS_MULTIPROCESSING)
70  #include <rtems/rtems/types.h>
71  #include <rtems/score/mpci.h>
72#endif
73
74#ifdef __cplusplus
75extern "C" {
76#endif
77
78/* Generated from spec:/rtems/config/if/group */
79
80/**
81 * @defgroup RTEMSAPIConfig Application Configuration Information
82 *
83 * @ingroup RTEMSAPI
84 *
85 * @brief The application configuration information group provides an API to
86 *   get the configuration of an application.
87 *
88 * Some interfaces of this API are also used to define application
89 * configuration option values, for example rtems_resource_unlimited().
90 */
91
92/* Generated from spec:/rtems/config/if/get-copyright-notice */
93
94/**
95 * @ingroup RTEMSAPIConfig
96 *
97 * @brief Gets the RTEMS copyright notice.
98 *
99 * @return Returns the pointer to the RTEMS copyright notice.
100 */
101const char *rtems_get_copyright_notice( void );
102
103/* Generated from spec:/rtems/config/if/get-do-zero-of-workspace */
104
105/**
106 * @ingroup RTEMSAPIConfig
107 *
108 * @brief Indicates if the RTEMS Workspace is configured to be zeroed during
109 *   system initialization for this application.
110 *
111 * See #CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY.
112 *
113 * @return Returns true, if the RTEMS Workspace is configured to be zeroed
114 *   during system initialization for this application, otherwise false.
115 */
116#define rtems_configuration_get_do_zero_of_workspace() _Memory_Zero_before_use
117
118/* Generated from spec:/rtems/config/if/get-idle-task */
119
120/**
121 * @ingroup RTEMSAPIConfig
122 *
123 * @brief Gets the IDLE task entry of this application.
124 *
125 * See #CONFIGURE_IDLE_TASK_BODY.
126 *
127 * @return Returns the IDLE task entry of this application.
128 */
129#define rtems_configuration_get_idle_task() _Thread_Idle_body
130
131/* Generated from spec:/rtems/config/if/get-idle-task-stack-size */
132
133/**
134 * @ingroup RTEMSAPIConfig
135 *
136 * @brief Gets the IDLE task stack size in bytes of this application.
137 *
138 * See #CONFIGURE_IDLE_TASK_STACK_SIZE.
139 *
140 * @return Returns the IDLE task stack size in bytes of this application.
141 */
142#define rtems_configuration_get_idle_task_stack_size() _Thread_Idle_stack_size
143
144/* Generated from spec:/rtems/config/if/get-interrupt-stack-size */
145
146/**
147 * @ingroup RTEMSAPIConfig
148 *
149 * @brief Gets the interrupt stack size in bytes of this application.
150 *
151 * See #CONFIGURE_INTERRUPT_STACK_SIZE.
152 *
153 * @return Returns the interrupt stack size in bytes of this application.
154 */
155#define rtems_configuration_get_interrupt_stack_size() \
156  ((size_t) _ISR_Stack_size)
157
158/* Generated from spec:/rtems/config/if/get-maximum-extensions */
159
160/**
161 * @ingroup RTEMSAPIConfig
162 *
163 * @brief Gets the maximum number of Classic API User Extensions configured for
164 *   this application.
165 *
166 * See #CONFIGURE_MAXIMUM_USER_EXTENSIONS.
167 *
168 * @return Returns the maximum number of Classic API User Extensions configured
169 *   for this application.
170 */
171uint32_t rtems_configuration_get_maximum_extensions( void );
172
173/* Generated from spec:/rtems/config/if/get-maximum-processors */
174
175/**
176 * @ingroup RTEMSAPIConfig
177 *
178 * @brief Gets the maximum number of processors configured for this
179 *   application.
180 *
181 * The actual number of processors available to the application is returned by
182 * rtems_scheduler_get_processor_maximum() which less than or equal to the
183 * configured maximum number of processors (#CONFIGURE_MAXIMUM_PROCESSORS).
184 *
185 * In uniprocessor configurations, this macro is a compile time constant which
186 * evaluates to one.
187 *
188 * @return Returns the maximum number of processors configured for this
189 *   application.
190 */
191#define rtems_configuration_get_maximum_processors() \
192  _SMP_Processor_configured_maximum
193
194/* Generated from spec:/rtems/config/if/get-microseconds-per-tick */
195
196/**
197 * @ingroup RTEMSAPIConfig
198 *
199 * @brief Gets the number of microseconds per clock tick configured for this
200 *   application.
201 *
202 * See #CONFIGURE_MICROSECONDS_PER_TICK.
203 *
204 * @return Returns the number of microseconds per clock tick configured for
205 *   this application.
206 */
207#define rtems_configuration_get_microseconds_per_tick() \
208  _Watchdog_Microseconds_per_tick
209
210/* Generated from spec:/rtems/config/if/get-milliseconds-per-tick */
211
212/**
213 * @ingroup RTEMSAPIConfig
214 *
215 * @brief Gets the number of milliseconds per clock tick configured for this
216 *   application.
217 *
218 * See #CONFIGURE_MICROSECONDS_PER_TICK.
219 *
220 * @return Returns the number of milliseconds per clock tick configured for
221 *   this application.
222 */
223#define rtems_configuration_get_milliseconds_per_tick() \
224  ( _Watchdog_Microseconds_per_tick / 1000 )
225
226/* Generated from spec:/rtems/config/if/get-nanoseconds-per-tick */
227
228/**
229 * @ingroup RTEMSAPIConfig
230 *
231 * @brief Gets the number of microseconds per clock tick configured for this
232 *   application.
233 *
234 * See #CONFIGURE_MICROSECONDS_PER_TICK.
235 *
236 * @return Returns the number of microseconds per clock tick configured for
237 *   this application.
238 */
239#define rtems_configuration_get_nanoseconds_per_tick() \
240  _Watchdog_Nanoseconds_per_tick
241
242/* Generated from spec:/rtems/config/if/get-number-of-initial-extensions */
243
244/**
245 * @ingroup RTEMSAPIConfig
246 *
247 * @brief Gets the number of initial extensions configured for this
248 *   application.
249 *
250 * See #CONFIGURE_INITIAL_EXTENSIONS.
251 *
252 * @return Returns the number of initial extensions configured for this
253 *   application.
254 */
255#define rtems_configuration_get_number_of_initial_extensions() \
256  ((uint32_t) _User_extensions_Initial_count)
257
258/* Generated from spec:/rtems/config/if/get-stack-allocate-hook */
259
260/**
261 * @ingroup RTEMSAPIConfig
262 *
263 * @brief Gets the thread stack allocator allocate hook configured for this
264 *   application.
265 *
266 * See #CONFIGURE_TASK_STACK_ALLOCATOR.
267 *
268 * @return Returns the thread stack allocator allocate hook configured for this
269 *   application.
270 */
271#define rtems_configuration_get_stack_allocate_hook() _Stack_Allocator_allocate
272
273/* Generated from spec:/rtems/config/if/get-stack-allocate-init-hook */
274
275/**
276 * @ingroup RTEMSAPIConfig
277 *
278 * @brief Gets the thread stack allocator initialization hook configured for
279 *   this application.
280 *
281 * See #CONFIGURE_TASK_STACK_ALLOCATOR_INIT.
282 *
283 * @return Returns the thread stack allocator initialization hook configured
284 *   for this application.
285 */
286#define rtems_configuration_get_stack_allocate_init_hook() \
287  _Stack_Allocator_initialize
288
289/* Generated from spec:/rtems/config/if/get-stack-allocator-avoids-work-space */
290
291/**
292 * @ingroup RTEMSAPIConfig
293 *
294 * @brief Indicates if the thread stack allocator is configured to avoid the
295 *   RTEMS Workspace for this application.
296 *
297 * See #CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE.
298 *
299 * @return Returns true, if the thread stack allocator is configured to avoid
300 *   the RTEMS Workspace for this application, otherwise false.
301 */
302#define rtems_configuration_get_stack_allocator_avoids_work_space() \
303  _Stack_Allocator_avoids_workspace
304
305/* Generated from spec:/rtems/config/if/get-stack-free-hook */
306
307/**
308 * @ingroup RTEMSAPIConfig
309 *
310 * @brief Gets the thread stack allocator free hook configured for this
311 *   application.
312 *
313 * See #CONFIGURE_TASK_STACK_DEALLOCATOR.
314 *
315 * @return Returns the thread stack allocator free hook configured for this
316 *   application.
317 */
318#define rtems_configuration_get_stack_free_hook() _Stack_Allocator_free
319
320/* Generated from spec:/rtems/config/if/get-stack-space-size */
321
322/**
323 * @ingroup RTEMSAPIConfig
324 *
325 * @brief Gets the thread stack space size in bytes of configured for this
326 *   application.
327 *
328 * @return Returns the thread stack space size in bytes of configured for this
329 *   application.
330 */
331uintptr_t rtems_configuration_get_stack_space_size( void );
332
333/* Generated from spec:/rtems/config/if/get-ticks-per-timeslice */
334
335/**
336 * @ingroup RTEMSAPIConfig
337 *
338 * @brief Gets the clock ticks per timeslice configured for this application.
339 *
340 * See #CONFIGURE_TICKS_PER_TIMESLICE.
341 *
342 * @return Returns the clock ticks per timeslice configured for this
343 *   application.
344 */
345#define rtems_configuration_get_ticks_per_timeslice() \
346  _Watchdog_Ticks_per_timeslice
347
348/* Generated from spec:/rtems/config/if/get-unified-work-area */
349
350/**
351 * @ingroup RTEMSAPIConfig
352 *
353 * @brief Indicates if the RTEMS Workspace and C Program Heap are configured to
354 *   be unified for this application.
355 *
356 * See #CONFIGURE_UNIFIED_WORK_AREAS.
357 *
358 * @return Returns true, if the RTEMS Workspace and C Program Heap are
359 *   configured to be unified for this application, otherwise false.
360 */
361#define rtems_configuration_get_unified_work_area() _Workspace_Is_unified
362
363/* Generated from spec:/rtems/config/if/get-user-extension-table */
364
365/**
366 * @ingroup RTEMSAPIConfig
367 *
368 * @brief Gets the initial extensions table configured for this application.
369 *
370 * @return Returns the pointer to the initial extensions table configured for
371 *   this application.
372 */
373#define rtems_configuration_get_user_extension_table() \
374  _User_extensions_Initial_extensions
375
376/* Generated from spec:/rtems/config/if/get-user-multiprocessing-table */
377
378/**
379 * @ingroup RTEMSAPIConfig
380 *
381 * @brief Gets the MPCI configuration table configured for this application.
382 *
383 * @return Returns the pointer to the MPCI configuration table configured for
384 *   this application.
385 */
386#if defined(RTEMS_MULTIPROCESSING)
387  #define rtems_configuration_get_user_multiprocessing_table() \
388    ( &_MPCI_Configuration )
389#else
390  #define rtems_configuration_get_user_multiprocessing_table() NULL
391#endif
392
393/* Generated from spec:/rtems/config/if/get-version-string */
394
395/**
396 * @ingroup RTEMSAPIConfig
397 *
398 * @brief Gets the RTEMS version string.
399 *
400 * @return Returns the pointer to the RTEMS version string.
401 */
402const char *rtems_get_version_string( void );
403
404/* Generated from spec:/rtems/config/if/get-work-space-size */
405
406/**
407 * @ingroup RTEMSAPIConfig
408 *
409 * @brief Gets the RTEMS Workspace size in bytes configured for this
410 *   application.
411 *
412 * @return Returns the RTEMS Workspace size in bytes configured for this
413 *   application.
414 */
415#define rtems_configuration_get_work_space_size() \
416  ( _Workspace_Size + \
417    ( rtems_configuration_get_stack_allocator_avoids_work_space() ? \
418      0 : rtems_configuration_get_stack_space_size() ) )
419
420/* Generated from spec:/rtems/config/if/has-hardware-fp */
421
422/**
423 * @ingroup RTEMSAPIConfig
424 *
425 * @brief This constant evaluates to #TRUE, if this processor variant has
426 *   hardware floating point support, otherwise to #FALSE.
427 */
428#define RTEMS_HAS_HARDWARE_FP CPU_HARDWARE_FP
429
430/* Generated from spec:/rtems/config/if/resource-is-unlimited */
431
432/**
433 * @ingroup RTEMSAPIConfig
434 *
435 * @brief Indicates if the resource is unlimited.
436 *
437 * This function is implemented as a macro and can be used to define compile
438 * time constants.
439 *
440 * @param _resource is the resource number.
441 *
442 * @return Returns true, if the resource is unlimited, otherwise false.
443 */
444#define rtems_resource_is_unlimited( _resource ) \
445  _Objects_Is_unlimited( _resource )
446
447/* Generated from spec:/rtems/config/if/resource-maximum-per-allocation */
448
449/**
450 * @ingroup RTEMSAPIConfig
451 *
452 * @brief Gets the maximum number per allocation of a resource number.
453 *
454 * This function is implemented as a macro and can be used to define compile
455 * time constants.
456 *
457 * @param _resource is the resource number.
458 *
459 * @return Returns the maximum number per allocation of a resource number.
460 */
461#define rtems_resource_maximum_per_allocation( _resource ) \
462  _Objects_Maximum_per_allocation( _resource )
463
464/* Generated from spec:/rtems/config/if/stack-allocate-hook */
465
466/**
467 * @ingroup RTEMSAPIConfig
468 *
469 * @brief A thread stack allocator allocate handler shall have this type.
470 */
471typedef Stack_Allocator_allocate rtems_stack_allocate_hook;
472
473/* Generated from spec:/rtems/config/if/stack-allocate-init-hook */
474
475/**
476 * @ingroup RTEMSAPIConfig
477 *
478 * @brief A thread stack allocator initialization handler shall have this type.
479 */
480typedef Stack_Allocator_initialize rtems_stack_allocate_init_hook;
481
482/* Generated from spec:/rtems/config/if/stack-free-hook */
483
484/**
485 * @ingroup RTEMSAPIConfig
486 *
487 * @brief A thread stack allocator free handler shall have this type.
488 */
489typedef Stack_Allocator_free rtems_stack_free_hook;
490
491/* Generated from spec:/rtems/config/if/unlimited-objects */
492
493/**
494 * @ingroup RTEMSAPIConfig
495 *
496 * @brief This flag is used in augment a resource number so that it indicates
497 *   an unlimited resource.
498 */
499#define RTEMS_UNLIMITED_OBJECTS OBJECTS_UNLIMITED_OBJECTS
500
501/* Generated from spec:/rtems/config/if/resource-unlimited */
502
503/**
504 * @ingroup RTEMSAPIConfig
505 *
506 * @brief Augments the resource number so that it indicates an unlimited
507 *   resource.
508 *
509 * This function is implemented as a macro and can be used to define compile
510 * time constants.
511 *
512 * @param _resource is the resource number to augment.
513 *
514 * @return Returns the resource number augmented to indicate an unlimited
515 *   resource.
516 */
517#define rtems_resource_unlimited( _resource ) \
518  ( ( _resource ) | RTEMS_UNLIMITED_OBJECTS )
519
520#ifdef __cplusplus
521}
522#endif
523
524#endif /* _RTEMS_CONFIG_H */
Note: See TracBrowser for help on using the repository browser.