[PATCH 02/11] rtems: Generate <rtems/config.h>

Sebastian Huber sebastian.huber at embedded-brains.de
Mon Nov 9 14:49:30 UTC 2020


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

Update #3899.
Update #3993.
---
 cpukit/include/rtems/config.h | 528 +++++++++++++++++++++++++++-------
 1 file changed, 432 insertions(+), 96 deletions(-)

diff --git a/cpukit/include/rtems/config.h b/cpukit/include/rtems/config.h
index 1fbcf22f2e..9aa90ad0f3 100644
--- a/cpukit/include/rtems/config.h
+++ b/cpukit/include/rtems/config.h
@@ -1,189 +1,525 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
 /**
  * @file
  *
- * @brief Table of User Defined Configuration Parameters
+ * @ingroup RTEMSAPIConfig
  *
- * This include file contains the table of user defined configuration
- * parameters.
+ * @brief This header file provides parts of the application configuration
+ *   information API.
  */
 
 /*
- *  COPYRIGHT (c) 1989-2014.
- *  On-Line Applications Research Corporation (OAR).
+ * Copyright (C) 2009, 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.
  *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
+ * 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_CONFIG_H
-#define _RTEMS_CONFIG_H
-
 /*
- *  Unlimited object support. Changes the configuration table entry for POSIX
- *  or RTEMS APIs to bounded only by the memory of the work-space.
+ * Do not manually edit this file.  It is part of the RTEMS quality process
+ * and was automatically generated.
+ *
+ * If you find something that needs to be fixed or worded better please
+ * post a report to an RTEMS mailing list or raise a bug report:
+ *
+ * https://docs.rtems.org/branches/master/user/support/bugs.html
  *
- *  Use the macro to define the resource unlimited before placing in
- *  the configuration table.
+ * For information on updating and regenerating please refer to:
+ *
+ * https://docs.rtems.org/branches/master/eng/req/howto.html
  */
 
+/* Generated from spec:/rtems/config/if/header */
+
+#ifndef _RTEMS_CONFIG_H
+#define _RTEMS_CONFIG_H
+
+#include <stddef.h>
+#include <stdint.h>
+#include <rtems/rtems/config.h>
 #include <rtems/score/cpu.h>
-#include <rtems/score/object.h>
 #include <rtems/score/isr.h>
 #include <rtems/score/memory.h>
+#include <rtems/score/object.h>
 #include <rtems/score/smp.h>
 #include <rtems/score/stack.h>
-#include <rtems/score/userextdata.h>
 #include <rtems/score/threadidledata.h>
+#include <rtems/score/userextdata.h>
 #include <rtems/score/watchdogticks.h>
 #include <rtems/score/wkspacedata.h>
-#include <rtems/rtems/config.h>
-#include <rtems/extension.h>
+
 #if defined(RTEMS_MULTIPROCESSING)
-#include <rtems/rtems/types.h>
+  #include <rtems/rtems/types.h>
+  #include <rtems/score/mpci.h>
 #endif
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#define RTEMS_UNLIMITED_OBJECTS OBJECTS_UNLIMITED_OBJECTS
+/* Generated from spec:/rtems/config/if/group */
+
+/**
+ * @defgroup RTEMSAPIConfig Application Configuration Information
+ *
+ * @ingroup RTEMSAPI
+ *
+ * @brief The application configuration information group provides an API to
+ *   get the configuration of an application.
+ *
+ * Some interfaces of this API are also used to define application
+ * configuration option values, for example rtems_resource_unlimited().
+ */
 
-#define rtems_resource_unlimited(resource) \
-  ( resource | RTEMS_UNLIMITED_OBJECTS )
+/* Generated from spec:/rtems/config/if/get-copyright-notice */
 
-#define rtems_resource_is_unlimited(resource) \
-  _Objects_Is_unlimited(resource)
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the RTEMS copyright notice.
+ *
+ * @return Returns the pointer to the RTEMS copyright notice.
+ */
+const char *rtems_get_copyright_notice( void );
 
-#define rtems_resource_maximum_per_allocation(resource) \
-  _Objects_Maximum_per_allocation(resource)
+/* Generated from spec:/rtems/config/if/get-do-zero-of-workspace */
 
 /**
- * @copydoc Stack_Allocator_initialize
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Indicates if the RTEMS Workspace is configured to be zeroed during
+ *   system initialization for this application.
+ *
+ * See #CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY.
+ *
+ * @return Returns true, if the RTEMS Workspace is configured to be zeroed
+ *   during system initialization for this application, otherwise false.
  */
-typedef Stack_Allocator_initialize rtems_stack_allocate_init_hook;
+#define rtems_configuration_get_do_zero_of_workspace() _Memory_Zero_before_use
+
+/* Generated from spec:/rtems/config/if/get-idle-task */
 
 /**
- * @copydoc Stack_Allocator_allocate
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the IDLE task entry of this application.
+ *
+ * See #CONFIGURE_IDLE_TASK_BODY.
+ *
+ * @return Returns the IDLE task entry of this application.
  */
-typedef Stack_Allocator_allocate rtems_stack_allocate_hook;
+#define rtems_configuration_get_idle_task() _Thread_Idle_body
+
+/* Generated from spec:/rtems/config/if/get-idle-task-stack-size */
 
 /**
- * @copydoc Stack_Allocator_free
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the IDLE task stack size in bytes of this application.
+ *
+ * See #CONFIGURE_IDLE_TASK_STACK_SIZE.
+ *
+ * @return Returns the IDLE task stack size in bytes of this application.
  */
-typedef Stack_Allocator_free rtems_stack_free_hook;
+#define rtems_configuration_get_idle_task_stack_size() _Thread_Idle_stack_size
 
-/*
- *  Some handy macros to avoid dependencies on either the BSP
- *  or the exact format of the configuration table.
+/* Generated from spec:/rtems/config/if/get-interrupt-stack-size */
+
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the interrupt stack size in bytes of this application.
+ *
+ * See #CONFIGURE_INTERRUPT_STACK_SIZE.
+ *
+ * @return Returns the interrupt stack size in bytes of this application.
  */
+#define rtems_configuration_get_interrupt_stack_size() \
+  ((size_t) _ISR_Stack_size)
 
-#define rtems_configuration_get_unified_work_area() \
-        (_Workspace_Is_unified)
+/* Generated from spec:/rtems/config/if/get-maximum-extensions */
 
 /**
- * @brief Return if the stack allocator avoids the work space.
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the maximum number of Classic API User Extensions configured for
+ *   this application.
  *
- * @retval true The stack allocator must not allocate the thread stacks from the
- * RTEMS Workspace
+ * See #CONFIGURE_MAXIMUM_USER_EXTENSIONS.
  *
- * @retval false The stack allocator should allocate the thread stacks from the
- * RTEMS Workspace.
+ * @return Returns the maximum number of Classic API User Extensions configured
+ *   for this application.
  */
-#define rtems_configuration_get_stack_allocator_avoids_work_space() \
-  (_Stack_Allocator_avoids_workspace)
+uint32_t rtems_configuration_get_maximum_extensions( void );
 
-uintptr_t rtems_configuration_get_stack_space_size( void );
+/* Generated from spec:/rtems/config/if/get-maximum-processors */
 
-#define rtems_configuration_get_work_space_size() \
-        (_Workspace_Size + \
-          (rtems_configuration_get_stack_allocator_avoids_work_space() ? \
-            0 : rtems_configuration_get_stack_space_size()))
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the maximum number of processors configured for this
+ *   application.
+ *
+ * The actual number of processors available to the application is returned by
+ * rtems_scheduler_get_processor_maximum() which less than or equal to the
+ * configured maximum number of processors (#CONFIGURE_MAXIMUM_PROCESSORS).
+ *
+ * In uniprocessor configurations, this macro is a compile time constant which
+ * evaluates to one.
+ *
+ * @return Returns the maximum number of processors configured for this
+ *   application.
+ */
+#define rtems_configuration_get_maximum_processors() \
+  _SMP_Processor_configured_maximum
 
-uint32_t rtems_configuration_get_maximum_extensions( void );
+/* Generated from spec:/rtems/config/if/get-microseconds-per-tick */
 
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the number of microseconds per clock tick configured for this
+ *   application.
+ *
+ * See #CONFIGURE_MICROSECONDS_PER_TICK.
+ *
+ * @return Returns the number of microseconds per clock tick configured for
+ *   this application.
+ */
 #define rtems_configuration_get_microseconds_per_tick() \
-        (_Watchdog_Microseconds_per_tick)
+  _Watchdog_Microseconds_per_tick
+
+/* Generated from spec:/rtems/config/if/get-milliseconds-per-tick */
+
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the number of milliseconds per clock tick configured for this
+ *   application.
+ *
+ * See #CONFIGURE_MICROSECONDS_PER_TICK.
+ *
+ * @return Returns the number of milliseconds per clock tick configured for
+ *   this application.
+ */
 #define rtems_configuration_get_milliseconds_per_tick() \
-        (_Watchdog_Microseconds_per_tick / 1000)
+  ( _Watchdog_Microseconds_per_tick / 1000 )
+
+/* Generated from spec:/rtems/config/if/get-nanoseconds-per-tick */
+
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the number of microseconds per clock tick configured for this
+ *   application.
+ *
+ * See #CONFIGURE_MICROSECONDS_PER_TICK.
+ *
+ * @return Returns the number of microseconds per clock tick configured for
+ *   this application.
+ */
 #define rtems_configuration_get_nanoseconds_per_tick() \
-        (_Watchdog_Nanoseconds_per_tick)
+  _Watchdog_Nanoseconds_per_tick
 
-#define rtems_configuration_get_ticks_per_timeslice() \
-        (_Watchdog_Ticks_per_timeslice)
+/* Generated from spec:/rtems/config/if/get-number-of-initial-extensions */
 
-#define rtems_configuration_get_idle_task() \
-        (_Thread_Idle_entry)
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the number of initial extensions configured for this
+ *   application.
+ *
+ * See #CONFIGURE_INITIAL_EXTENSIONS.
+ *
+ * @return Returns the number of initial extensions configured for this
+ *   application.
+ */
+#define rtems_configuration_get_number_of_initial_extensions() \
+  ((uint32_t) _User_extensions_Initial_count)
 
-#define rtems_configuration_get_idle_task_stack_size() \
-        (_Thread_Idle_stack_size)
+/* Generated from spec:/rtems/config/if/get-stack-allocate-hook */
 
-#define rtems_configuration_get_interrupt_stack_size() \
-        ((size_t) _ISR_Stack_size)
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the thread stack allocator allocate hook configured for this
+ *   application.
+ *
+ * See #CONFIGURE_TASK_STACK_ALLOCATOR.
+ *
+ * @return Returns the thread stack allocator allocate hook configured for this
+ *   application.
+ */
+#define rtems_configuration_get_stack_allocate_hook() _Stack_Allocator_allocate
+
+/* Generated from spec:/rtems/config/if/get-stack-allocate-init-hook */
 
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the thread stack allocator initialization hook configured for
+ *   this application.
+ *
+ * See #CONFIGURE_TASK_STACK_ALLOCATOR_INIT.
+ *
+ * @return Returns the thread stack allocator initialization hook configured
+ *   for this application.
+ */
 #define rtems_configuration_get_stack_allocate_init_hook() \
-  (_Stack_Allocator_initialize)
+  _Stack_Allocator_initialize
 
-#define rtems_configuration_get_stack_allocate_hook() \
-  (_Stack_Allocator_allocate)
+/* Generated from spec:/rtems/config/if/get-stack-allocator-avoids-work-space */
 
-#define rtems_configuration_get_stack_free_hook() \
-  (_Stack_Allocator_free)
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Indicates if the thread stack allocator is configured to avoid the
+ *   RTEMS Workspace for this application.
+ *
+ * See #CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE.
+ *
+ * @return Returns true, if the thread stack allocator is configured to avoid
+ *   the RTEMS Workspace for this application, otherwise false.
+ */
+#define rtems_configuration_get_stack_allocator_avoids_work_space() \
+  _Stack_Allocator_avoids_workspace
 
- /**
-  * This macro assists in accessing the field which indicates whether
-  * RTEMS is responsible for zeroing the Executive Workspace.
-  */
-#define rtems_configuration_get_do_zero_of_workspace() \
-  _Memory_Zero_before_use
+/* Generated from spec:/rtems/config/if/get-stack-free-hook */
 
-#define rtems_configuration_get_number_of_initial_extensions() \
-  ((uint32_t) _User_extensions_Initial_count)
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the thread stack allocator free hook configured for this
+ *   application.
+ *
+ * See #CONFIGURE_TASK_STACK_DEALLOCATOR.
+ *
+ * @return Returns the thread stack allocator free hook configured for this
+ *   application.
+ */
+#define rtems_configuration_get_stack_free_hook() _Stack_Allocator_free
+
+/* Generated from spec:/rtems/config/if/get-stack-space-size */
+
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the thread stack space size in bytes of configured for this
+ *   application.
+ *
+ * @return Returns the thread stack space size in bytes of configured for this
+ *   application.
+ */
+uintptr_t rtems_configuration_get_stack_space_size( void );
+
+/* Generated from spec:/rtems/config/if/get-ticks-per-timeslice */
+
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the clock ticks per timeslice configured for this application.
+ *
+ * See #CONFIGURE_TICKS_PER_TIMESLICE.
+ *
+ * @return Returns the clock ticks per timeslice configured for this
+ *   application.
+ */
+#define rtems_configuration_get_ticks_per_timeslice() \
+  _Watchdog_Ticks_per_timeslice
+
+/* Generated from spec:/rtems/config/if/get-unified-work-area */
 
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Indicates if the RTEMS Workspace and C Program Heap are configured to
+ *   be unified for this application.
+ *
+ * See #CONFIGURE_UNIFIED_WORK_AREAS.
+ *
+ * @return Returns true, if the RTEMS Workspace and C Program Heap are
+ *   configured to be unified for this application, otherwise false.
+ */
+#define rtems_configuration_get_unified_work_area() _Workspace_Is_unified
+
+/* Generated from spec:/rtems/config/if/get-user-extension-table */
+
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the initial extensions table configured for this application.
+ *
+ * @return Returns the pointer to the initial extensions table configured for
+ *   this application.
+ */
 #define rtems_configuration_get_user_extension_table() \
-  (&_User_extensions_Initial_extensions[ 0 ])
+  _User_extensions_Initial_extensions
 
+/* Generated from spec:/rtems/config/if/get-user-multiprocessing-table */
+
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the MPCI configuration table configured for this application.
+ *
+ * @return Returns the pointer to the MPCI configuration table configured for
+ *   this application.
+ */
 #if defined(RTEMS_MULTIPROCESSING)
   #define rtems_configuration_get_user_multiprocessing_table() \
-    (&_MPCI_Configuration)
+    ( &_MPCI_Configuration )
 #else
-  #define rtems_configuration_get_user_multiprocessing_table() \
-    NULL
+  #define rtems_configuration_get_user_multiprocessing_table() NULL
 #endif
 
+/* Generated from spec:/rtems/config/if/get-version-string */
+
 /**
- * @brief Returns the configured maximum count of processors.
+ * @ingroup RTEMSAPIConfig
  *
- * The actual number of processors available for the application will be less
- * than or equal to the configured maximum count of processors.
+ * @brief Gets the RTEMS version string.
  *
- * On single-processor configurations this is a compile time constant which
- * evaluates to one.
+ * @return Returns the pointer to the RTEMS version string.
+ */
+const char *rtems_get_version_string( void );
+
+/* Generated from spec:/rtems/config/if/get-work-space-size */
+
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the RTEMS Workspace size in bytes configured for this
+ *   application.
  *
- * @return The configured maximum count of processors.
+ * @return Returns the RTEMS Workspace size in bytes configured for this
+ *   application.
  */
-#define rtems_configuration_get_maximum_processors() \
-        (_SMP_Processor_configured_maximum)
+#define rtems_configuration_get_work_space_size() \
+  ( _Workspace_Size + \
+    ( rtems_configuration_get_stack_allocator_avoids_work_space() ? \
+      0 : rtems_configuration_get_stack_space_size() ) )
+
+/* Generated from spec:/rtems/config/if/has-hardware-fp */
 
 /**
- * @brief Returns the pointer to the RTEMS copyright notice.
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief This constant evaluates to #TRUE, if this processor variant has
+ *   hardware floating point support, otherwise to #FALSE.
+ */
+#define RTEMS_HAS_HARDWARE_FP CPU_HARDWARE_FP
+
+/* Generated from spec:/rtems/config/if/resource-is-unlimited */
+
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Indicates if the resource is unlimited.
+ *
+ * This function is implemented as a macro and can be used to define compile
+ * time constants.
+ *
+ * @param _resource is the resource number.
+ *
+ * @return Returns true, if the resource is unlimited, otherwise false.
  */
-const char *rtems_get_copyright_notice(void);
+#define rtems_resource_is_unlimited( _resource ) \
+  _Objects_Is_unlimited(_resource)
+
+/* Generated from spec:/rtems/config/if/resource-maximum-per-allocation */
 
 /**
- * @brief Returns the pointer to the RTEMS version string.
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Gets the maximum number per allocation of a resource number.
+ *
+ * This function is implemented as a macro and can be used to define compile
+ * time constants.
+ *
+ * @param _resource is the resource number.
+ *
+ * @return Returns the maximum number per allocation of a resource number.
  */
-const char *rtems_get_version_string(void);
+#define rtems_resource_maximum_per_allocation( _resource ) \
+  _Objects_Maximum_per_allocation(_resource)
+
+/* Generated from spec:/rtems/config/if/stack-allocate-hook */
 
 /**
- * @brief Indicates whether this processor variant has hardware floating point
- * support.
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief A thread stack allocator allocate handler shall have this type.
  */
-#define RTEMS_HAS_HARDWARE_FP CPU_HARDWARE_FP
+typedef Stack_Allocator_allocate rtems_stack_allocate_hook;
+
+/* Generated from spec:/rtems/config/if/stack-allocate-init-hook */
+
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief A thread stack allocator initialization handler shall have this type.
+ */
+typedef Stack_Allocator_initialize rtems_stack_allocate_init_hook;
+
+/* Generated from spec:/rtems/config/if/stack-free-hook */
+
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief A thread stack allocator free handler shall have this type.
+ */
+typedef Stack_Allocator_free rtems_stack_free_hook;
+
+/* Generated from spec:/rtems/config/if/unlimited-objects */
+
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief This flag is used in augment a resource number so that it indicates
+ *   an unlimited resource.
+ */
+#define RTEMS_UNLIMITED_OBJECTS OBJECTS_UNLIMITED_OBJECTS
+
+/* Generated from spec:/rtems/config/if/resource-unlimited */
+
+/**
+ * @ingroup RTEMSAPIConfig
+ *
+ * @brief Augments the resource number so that it indicates an unlimited
+ *   resource.
+ *
+ * This function is implemented as a macro and can be used to define compile
+ * time constants.
+ *
+ * @param _resource is the resource number to augment.
+ *
+ * @return Returns the resource number augmented to indicate an unlimited
+ *   resource.
+ */
+#define rtems_resource_unlimited( _resource ) \
+  ( (_resource) | RTEMS_UNLIMITED_OBJECTS )
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif
-/* end of include file */
+#endif /* _RTEMS_CONFIG_H */
-- 
2.26.2



More information about the devel mailing list