[489740f] | 1 | .. comment SPDX-License-Identifier: CC-BY-SA-4.0 |
---|
| 2 | |
---|
[c9aaf31] | 3 | .. COMMENT: COPYRIGHT (c) 1988-2008. |
---|
| 4 | .. COMMENT: On-Line Applications Research Corporation (OAR). |
---|
| 5 | .. COMMENT: All rights reserved. |
---|
| 6 | |
---|
[9aafb39] | 7 | .. _Configuring a System: |
---|
| 8 | |
---|
[6c56401] | 9 | .. index:: configuring a system |
---|
| 10 | |
---|
[fd6dc8c8] | 11 | Configuring a System |
---|
[4da4a15] | 12 | ******************** |
---|
[fd6dc8c8] | 13 | |
---|
| 14 | Introduction |
---|
| 15 | ============ |
---|
| 16 | |
---|
[c9aaf31] | 17 | RTEMS must be configured for an application. This configuration encompasses a |
---|
| 18 | variety of information including the length of each clock tick, the maximum |
---|
| 19 | number of each information RTEMS object that can be created, the application |
---|
| 20 | initialization tasks, the task scheduling algorithm to be used, and the device |
---|
| 21 | drivers in the application. |
---|
| 22 | |
---|
| 23 | Although this information is contained in data structures that are used by |
---|
[265cc70] | 24 | RTEMS at system initialization time, the data structures themselves must not be |
---|
| 25 | generated by hand. RTEMS provides a set of macros system which provides a |
---|
| 26 | simple standard mechanism to automate the generation of these structures. |
---|
[c9aaf31] | 27 | |
---|
[fd6dc8c8] | 28 | .. index:: confdefs.h |
---|
| 29 | .. index:: <rtems/confdefs.h> |
---|
| 30 | |
---|
[c9aaf31] | 31 | The RTEMS header file ``<rtems/confdefs.h>`` is at the core of the automatic |
---|
| 32 | generation of system configuration. It is based on the idea of setting macros |
---|
| 33 | which define configuration parameters of interest to the application and |
---|
| 34 | defaulting or calculating all others. This variety of macros can automatically |
---|
| 35 | produce all of the configuration data required for an RTEMS application. |
---|
| 36 | |
---|
| 37 | .. sidebar: Trivia: |
---|
| 38 | |
---|
| 39 | The term ``confdefs`` is shorthand for a *Configuration Defaults*. |
---|
| 40 | |
---|
| 41 | As a general rule, application developers only specify values for the |
---|
| 42 | configuration parameters of interest to them. They define what resources or |
---|
| 43 | features they require. In most cases, when a parameter is not specified, it |
---|
| 44 | defaults to zero (0) instances, a standards compliant value, or disabled as |
---|
| 45 | appropriate. For example, by default there will be 256 task priority levels but |
---|
| 46 | this can be lowered by the application. This number of priority levels is |
---|
| 47 | required to be compliant with the RTEID/ORKID standards upon which the Classic |
---|
| 48 | API is based. There are similar cases where the default is selected to be |
---|
| 49 | compliant with with the POSIX standard. |
---|
[fd6dc8c8] | 50 | |
---|
| 51 | For each configuration parameter in the configuration tables, the macro |
---|
[c9aaf31] | 52 | corresponding to that field is discussed. The RTEMS Maintainers expect that all |
---|
| 53 | systems can be easily configured using the ``<rtems/confdefs.h>`` mechanism and |
---|
| 54 | that using this mechanism will avoid internal RTEMS configuration changes |
---|
| 55 | impacting applications. |
---|
[fd6dc8c8] | 56 | |
---|
| 57 | .. COMMENT: === Philosophy === |
---|
| 58 | |
---|
| 59 | Default Value Selection Philosophy |
---|
| 60 | ================================== |
---|
| 61 | |
---|
[c9aaf31] | 62 | The user should be aware that the defaults are intentionally set as low as |
---|
| 63 | possible. By default, no application resources are configured. The |
---|
| 64 | ``<rtems/confdefs.h>`` file ensures that at least one application task or |
---|
| 65 | thread is configured and that at least one of the initialization task/thread |
---|
| 66 | tables is configured. |
---|
[fd6dc8c8] | 67 | |
---|
| 68 | .. COMMENT: === Sizing the RTEMS Workspace === |
---|
| 69 | |
---|
[9aafb39] | 70 | .. _Sizing the RTEMS Workspace: |
---|
| 71 | |
---|
[fd6dc8c8] | 72 | Sizing the RTEMS Workspace |
---|
| 73 | ========================== |
---|
| 74 | |
---|
[c9aaf31] | 75 | The RTEMS Workspace is a user-specified block of memory reserved for use by |
---|
| 76 | RTEMS. The application should NOT modify this memory. This area consists |
---|
| 77 | primarily of the RTEMS data structures whose exact size depends upon the values |
---|
| 78 | specified in the Configuration Table. In addition, task stacks and floating |
---|
| 79 | point context areas are dynamically allocated from the RTEMS Workspace. |
---|
| 80 | |
---|
| 81 | The ``<rtems/confdefs.h>`` mechanism calculates the size of the RTEMS Workspace |
---|
| 82 | automatically. It assumes that all tasks are floating point and that all will |
---|
| 83 | be allocated the minimum stack space. This calculation includes the amount of |
---|
| 84 | memory that will be allocated for internal use by RTEMS. The automatic |
---|
| 85 | calculation may underestimate the workspace size truly needed by the |
---|
| 86 | application, in which case one can use the ``CONFIGURE_MEMORY_OVERHEAD`` macro |
---|
| 87 | to add a value to the estimate. See :ref:`Specify Memory Overhead` for more |
---|
| 88 | details. |
---|
[fd6dc8c8] | 89 | |
---|
| 90 | The memory area for the RTEMS Workspace is determined by the BSP. In case the |
---|
| 91 | RTEMS Workspace is too large for the available memory, then a fatal run-time |
---|
| 92 | error occurs and the system terminates. |
---|
| 93 | |
---|
[f02e872] | 94 | The file ``<rtems/confdefs.h>`` will calculate the value of the |
---|
| 95 | ``work_space_size`` parameter of the Configuration Table. There are many |
---|
[c9aaf31] | 96 | parameters the application developer can specify to help ``<rtems/confdefs.h>`` |
---|
| 97 | in its calculations. Correctly specifying the application requirements via |
---|
| 98 | parameters such as ``CONFIGURE_EXTRA_TASK_STACKS`` and |
---|
| 99 | ``CONFIGURE_MAXIMUM_TASKS`` is critical for production software. |
---|
| 100 | |
---|
| 101 | For each class of objects, the allocation can operate in one of two ways. The |
---|
| 102 | default way has an ceiling on the maximum number of object instances which can |
---|
| 103 | concurrently exist in the system. Memory for all instances of that object class |
---|
| 104 | is reserved at system initialization. The second way allocates memory for an |
---|
| 105 | initial number of objects and increases the current allocation by a fixed |
---|
| 106 | increment when required. Both ways allocate space from inside the RTEMS |
---|
| 107 | Workspace. |
---|
| 108 | |
---|
| 109 | See :ref:`Unlimited Objects` for more details about the second way, which |
---|
| 110 | allows for dynamic allocation of objects and therefore does not provide |
---|
| 111 | determinism. This mode is useful mostly for when the number of objects cannot |
---|
| 112 | be determined ahead of time or when porting software for which you do not know |
---|
| 113 | the object requirements. |
---|
| 114 | |
---|
| 115 | The space needed for stacks and for RTEMS objects will vary from one version of |
---|
| 116 | RTEMS and from one target processor to another. Therefore it is safest to use |
---|
| 117 | ``<rtems/confdefs.h>`` and specify your application's requirements in terms of |
---|
| 118 | the numbers of objects and multiples of ``RTEMS_MINIMUM_STACK_SIZE``, as far as |
---|
| 119 | is possible. The automatic estimates of space required will in general change |
---|
| 120 | when: |
---|
[fd6dc8c8] | 121 | |
---|
| 122 | - a configuration parameter is changed, |
---|
| 123 | |
---|
| 124 | - task or interrupt stack sizes change, |
---|
| 125 | |
---|
| 126 | - the floating point attribute of a task changes, |
---|
| 127 | |
---|
| 128 | - task floating point attribute is altered, |
---|
| 129 | |
---|
| 130 | - RTEMS is upgraded, or |
---|
| 131 | |
---|
| 132 | - the target processor is changed. |
---|
| 133 | |
---|
| 134 | Failure to provide enough space in the RTEMS Workspace may result in fatal |
---|
| 135 | run-time errors terminating the system. |
---|
| 136 | |
---|
| 137 | .. COMMENT: === Potential Issues === |
---|
| 138 | |
---|
| 139 | Potential Issues with RTEMS Workspace Size Estimation |
---|
| 140 | ===================================================== |
---|
| 141 | |
---|
[c9aaf31] | 142 | The ``<rtems/confdefs.h>`` file estimates the amount of memory required for the |
---|
| 143 | RTEMS Workspace. This estimate is only as accurate as the information given to |
---|
| 144 | ``<rtems/confdefs.h>`` and may be either too high or too low for a variety of |
---|
| 145 | reasons. Some of the reasons that ``<rtems/confdefs.h>`` may reserve too much |
---|
| 146 | memory for RTEMS are: |
---|
[fd6dc8c8] | 147 | |
---|
| 148 | - All tasks/threads are assumed to be floating point. |
---|
| 149 | |
---|
[c9aaf31] | 150 | Conversely, there are many more reasons that the resource estimate could be too |
---|
| 151 | low: |
---|
[fd6dc8c8] | 152 | |
---|
[c9aaf31] | 153 | - Task/thread stacks greater than minimum size must be accounted for explicitly |
---|
| 154 | by developer. |
---|
[fd6dc8c8] | 155 | |
---|
| 156 | - Memory for messages is not included. |
---|
| 157 | |
---|
| 158 | - Device driver requirements are not included. |
---|
| 159 | |
---|
| 160 | - Network stack requirements are not included. |
---|
| 161 | |
---|
| 162 | - Requirements for add-on libraries are not included. |
---|
| 163 | |
---|
| 164 | In general, ``<rtems/confdefs.h>`` is very accurate when given enough |
---|
[c9aaf31] | 165 | information. However, it is quite easy to use a library and forget to account |
---|
| 166 | for its resources. |
---|
[fd6dc8c8] | 167 | |
---|
| 168 | .. COMMENT: === Format to be followed for making changes in this file === |
---|
| 169 | |
---|
| 170 | Format to be followed for making changes in this file |
---|
| 171 | ===================================================== |
---|
| 172 | |
---|
[53bb72e] | 173 | MACRO NAME: |
---|
[d389819] | 174 | Should be alphanumeric. Can have '_' (underscore). |
---|
[fd6dc8c8] | 175 | |
---|
[53bb72e] | 176 | DATA TYPE: |
---|
[fd6dc8c8] | 177 | Please refer to all existing formats. |
---|
| 178 | |
---|
[53bb72e] | 179 | RANGE: |
---|
[fd6dc8c8] | 180 | The range depends on the Data Type of the macro. |
---|
| 181 | |
---|
[c9aaf31] | 182 | - If the data type is of type task priority, then its value should be an |
---|
| 183 | integer in the range of 1 to 255. |
---|
| 184 | |
---|
| 185 | - If the data type is an integer, then it can have numbers, characters (in |
---|
| 186 | case the value is defined using another macro) and arithmetic operations |
---|
[9aafb39] | 187 | (+, -, \*, /). |
---|
[fd6dc8c8] | 188 | |
---|
[c9aaf31] | 189 | - If the data type is a function pointer the first character should be an |
---|
| 190 | alphabet or an underscore. The rest of the string can be alphanumeric. |
---|
[fd6dc8c8] | 191 | |
---|
[c9aaf31] | 192 | - If the data type is RTEMS Attributes or RTEMS Mode then the string should |
---|
| 193 | be alphanumeric. |
---|
[fd6dc8c8] | 194 | |
---|
[c9aaf31] | 195 | - If the data type is RTEMS NAME then the value should be an integer>=0 or |
---|
[53bb72e] | 196 | ``RTEMS_BUILD_NAME( 'U', 'I', '1', ' ' )`` |
---|
[c9aaf31] | 197 | |
---|
[53bb72e] | 198 | DEFAULT VALUE: |
---|
[c9aaf31] | 199 | The default value should be in the following formats- Please note that the |
---|
| 200 | '.' (full stop) is necessary. |
---|
| 201 | |
---|
| 202 | - In case the value is not defined then: This is not defined by default. |
---|
[fd6dc8c8] | 203 | |
---|
[c9aaf31] | 204 | - If we know the default value then: The default value is XXX. |
---|
| 205 | |
---|
| 206 | - If the default value is BSP Specific then: This option is BSP specific. |
---|
| 207 | |
---|
[53bb72e] | 208 | DESCRIPTION: |
---|
[fd6dc8c8] | 209 | The description of the macro. (No specific format) |
---|
| 210 | |
---|
[53bb72e] | 211 | NOTES: |
---|
[fd6dc8c8] | 212 | Any further notes. (No specific format) |
---|
| 213 | |
---|
| 214 | .. COMMENT: === Configuration Example === |
---|
| 215 | |
---|
| 216 | Configuration Example |
---|
| 217 | ===================== |
---|
| 218 | |
---|
[c9aaf31] | 219 | In the following example, the configuration information for a system with a |
---|
| 220 | single message queue, four (4) tasks, and a timeslice of fifty (50) |
---|
| 221 | milliseconds is as follows: |
---|
| 222 | |
---|
[25d55d4] | 223 | .. code-block:: c |
---|
[fd6dc8c8] | 224 | |
---|
| 225 | #include <bsp.h> |
---|
| 226 | #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER |
---|
| 227 | #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER |
---|
[c9aaf31] | 228 | #define CONFIGURE_MICROSECONDS_PER_TICK 1000 /* 1 millisecond */ |
---|
| 229 | #define CONFIGURE_TICKS_PER_TIMESLICE 50 /* 50 milliseconds */ |
---|
[fd6dc8c8] | 230 | #define CONFIGURE_RTEMS_INIT_TASKS_TABLE |
---|
| 231 | #define CONFIGURE_MAXIMUM_TASKS 4 |
---|
| 232 | #define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 1 |
---|
[c9aaf31] | 233 | #define CONFIGURE_MESSAGE_BUFFER_MEMORY \ |
---|
| 234 | CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(20, sizeof(struct USER_MESSAGE)) |
---|
[fd6dc8c8] | 235 | #define CONFIGURE_INIT |
---|
| 236 | #include <rtems/confdefs.h> |
---|
| 237 | |
---|
[c9aaf31] | 238 | In this example, only a few configuration parameters are specified. The impact |
---|
| 239 | of these are as follows: |
---|
| 240 | |
---|
| 241 | - The example specified ``CONFIGURE_RTEMS_INIT_TASK_TABLE`` but did not specify |
---|
| 242 | any additional parameters. This results in a configuration of an application |
---|
| 243 | which will begin execution of a single initialization task named ``Init`` |
---|
| 244 | which is non-preemptible and at priority one (1). |
---|
| 245 | |
---|
| 246 | - By specifying ``CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER``, this application |
---|
| 247 | is configured to have a clock tick device driver. Without a clock tick device |
---|
| 248 | driver, RTEMS has no way to know that time is passing and will be unable to |
---|
| 249 | support delays and wall time. Further configuration details about time are |
---|
| 250 | provided. Per ``CONFIGURE_MICROSECONDS_PER_TICK`` and |
---|
| 251 | ``CONFIGURE_TICKS_PER_TIMESLICE``, the user specified they wanted a clock |
---|
| 252 | tick to occur each millisecond, and that the length of a timeslice would be |
---|
| 253 | fifty (50) milliseconds. |
---|
| 254 | |
---|
| 255 | - By specifying ``CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER``, the application |
---|
| 256 | will include a console device driver. Although the console device driver may |
---|
| 257 | support a combination of multiple serial ports and display and keyboard |
---|
| 258 | combinations, it is only required to provide a single device named |
---|
| 259 | ``/dev/console``. This device will be used for Standard Input, Output and |
---|
| 260 | Error I/O Streams. Thus when ``CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER`` |
---|
| 261 | is specified, implicitly three (3) file descriptors are reserved for the |
---|
| 262 | Standard I/O Streams and those file descriptors are associated with |
---|
| 263 | ``/dev/console`` during initialization. All console devices are expected to |
---|
| 264 | support the POSIX*termios* interface. |
---|
| 265 | |
---|
| 266 | - The example above specifies via ``CONFIGURE_MAXIMUM_TASKS`` that the |
---|
| 267 | application requires a maximum of four (4) simultaneously existing Classic |
---|
| 268 | API tasks. Similarly, by specifying ``CONFIGURE_MAXIMUM_MESSAGE_QUEUES``, |
---|
| 269 | there may be a maximum of only one (1) concurrently existent Classic API |
---|
| 270 | message queues. |
---|
| 271 | |
---|
| 272 | - The most surprising configuration parameter in this example is the use of |
---|
| 273 | ``CONFIGURE_MESSAGE_BUFFER_MEMORY``. Message buffer memory is allocated from |
---|
| 274 | the RTEMS Workspace and must be accounted for. In this example, the single |
---|
| 275 | message queue will have up to twenty (20) messages of type ``struct |
---|
| 276 | USER_MESSAGE``. |
---|
| 277 | |
---|
| 278 | - The ``CONFIGURE_INIT`` constant must be defined in order to make |
---|
| 279 | ``<rtems/confdefs.h>`` instantiate the configuration data structures. This |
---|
| 280 | can only be defined in one source file per application that includes |
---|
| 281 | ``<rtems/confdefs.h>`` or the symbol table will be instantiated multiple |
---|
| 282 | times and linking errors produced. |
---|
| 283 | |
---|
| 284 | This example illustrates that parameters have default values. Among other |
---|
| 285 | things, the application implicitly used the following defaults: |
---|
| 286 | |
---|
| 287 | - All unspecified types of communications and synchronization objects in the |
---|
| 288 | Classic and POSIX Threads API have maximums of zero (0). |
---|
[fd6dc8c8] | 289 | |
---|
| 290 | - The filesystem will be the default filesystem which is the In-Memory File |
---|
| 291 | System (IMFS). |
---|
| 292 | |
---|
| 293 | - The application will have the default number of priority levels. |
---|
| 294 | |
---|
[c9aaf31] | 295 | - The minimum task stack size will be that recommended by RTEMS for the target |
---|
| 296 | architecture. |
---|
[fd6dc8c8] | 297 | |
---|
| 298 | .. COMMENT: === Unlimited Objects === |
---|
| 299 | |
---|
[9aafb39] | 300 | .. _Unlimited Objects: |
---|
| 301 | |
---|
[fd6dc8c8] | 302 | Unlimited Objects |
---|
[53bb72e] | 303 | ================= |
---|
[fd6dc8c8] | 304 | |
---|
[c9aaf31] | 305 | In real-time embedded systems the RAM is normally a limited, critical resource |
---|
| 306 | and dynamic allocation is avoided as much as possible to ensure predictable, |
---|
| 307 | deterministic execution times. For such cases, see :ref:`Sizing the RTEMS |
---|
| 308 | Workspace` for an overview of how to tune the size of the workspace. |
---|
| 309 | Frequently when users are porting software to RTEMS the precise resource |
---|
| 310 | requirements of the software is unknown. In these situations users do not need |
---|
| 311 | to control the size of the workspace very tightly because they just want to get |
---|
[fd6dc8c8] | 312 | the new software to run; later they can tune the workspace size as needed. |
---|
| 313 | |
---|
[c9aaf31] | 314 | The following API-independent object classes can be configured in unlimited |
---|
| 315 | mode: |
---|
[fd6dc8c8] | 316 | |
---|
| 317 | - POSIX Keys |
---|
| 318 | |
---|
| 319 | - POSIX Key Value Pairs |
---|
| 320 | |
---|
[c9aaf31] | 321 | The following object classes in the Classic API can be configured in unlimited |
---|
| 322 | mode: |
---|
[fd6dc8c8] | 323 | |
---|
| 324 | - Tasks |
---|
| 325 | |
---|
| 326 | - Timers |
---|
| 327 | |
---|
| 328 | - Semaphores |
---|
| 329 | |
---|
| 330 | - Message Queues |
---|
| 331 | |
---|
| 332 | - Periods |
---|
| 333 | |
---|
| 334 | - Barriers |
---|
| 335 | |
---|
| 336 | - Partitions |
---|
| 337 | |
---|
| 338 | - Regions |
---|
| 339 | |
---|
| 340 | - Ports |
---|
| 341 | |
---|
[c9aaf31] | 342 | Additionally, the following object classes from the POSIX API can be configured |
---|
| 343 | in unlimited mode: |
---|
[fd6dc8c8] | 344 | |
---|
| 345 | - Threads |
---|
| 346 | |
---|
| 347 | - Mutexes |
---|
| 348 | |
---|
| 349 | - Condition Variables |
---|
| 350 | |
---|
| 351 | - Timers |
---|
| 352 | |
---|
| 353 | - Message Queues |
---|
| 354 | |
---|
| 355 | - Message Queue Descriptors |
---|
| 356 | |
---|
| 357 | - Semaphores |
---|
| 358 | |
---|
| 359 | - Barriers |
---|
| 360 | |
---|
| 361 | - Read/Write Locks |
---|
| 362 | |
---|
| 363 | - Spinlocks |
---|
| 364 | |
---|
| 365 | The following object classes can *not* be configured in unlimited mode: |
---|
| 366 | |
---|
| 367 | - Drivers |
---|
| 368 | |
---|
| 369 | - File Descriptors |
---|
| 370 | |
---|
| 371 | - User Extensions |
---|
| 372 | |
---|
| 373 | - POSIX Queued Signals |
---|
| 374 | |
---|
| 375 | Due to the memory requirements of unlimited objects it is strongly recommended |
---|
[c9aaf31] | 376 | to use them only in combination with the unified work areas. See :ref:`Separate |
---|
| 377 | or Unified Work Areas` for more information on unified work areas. |
---|
[fd6dc8c8] | 378 | |
---|
| 379 | The following example demonstrates how the two simple configuration defines for |
---|
| 380 | unlimited objects and unified works areas can replace many seperate |
---|
| 381 | configuration defines for supported object classes: |
---|
[c9aaf31] | 382 | |
---|
[25d55d4] | 383 | .. code-block:: c |
---|
[fd6dc8c8] | 384 | |
---|
| 385 | #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER |
---|
| 386 | #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER |
---|
| 387 | #define CONFIGURE_UNIFIED_WORK_AREAS |
---|
| 388 | #define CONFIGURE_UNLIMITED_OBJECTS |
---|
| 389 | #define CONFIGURE_RTEMS_INIT_TASKS_TABLE |
---|
| 390 | #define CONFIGURE_INIT |
---|
| 391 | #include <rtems/confdefs.h> |
---|
| 392 | |
---|
| 393 | Users are cautioned that using unlimited objects is not recommended for |
---|
[c9aaf31] | 394 | production software unless the dynamic growth is absolutely required. It is |
---|
| 395 | generally considered a safer embedded systems programming practice to know the |
---|
| 396 | system limits rather than experience an out of memory error at an arbitrary and |
---|
| 397 | largely unpredictable time in the field. |
---|
[fd6dc8c8] | 398 | |
---|
| 399 | .. COMMENT: === Per Object Class Unlimited Object Instances === |
---|
| 400 | |
---|
[9aafb39] | 401 | .. _Per Object Class Unlimited Object Instances: |
---|
| 402 | |
---|
[6c56401] | 403 | .. index:: rtems_resource_unlimited |
---|
| 404 | |
---|
[fd6dc8c8] | 405 | Per Object Class Unlimited Object Instances |
---|
| 406 | ------------------------------------------- |
---|
| 407 | |
---|
| 408 | When the number of objects is not known ahead of time, RTEMS provides an |
---|
[c9aaf31] | 409 | auto-extending mode that can be enabled individually for each object type by |
---|
| 410 | using the macro ``rtems_resource_unlimited``. This takes a value as a |
---|
| 411 | parameter, and is used to set the object maximum number field in an API |
---|
| 412 | Configuration table. The value is an allocation unit size. When RTEMS is |
---|
| 413 | required to grow the object table it is grown by this size. The kernel will |
---|
| 414 | return the object memory back to the RTEMS Workspace when an object is |
---|
| 415 | destroyed. The kernel will only return an allocated block of objects to the |
---|
| 416 | RTEMS Workspace if at least half the allocation size of free objects remain |
---|
| 417 | allocated. RTEMS always keeps one allocation block of objects allocated. Here |
---|
| 418 | is an example of using ``rtems_resource_unlimited``: |
---|
| 419 | |
---|
[25d55d4] | 420 | .. code-block:: c |
---|
[fd6dc8c8] | 421 | |
---|
| 422 | #define CONFIGURE_MAXIMUM_TASKS rtems_resource_unlimited(5) |
---|
| 423 | |
---|
| 424 | .. index:: rtems_resource_is_unlimited |
---|
| 425 | .. index:: rtems_resource_maximum_per_allocation |
---|
| 426 | |
---|
[c9aaf31] | 427 | Object maximum specifications can be evaluated with the |
---|
| 428 | ``rtems_resource_is_unlimited`` and``rtems_resource_maximum_per_allocation`` |
---|
| 429 | macros. |
---|
[fd6dc8c8] | 430 | |
---|
| 431 | .. COMMENT: === Unlimited Object Instances === |
---|
| 432 | |
---|
[9aafb39] | 433 | .. _Unlimited Object Instances: |
---|
| 434 | |
---|
[fd6dc8c8] | 435 | Unlimited Object Instances |
---|
| 436 | -------------------------- |
---|
| 437 | |
---|
[c9aaf31] | 438 | To ease the burden of developers who are porting new software RTEMS also |
---|
| 439 | provides the capability to make all object classes listed above operate in |
---|
| 440 | unlimited mode in a simple manner. The application developer is only |
---|
| 441 | responsible for enabling unlimited objects and specifying the allocation size. |
---|
[fd6dc8c8] | 442 | |
---|
| 443 | .. COMMENT: === CONFIGURE_UNLIMITED_OBJECTS === |
---|
| 444 | |
---|
[9aafb39] | 445 | .. _Enable Unlimited Object Instances: |
---|
[6c56401] | 446 | .. index:: CONFIGURE_UNLIMITED_OBJECTS |
---|
[9aafb39] | 447 | |
---|
[fd6dc8c8] | 448 | Enable Unlimited Object Instances |
---|
| 449 | --------------------------------- |
---|
| 450 | |
---|
[53bb72e] | 451 | CONSTANT: |
---|
[fd6dc8c8] | 452 | ``CONFIGURE_UNLIMITED_OBJECTS`` |
---|
| 453 | |
---|
[53bb72e] | 454 | DATA TYPE: |
---|
[fd6dc8c8] | 455 | Boolean feature macro. |
---|
| 456 | |
---|
[53bb72e] | 457 | RANGE: |
---|
[fd6dc8c8] | 458 | Defined or undefined. |
---|
| 459 | |
---|
[53bb72e] | 460 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 461 | This is not defined by default. |
---|
| 462 | |
---|
[53bb72e] | 463 | DESCRIPTION: |
---|
| 464 | ``CONFIGURE_UNLIMITED_OBJECTS`` enables ``rtems_resource_unlimited`` mode |
---|
| 465 | for Classic API and POSIX API objects that do not already have a specific |
---|
| 466 | maximum limit defined. |
---|
[fd6dc8c8] | 467 | |
---|
[53bb72e] | 468 | NOTES: |
---|
| 469 | When using unlimited objects, it is common practice to also specify |
---|
| 470 | ``CONFIGURE_UNIFIED_WORK_AREAS`` so the system operates with a single pool |
---|
| 471 | of memory for both RTEMS and application memory allocations. |
---|
[fd6dc8c8] | 472 | |
---|
| 473 | .. COMMENT: === CONFIGURE_UNLIMITED_ALLOCATION_SIZE === |
---|
| 474 | |
---|
[9aafb39] | 475 | .. _Specify Unlimited Objects Allocation Size: |
---|
| 476 | |
---|
[fd6dc8c8] | 477 | Specify Unlimited Objects Allocation Size |
---|
| 478 | ----------------------------------------- |
---|
| 479 | |
---|
[53bb72e] | 480 | CONSTANT: |
---|
[fd6dc8c8] | 481 | ``CONFIGURE_UNLIMITED_ALLOCATION_SIZE`` |
---|
| 482 | |
---|
[53bb72e] | 483 | DATA TYPE: |
---|
[fd6dc8c8] | 484 | Unsigned integer (``uint32_t``). |
---|
| 485 | |
---|
[53bb72e] | 486 | RANGE: |
---|
[fd6dc8c8] | 487 | Positive. |
---|
| 488 | |
---|
[53bb72e] | 489 | DEFAULT VALUE: |
---|
| 490 | If not defined and ``CONFIGURE_UNLIMITED_OBJECTS`` is defined, the default |
---|
| 491 | value is eight (8). |
---|
[fd6dc8c8] | 492 | |
---|
[53bb72e] | 493 | DESCRIPTION: |
---|
| 494 | ``CONFIGURE_UNLIMITED_ALLOCATION_SIZE`` provides an allocation size to use |
---|
| 495 | for ``rtems_resource_unlimited`` when using |
---|
| 496 | ``CONFIGURE_UNLIMITED_OBJECTS``. |
---|
[fd6dc8c8] | 497 | |
---|
[53bb72e] | 498 | NOTES: |
---|
| 499 | By allowing users to declare all resources as being unlimited the user can |
---|
| 500 | avoid identifying and limiting the resources |
---|
| 501 | used. ``CONFIGURE_UNLIMITED_OBJECTS`` does not support varying the |
---|
| 502 | allocation sizes for different objects; users who want that much control |
---|
| 503 | can define the ``rtems_resource_unlimited`` macros themselves. |
---|
[c9aaf31] | 504 | |
---|
[25d55d4] | 505 | .. code-block:: c |
---|
[fd6dc8c8] | 506 | |
---|
| 507 | #define CONFIGURE_UNLIMITED_OBJECTS |
---|
| 508 | #define CONFIGURE_UNLIMITED_ALLOCATION_SIZE 5 |
---|
| 509 | |
---|
| 510 | .. COMMENT: === Classic API Configuration === |
---|
| 511 | |
---|
| 512 | Classic API Configuration |
---|
| 513 | ========================= |
---|
| 514 | |
---|
[c9aaf31] | 515 | This section defines the Classic API related system configuration parameters |
---|
| 516 | supported by ``<rtems/confdefs.h>``. |
---|
[fd6dc8c8] | 517 | |
---|
| 518 | .. COMMENT: === CONFIGURE_MAXIMUM_TASKS === |
---|
| 519 | |
---|
[9aafb39] | 520 | .. _Specify Maximum Classic API Tasks: |
---|
[6c56401] | 521 | .. index:: CONFIGURE_MAXIMUM_TASKS |
---|
[9aafb39] | 522 | |
---|
[fd6dc8c8] | 523 | Specify Maximum Classic API Tasks |
---|
| 524 | --------------------------------- |
---|
| 525 | |
---|
[53bb72e] | 526 | CONSTANT: |
---|
[fd6dc8c8] | 527 | ``CONFIGURE_MAXIMUM_TASKS`` |
---|
| 528 | |
---|
[53bb72e] | 529 | DATA TYPE: |
---|
[fd6dc8c8] | 530 | Unsigned integer (``uint32_t``). |
---|
| 531 | |
---|
[53bb72e] | 532 | RANGE: |
---|
[fd6dc8c8] | 533 | Zero or positive. |
---|
| 534 | |
---|
[53bb72e] | 535 | DEFAULT VALUE: |
---|
| 536 | The default value is ``0``. |
---|
[fd6dc8c8] | 537 | |
---|
[53bb72e] | 538 | DESCRIPTION: |
---|
| 539 | ``CONFIGURE_MAXIMUM_TASKS`` is the maximum number of Classic API Tasks that |
---|
| 540 | can be concurrently active. |
---|
[fd6dc8c8] | 541 | |
---|
[53bb72e] | 542 | NOTES: |
---|
| 543 | This object class can be configured in unlimited allocation mode. |
---|
[fd6dc8c8] | 544 | |
---|
[53bb72e] | 545 | The calculations for the required memory in the RTEMS Workspace for tasks |
---|
| 546 | assume that each task has a minimum stack size and has floating point |
---|
| 547 | support enabled. The configuration parameter |
---|
| 548 | ``CONFIGURE_EXTRA_TASK_STACKS`` is used to specify task stack requirements |
---|
| 549 | *ABOVE* the minimum size required. See :ref:`Reserve Task/Thread Stack |
---|
| 550 | Memory Above Minimum` for more information about |
---|
| 551 | ``CONFIGURE_EXTRA_TASK_STACKS``. |
---|
[fd6dc8c8] | 552 | |
---|
[53bb72e] | 553 | The maximum number of POSIX threads is specified by |
---|
| 554 | ``CONFIGURE_MAXIMUM_POSIX_THREADS``. |
---|
[fd6dc8c8] | 555 | |
---|
[53bb72e] | 556 | A future enhancement to ``<rtems/confdefs.h>`` could be to eliminate the |
---|
| 557 | assumption that all tasks have floating point enabled. This would require |
---|
| 558 | the addition of a new configuration parameter to specify the number of |
---|
| 559 | tasks which enable floating point support. |
---|
[fd6dc8c8] | 560 | |
---|
| 561 | .. COMMENT: XXX - Add xref to CONFIGURE_MAXIMUM_POSIX_THREADS. |
---|
| 562 | |
---|
| 563 | .. COMMENT: === CONFIGURE_MAXIMUM_TIMERS === |
---|
| 564 | |
---|
[9aafb39] | 565 | .. _Specify Maximum Classic API Timers: |
---|
[6c56401] | 566 | .. index:: CONFIGURE_MAXIMUM_TIMERS |
---|
[9aafb39] | 567 | |
---|
[fd6dc8c8] | 568 | Specify Maximum Classic API Timers |
---|
| 569 | ---------------------------------- |
---|
| 570 | |
---|
[53bb72e] | 571 | CONSTANT: |
---|
[fd6dc8c8] | 572 | ``CONFIGURE_MAXIMUM_TIMERS`` |
---|
| 573 | |
---|
[53bb72e] | 574 | DATA TYPE: |
---|
[fd6dc8c8] | 575 | Unsigned integer (``uint32_t``). |
---|
| 576 | |
---|
[53bb72e] | 577 | RANGE: |
---|
[fd6dc8c8] | 578 | Zero or positive. |
---|
| 579 | |
---|
[53bb72e] | 580 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 581 | The default value is 0. |
---|
| 582 | |
---|
[53bb72e] | 583 | DESCRIPTION: |
---|
| 584 | ``CONFIGURE_MAXIMUM_TIMERS`` is the maximum number of Classic API Timers |
---|
| 585 | that can be concurrently active. |
---|
[fd6dc8c8] | 586 | |
---|
[53bb72e] | 587 | NOTES: |
---|
| 588 | This object class can be configured in unlimited allocation mode. |
---|
[fd6dc8c8] | 589 | |
---|
| 590 | .. COMMENT: === CONFIGURE_MAXIMUM_SEMAPHORES === |
---|
| 591 | |
---|
[9aafb39] | 592 | .. _Specify Maximum Classic API Semaphores: |
---|
[6c56401] | 593 | .. index:: CONFIGURE_MAXIMUM_SEMAPHORES |
---|
[9aafb39] | 594 | |
---|
[fd6dc8c8] | 595 | Specify Maximum Classic API Semaphores |
---|
| 596 | -------------------------------------- |
---|
| 597 | |
---|
[53bb72e] | 598 | CONSTANT: |
---|
[fd6dc8c8] | 599 | ``CONFIGURE_MAXIMUM_SEMAPHORES`` |
---|
| 600 | |
---|
[53bb72e] | 601 | DATA TYPE: |
---|
[fd6dc8c8] | 602 | Unsigned integer (``uint32_t``). |
---|
| 603 | |
---|
[53bb72e] | 604 | RANGE: |
---|
[fd6dc8c8] | 605 | Zero or positive. |
---|
| 606 | |
---|
[53bb72e] | 607 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 608 | The default value is 0. |
---|
| 609 | |
---|
[53bb72e] | 610 | DESCRIPTION: |
---|
| 611 | ``CONFIGURE_MAXIMUM_SEMAPHORES`` is the maximum number of Classic API |
---|
| 612 | Semaphores that can be concurrently active. |
---|
[fd6dc8c8] | 613 | |
---|
[53bb72e] | 614 | NOTES: |
---|
| 615 | This object class can be configured in unlimited allocation mode. |
---|
[fd6dc8c8] | 616 | |
---|
| 617 | .. COMMENT: === CONFIGURE_MAXIMUM_MRSP_SEMAPHORES === |
---|
| 618 | |
---|
[9aafb39] | 619 | .. _Specify Maximum Classic API Semaphores usable with MrsP: |
---|
[6c56401] | 620 | .. index:: CONFIGURE_MAXIMUM_MRSP_SEMAPHORES |
---|
[9aafb39] | 621 | |
---|
[fd6dc8c8] | 622 | Specify Maximum Classic API Semaphores usable with MrsP |
---|
| 623 | ------------------------------------------------------- |
---|
| 624 | |
---|
[53bb72e] | 625 | CONSTANT: |
---|
[fd6dc8c8] | 626 | ``CONFIGURE_MAXIMUM_MRSP_SEMAPHORES`` |
---|
| 627 | |
---|
[53bb72e] | 628 | DATA TYPE: |
---|
[fd6dc8c8] | 629 | Unsigned integer (``uint32_t``). |
---|
| 630 | |
---|
[53bb72e] | 631 | RANGE: |
---|
[fd6dc8c8] | 632 | Zero or positive. |
---|
| 633 | |
---|
[53bb72e] | 634 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 635 | The default value is 0. |
---|
| 636 | |
---|
[53bb72e] | 637 | DESCRIPTION: |
---|
| 638 | ``CONFIGURE_MAXIMUM_MRSP_SEMAPHORES`` is the maximum number of Classic API |
---|
[a0d2eee] | 639 | Semaphores using the :ref:`MrsP` that can be concurrently active. |
---|
[fd6dc8c8] | 640 | |
---|
[53bb72e] | 641 | NOTES: |
---|
[a0d2eee] | 642 | This configuration option is only used in SMP configurations. In |
---|
| 643 | uni-processor configurations, the :ref:`PriorityCeiling` is used for MrsP |
---|
[53bb72e] | 644 | semaphores and thus no extra memory is necessary. |
---|
[fd6dc8c8] | 645 | |
---|
| 646 | .. COMMENT: === CONFIGURE_MAXIMUM_MESSAGE_QUEUES === |
---|
| 647 | |
---|
[9aafb39] | 648 | .. _Specify Maximum Classic API Message Queues: |
---|
[6c56401] | 649 | .. index:: CONFIGURE_MAXIMUM_MESSAGE_QUEUES |
---|
[9aafb39] | 650 | |
---|
[fd6dc8c8] | 651 | Specify Maximum Classic API Message Queues |
---|
| 652 | ------------------------------------------ |
---|
| 653 | |
---|
[53bb72e] | 654 | CONSTANT: |
---|
[fd6dc8c8] | 655 | ``CONFIGURE_MAXIMUM_MESSAGE_QUEUES`` |
---|
| 656 | |
---|
[53bb72e] | 657 | DATA TYPE: |
---|
[fd6dc8c8] | 658 | Unsigned integer (``uint32_t``). |
---|
| 659 | |
---|
[53bb72e] | 660 | RANGE: |
---|
[fd6dc8c8] | 661 | Zero or positive. |
---|
| 662 | |
---|
[53bb72e] | 663 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 664 | The default value is 0. |
---|
| 665 | |
---|
[53bb72e] | 666 | DESCRIPTION: |
---|
| 667 | ``CONFIGURE_MAXIMUM_MESSAGE_QUEUES`` is the maximum number of Classic API |
---|
| 668 | Message Queues that can be concurrently active. |
---|
[fd6dc8c8] | 669 | |
---|
[53bb72e] | 670 | NOTES: |
---|
| 671 | This object class can be configured in unlimited allocation mode. |
---|
[fd6dc8c8] | 672 | |
---|
| 673 | .. COMMENT: === CONFIGURE_MAXIMUM_BARRIERS === |
---|
| 674 | |
---|
[9aafb39] | 675 | .. _Specify Maximum Classic API Barriers: |
---|
[6c56401] | 676 | .. index:: CONFIGURE_MAXIMUM_BARRIERS |
---|
[9aafb39] | 677 | |
---|
[fd6dc8c8] | 678 | Specify Maximum Classic API Barriers |
---|
| 679 | ------------------------------------ |
---|
| 680 | |
---|
[53bb72e] | 681 | CONSTANT: |
---|
[fd6dc8c8] | 682 | ``CONFIGURE_MAXIMUM_BARRIERS`` |
---|
| 683 | |
---|
[53bb72e] | 684 | DATA TYPE: |
---|
[fd6dc8c8] | 685 | Unsigned integer (``uint32_t``). |
---|
| 686 | |
---|
[53bb72e] | 687 | RANGE: |
---|
[fd6dc8c8] | 688 | Zero or positive. |
---|
| 689 | |
---|
[53bb72e] | 690 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 691 | The default value is 0. |
---|
| 692 | |
---|
[53bb72e] | 693 | DESCRIPTION: |
---|
| 694 | ``CONFIGURE_MAXIMUM_BARRIERS`` is the maximum number of Classic API |
---|
| 695 | Barriers that can be concurrently active. |
---|
[fd6dc8c8] | 696 | |
---|
[53bb72e] | 697 | NOTES: |
---|
| 698 | This object class can be configured in unlimited allocation mode. |
---|
[fd6dc8c8] | 699 | |
---|
| 700 | .. COMMENT: === CONFIGURE_MAXIMUM_PERIODS === |
---|
| 701 | |
---|
[9aafb39] | 702 | .. _Specify Maximum Classic API Periods: |
---|
[6c56401] | 703 | .. index:: CONFIGURE_MAXIMUM_PERIODS |
---|
[9aafb39] | 704 | |
---|
[fd6dc8c8] | 705 | Specify Maximum Classic API Periods |
---|
| 706 | ----------------------------------- |
---|
| 707 | |
---|
[53bb72e] | 708 | CONSTANT: |
---|
[fd6dc8c8] | 709 | ``CONFIGURE_MAXIMUM_PERIODS`` |
---|
| 710 | |
---|
[53bb72e] | 711 | DATA TYPE: |
---|
[fd6dc8c8] | 712 | Unsigned integer (``uint32_t``). |
---|
| 713 | |
---|
[53bb72e] | 714 | RANGE: |
---|
[fd6dc8c8] | 715 | Zero or positive. |
---|
| 716 | |
---|
[53bb72e] | 717 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 718 | The default value is 0. |
---|
| 719 | |
---|
[53bb72e] | 720 | DESCRIPTION: |
---|
| 721 | ``CONFIGURE_MAXIMUM_PERIODS`` is the maximum number of Classic API Periods |
---|
| 722 | that can be concurrently active. |
---|
[fd6dc8c8] | 723 | |
---|
[53bb72e] | 724 | NOTES: |
---|
| 725 | This object class can be configured in unlimited allocation mode. |
---|
[fd6dc8c8] | 726 | |
---|
| 727 | .. COMMENT: === CONFIGURE_MAXIMUM_PARTITIONS === |
---|
| 728 | |
---|
[9aafb39] | 729 | .. _Specify Maximum Classic API Partitions: |
---|
[6c56401] | 730 | .. index:: CONFIGURE_MAXIMUM_PARTITIONS |
---|
[9aafb39] | 731 | |
---|
[fd6dc8c8] | 732 | Specify Maximum Classic API Partitions |
---|
| 733 | -------------------------------------- |
---|
| 734 | |
---|
[53bb72e] | 735 | CONSTANT: |
---|
[fd6dc8c8] | 736 | ``CONFIGURE_MAXIMUM_PARTITIONS`` |
---|
| 737 | |
---|
[53bb72e] | 738 | DATA TYPE: |
---|
[fd6dc8c8] | 739 | Unsigned integer (``uint32_t``). |
---|
| 740 | |
---|
[53bb72e] | 741 | RANGE: |
---|
[fd6dc8c8] | 742 | Zero or positive. |
---|
| 743 | |
---|
[53bb72e] | 744 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 745 | The default value is 0. |
---|
| 746 | |
---|
[53bb72e] | 747 | DESCRIPTION: |
---|
| 748 | ``CONFIGURE_MAXIMUM_PARTITIONS`` is the maximum number of Classic API |
---|
| 749 | Partitions that can be concurrently active. |
---|
[fd6dc8c8] | 750 | |
---|
[53bb72e] | 751 | NOTES: |
---|
| 752 | This object class can be configured in unlimited allocation mode. |
---|
[fd6dc8c8] | 753 | |
---|
| 754 | .. COMMENT: === CONFIGURE_MAXIMUM_REGIONS === |
---|
| 755 | |
---|
[9aafb39] | 756 | .. _Specify Maximum Classic API Regions: |
---|
[6c56401] | 757 | .. index:: CONFIGURE_MAXIMUM_REGIONS |
---|
[9aafb39] | 758 | |
---|
[fd6dc8c8] | 759 | Specify Maximum Classic API Regions |
---|
| 760 | ----------------------------------- |
---|
| 761 | |
---|
[53bb72e] | 762 | CONSTANT: |
---|
[fd6dc8c8] | 763 | ``CONFIGURE_MAXIMUM_REGIONS`` |
---|
| 764 | |
---|
[53bb72e] | 765 | DATA TYPE: |
---|
[fd6dc8c8] | 766 | Unsigned integer (``uint32_t``). |
---|
| 767 | |
---|
[53bb72e] | 768 | RANGE: |
---|
[fd6dc8c8] | 769 | Zero or positive. |
---|
| 770 | |
---|
[53bb72e] | 771 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 772 | The default value is 0. |
---|
| 773 | |
---|
[53bb72e] | 774 | DESCRIPTION: |
---|
| 775 | ``CONFIGURE_MAXIMUM_REGIONS`` is the maximum number of Classic API Regions |
---|
| 776 | that can be concurrently active. |
---|
[fd6dc8c8] | 777 | |
---|
[53bb72e] | 778 | NOTES: |
---|
| 779 | None. |
---|
[fd6dc8c8] | 780 | |
---|
| 781 | .. COMMENT: === CONFIGURE_MAXIMUM_PORTS === |
---|
| 782 | |
---|
[9aafb39] | 783 | .. _Specify Maximum Classic API Ports: |
---|
[6c56401] | 784 | .. index:: CONFIGURE_MAXIMUM_PORTS |
---|
[9aafb39] | 785 | |
---|
[fd6dc8c8] | 786 | Specify Maximum Classic API Ports |
---|
| 787 | --------------------------------- |
---|
| 788 | |
---|
[53bb72e] | 789 | CONSTANT: |
---|
[fd6dc8c8] | 790 | ``CONFIGURE_MAXIMUM_PORTS`` |
---|
| 791 | |
---|
[53bb72e] | 792 | DATA TYPE: |
---|
[fd6dc8c8] | 793 | Unsigned integer (``uint32_t``). |
---|
| 794 | |
---|
[53bb72e] | 795 | RANGE: |
---|
[fd6dc8c8] | 796 | Zero or positive. |
---|
| 797 | |
---|
[53bb72e] | 798 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 799 | The default value is 0. |
---|
| 800 | |
---|
[53bb72e] | 801 | DESCRIPTION: |
---|
| 802 | ``CONFIGURE_MAXIMUM_PORTS`` is the maximum number of Classic API Ports that |
---|
| 803 | can be concurrently active. |
---|
[fd6dc8c8] | 804 | |
---|
[53bb72e] | 805 | NOTES: |
---|
| 806 | This object class can be configured in unlimited allocation mode. |
---|
[fd6dc8c8] | 807 | |
---|
| 808 | .. COMMENT: === CONFIGURE_MAXIMUM_USER_EXTENSIONS === |
---|
| 809 | |
---|
[9aafb39] | 810 | .. _Specify Maximum Classic API User Extensions: |
---|
[6c56401] | 811 | .. index:: CONFIGURE_MAXIMUM_USER_EXTENSIONS |
---|
[9aafb39] | 812 | |
---|
[fd6dc8c8] | 813 | Specify Maximum Classic API User Extensions |
---|
| 814 | ------------------------------------------- |
---|
| 815 | |
---|
[53bb72e] | 816 | CONSTANT: |
---|
[fd6dc8c8] | 817 | ``CONFIGURE_MAXIMUM_USER_EXTENSIONS`` |
---|
| 818 | |
---|
[53bb72e] | 819 | DATA TYPE: |
---|
[fd6dc8c8] | 820 | Unsigned integer (``uint32_t``). |
---|
| 821 | |
---|
[53bb72e] | 822 | RANGE: |
---|
[fd6dc8c8] | 823 | Zero or positive. |
---|
| 824 | |
---|
[53bb72e] | 825 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 826 | The default value is 0. |
---|
| 827 | |
---|
[53bb72e] | 828 | DESCRIPTION: |
---|
| 829 | ``CONFIGURE_MAXIMUM_USER_EXTENSIONS`` is the maximum number of Classic API |
---|
| 830 | User Extensions that can be concurrently active. |
---|
[fd6dc8c8] | 831 | |
---|
[53bb72e] | 832 | NOTES: |
---|
| 833 | This object class can be configured in unlimited allocation mode. |
---|
[fd6dc8c8] | 834 | |
---|
| 835 | .. COMMENT: === Classic API Initialization Task Configuration === |
---|
| 836 | |
---|
| 837 | Classic API Initialization Tasks Table Configuration |
---|
| 838 | ==================================================== |
---|
| 839 | |
---|
[c9aaf31] | 840 | The ``<rtems/confdefs.h>`` configuration system can automatically generate an |
---|
| 841 | Initialization Tasks Table named ``Initialization_tasks`` with a single entry. |
---|
| 842 | The following parameters control the generation of that table. |
---|
[fd6dc8c8] | 843 | |
---|
| 844 | .. COMMENT: === CONFIGURE_RTEMS_INIT_TASKS_TABLE === |
---|
| 845 | |
---|
[9aafb39] | 846 | .. _Instantiate Classic API Initialization Task Table: |
---|
[6c56401] | 847 | .. index:: CONFIGURE_RTEMS_INIT_TASKS_TABLE |
---|
[9aafb39] | 848 | |
---|
[fd6dc8c8] | 849 | Instantiate Classic API Initialization Task Table |
---|
| 850 | ------------------------------------------------- |
---|
| 851 | |
---|
[53bb72e] | 852 | CONSTANT: |
---|
[fd6dc8c8] | 853 | ``CONFIGURE_RTEMS_INIT_TASKS_TABLE`` |
---|
| 854 | |
---|
[53bb72e] | 855 | DATA TYPE: |
---|
[fd6dc8c8] | 856 | Boolean feature macro. |
---|
| 857 | |
---|
[53bb72e] | 858 | RANGE: |
---|
[fd6dc8c8] | 859 | Defined or undefined. |
---|
| 860 | |
---|
[53bb72e] | 861 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 862 | This is not defined by default. |
---|
| 863 | |
---|
[53bb72e] | 864 | DESCRIPTION: |
---|
| 865 | ``CONFIGURE_RTEMS_INIT_TASKS_TABLE`` is defined if the user wishes to use a |
---|
| 866 | Classic RTEMS API Initialization Task Table. The table built by |
---|
| 867 | ``<rtems/confdefs.h>`` specifies the parameters for a single task. This is |
---|
| 868 | sufficient for applications which initialization the system from a single |
---|
| 869 | task. |
---|
[fd6dc8c8] | 870 | |
---|
[53bb72e] | 871 | By default, this field is not defined as the user MUST select their own API |
---|
| 872 | for initialization tasks. |
---|
[fd6dc8c8] | 873 | |
---|
[53bb72e] | 874 | NOTES: |
---|
| 875 | The application may choose to use the initialization tasks or threads table |
---|
| 876 | from another API. |
---|
[fd6dc8c8] | 877 | |
---|
[53bb72e] | 878 | A compile time error will be generated if the user does not configure any |
---|
| 879 | initialization tasks or threads. |
---|
[fd6dc8c8] | 880 | |
---|
| 881 | .. COMMENT: === CONFIGURE_INIT_TASK_ENTRY_POINT === |
---|
| 882 | |
---|
[9aafb39] | 883 | .. _Specifying Classic API Initialization Task Entry Point: |
---|
[6c56401] | 884 | .. index:: CONFIGURE_INIT_TASK_ENTRY_POINT |
---|
[9aafb39] | 885 | |
---|
[fd6dc8c8] | 886 | Specifying Classic API Initialization Task Entry Point |
---|
| 887 | ------------------------------------------------------ |
---|
| 888 | |
---|
[53bb72e] | 889 | CONSTANT: |
---|
[fd6dc8c8] | 890 | ``CONFIGURE_INIT_TASK_ENTRY_POINT`` |
---|
| 891 | |
---|
[53bb72e] | 892 | DATA TYPE: |
---|
[fd6dc8c8] | 893 | Task entry function pointer (``rtems_task_entry``). |
---|
| 894 | |
---|
[53bb72e] | 895 | RANGE: |
---|
[fd6dc8c8] | 896 | Valid task entry function pointer. |
---|
| 897 | |
---|
[53bb72e] | 898 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 899 | The default value is ``Init``. |
---|
| 900 | |
---|
[53bb72e] | 901 | DESCRIPTION: |
---|
| 902 | ``CONFIGURE_INIT_TASK_ENTRY_POINT`` is the entry point (a.k.a. function |
---|
| 903 | name) of the single initialization task defined by the Classic API |
---|
| 904 | Initialization Tasks Table. |
---|
[fd6dc8c8] | 905 | |
---|
[53bb72e] | 906 | NOTES: |
---|
| 907 | The user must implement the function ``Init`` or the function name provided |
---|
| 908 | in this configuration parameter. |
---|
[fd6dc8c8] | 909 | |
---|
| 910 | .. COMMENT: === CONFIGURE_INIT_TASK_NAME === |
---|
| 911 | |
---|
[9aafb39] | 912 | .. _Specifying Classic API Initialization Task Name: |
---|
[6c56401] | 913 | .. index:: CONFIGURE_INIT_TASK_NAME |
---|
[9aafb39] | 914 | |
---|
[fd6dc8c8] | 915 | Specifying Classic API Initialization Task Name |
---|
| 916 | ----------------------------------------------- |
---|
| 917 | |
---|
[53bb72e] | 918 | CONSTANT: |
---|
[fd6dc8c8] | 919 | ``CONFIGURE_INIT_TASK_NAME`` |
---|
| 920 | |
---|
[53bb72e] | 921 | DATA TYPE: |
---|
[fd6dc8c8] | 922 | RTEMS Name (``rtems_name``). |
---|
| 923 | |
---|
[53bb72e] | 924 | RANGE: |
---|
[fd6dc8c8] | 925 | Any value. |
---|
| 926 | |
---|
[53bb72e] | 927 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 928 | The default value is ``rtems_build_name( 'U', 'I', '1', ' ' )``. |
---|
| 929 | |
---|
[53bb72e] | 930 | DESCRIPTION: |
---|
| 931 | ``CONFIGURE_INIT_TASK_NAME`` is the name of the single initialization task |
---|
| 932 | defined by the Classic API Initialization Tasks Table. |
---|
[fd6dc8c8] | 933 | |
---|
[53bb72e] | 934 | NOTES: |
---|
| 935 | None. |
---|
[fd6dc8c8] | 936 | |
---|
| 937 | .. COMMENT: === CONFIGURE_INIT_TASK_STACK_SIZE === |
---|
| 938 | |
---|
[9aafb39] | 939 | .. _Specifying Classic API Initialization Task Stack Size: |
---|
[6c56401] | 940 | .. index:: CONFIGURE_INIT_TASK_STACK_SIZE |
---|
[9aafb39] | 941 | |
---|
[fd6dc8c8] | 942 | Specifying Classic API Initialization Task Stack Size |
---|
| 943 | ----------------------------------------------------- |
---|
| 944 | |
---|
[53bb72e] | 945 | CONSTANT: |
---|
[fd6dc8c8] | 946 | ``CONFIGURE_INIT_TASK_STACK_SIZE`` |
---|
| 947 | |
---|
[53bb72e] | 948 | DATA TYPE: |
---|
[fd6dc8c8] | 949 | Unsigned integer (``size_t``). |
---|
| 950 | |
---|
[53bb72e] | 951 | RANGE: |
---|
[fd6dc8c8] | 952 | Zero or positive. |
---|
| 953 | |
---|
[53bb72e] | 954 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 955 | The default value is RTEMS_MINIMUM_STACK_SIZE. |
---|
| 956 | |
---|
[53bb72e] | 957 | DESCRIPTION: |
---|
| 958 | ``CONFIGURE_INIT_TASK_STACK_SIZE`` is the stack size of the single |
---|
| 959 | initialization task defined by the Classic API Initialization Tasks Table. |
---|
[fd6dc8c8] | 960 | |
---|
[53bb72e] | 961 | NOTES: |
---|
| 962 | If the stack size specified is greater than the configured minimum, it must |
---|
| 963 | be accounted for in ``CONFIGURE_EXTRA_TASK_STACKS``. See :ref:`Reserve |
---|
| 964 | Task/Thread Stack Memory Above Minimum` for more information about |
---|
| 965 | ``CONFIGURE_EXTRA_TASK_STACKS``. |
---|
[fd6dc8c8] | 966 | |
---|
| 967 | .. COMMENT: === CONFIGURE_INIT_TASK_PRIORITY === |
---|
| 968 | |
---|
[9aafb39] | 969 | .. _Specifying Classic API Initialization Task Priority: |
---|
[6c56401] | 970 | .. index:: CONFIGURE_INIT_TASK_PRIORITY |
---|
[9aafb39] | 971 | |
---|
[fd6dc8c8] | 972 | Specifying Classic API Initialization Task Priority |
---|
| 973 | --------------------------------------------------- |
---|
| 974 | |
---|
[53bb72e] | 975 | CONSTANT: |
---|
[fd6dc8c8] | 976 | ``CONFIGURE_INIT_TASK_PRIORITY`` |
---|
| 977 | |
---|
[53bb72e] | 978 | DATA TYPE: |
---|
[fd6dc8c8] | 979 | RTEMS Task Priority (``rtems_task_priority``). |
---|
| 980 | |
---|
[53bb72e] | 981 | RANGE: |
---|
[fd6dc8c8] | 982 | One (1) to CONFIGURE_MAXIMUM_PRIORITY. |
---|
| 983 | |
---|
[53bb72e] | 984 | DEFAULT VALUE: |
---|
| 985 | The default value is 1, which is the highest priority in the Classic API. |
---|
[fd6dc8c8] | 986 | |
---|
[53bb72e] | 987 | DESCRIPTION: |
---|
| 988 | ``CONFIGURE_INIT_TASK_PRIORITY`` is the initial priority of the single |
---|
| 989 | initialization task defined by the Classic API Initialization Tasks Table. |
---|
[fd6dc8c8] | 990 | |
---|
[53bb72e] | 991 | NOTES: |
---|
| 992 | None. |
---|
[fd6dc8c8] | 993 | |
---|
| 994 | .. COMMENT: === CONFIGURE_INIT_TASK_ATTRIBUTES === |
---|
| 995 | |
---|
[9aafb39] | 996 | .. _Specifying Classic API Initialization Task Attributes: |
---|
[6c56401] | 997 | .. index:: CONFIGURE_INIT_TASK_ATTRIBUTES |
---|
[9aafb39] | 998 | |
---|
[fd6dc8c8] | 999 | Specifying Classic API Initialization Task Attributes |
---|
| 1000 | ----------------------------------------------------- |
---|
| 1001 | |
---|
[53bb72e] | 1002 | CONSTANT: |
---|
[fd6dc8c8] | 1003 | ``CONFIGURE_INIT_TASK_ATTRIBUTES`` |
---|
| 1004 | |
---|
[53bb72e] | 1005 | DATA TYPE: |
---|
[fd6dc8c8] | 1006 | RTEMS Attributes (``rtems_attribute``). |
---|
| 1007 | |
---|
[53bb72e] | 1008 | RANGE: |
---|
[fd6dc8c8] | 1009 | Valid task attribute sets. |
---|
| 1010 | |
---|
[53bb72e] | 1011 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 1012 | The default value is ``RTEMS_DEFAULT_ATTRIBUTES``. |
---|
| 1013 | |
---|
[53bb72e] | 1014 | DESCRIPTION: |
---|
| 1015 | ``CONFIGURE_INIT_TASK_ATTRIBUTES`` is the task attributes of the single |
---|
| 1016 | initialization task defined by the Classic API Initialization Tasks Table. |
---|
[fd6dc8c8] | 1017 | |
---|
[53bb72e] | 1018 | NOTES: |
---|
| 1019 | None. |
---|
[fd6dc8c8] | 1020 | |
---|
| 1021 | .. COMMENT: === CONFIGURE_INIT_TASK_INITIAL_MODES === |
---|
| 1022 | |
---|
[9aafb39] | 1023 | .. _Specifying Classic API Initialization Task Modes: |
---|
[6c56401] | 1024 | .. index:: CONFIGURE_INIT_TASK_INITIAL_MODES |
---|
[9aafb39] | 1025 | |
---|
[fd6dc8c8] | 1026 | Specifying Classic API Initialization Task Modes |
---|
| 1027 | ------------------------------------------------ |
---|
| 1028 | |
---|
[53bb72e] | 1029 | CONSTANT: |
---|
[fd6dc8c8] | 1030 | ``CONFIGURE_INIT_TASK_INITIAL_MODES`` |
---|
| 1031 | |
---|
[53bb72e] | 1032 | DATA TYPE: |
---|
[fd6dc8c8] | 1033 | RTEMS Mode (``rtems_mode``). |
---|
| 1034 | |
---|
[53bb72e] | 1035 | RANGE: |
---|
[fd6dc8c8] | 1036 | Valid task mode sets. |
---|
| 1037 | |
---|
[53bb72e] | 1038 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 1039 | The default value is ``RTEMS_NO_PREEMPT``. |
---|
| 1040 | |
---|
[53bb72e] | 1041 | DESCRIPTION: |
---|
| 1042 | ``CONFIGURE_INIT_TASK_INITIAL_MODES`` is the initial execution mode of the |
---|
| 1043 | single initialization task defined by the Classic API Initialization Tasks |
---|
| 1044 | Table. |
---|
[fd6dc8c8] | 1045 | |
---|
[53bb72e] | 1046 | NOTES: |
---|
| 1047 | None. |
---|
[fd6dc8c8] | 1048 | |
---|
| 1049 | .. COMMENT: === CONFIGURE_INIT_TASK_ARGUMENTS === |
---|
| 1050 | |
---|
[9aafb39] | 1051 | .. _Specifying Classic API Initialization Task Arguments: |
---|
[6c56401] | 1052 | .. index:: CONFIGURE_INIT_TASK_ARGUMENTS |
---|
[9aafb39] | 1053 | |
---|
[fd6dc8c8] | 1054 | Specifying Classic API Initialization Task Arguments |
---|
| 1055 | ---------------------------------------------------- |
---|
| 1056 | |
---|
[53bb72e] | 1057 | CONSTANT: |
---|
[fd6dc8c8] | 1058 | ``CONFIGURE_INIT_TASK_ARGUMENTS`` |
---|
| 1059 | |
---|
[53bb72e] | 1060 | DATA TYPE: |
---|
[fd6dc8c8] | 1061 | RTEMS Task Argument (``rtems_task_argument``). |
---|
| 1062 | |
---|
[53bb72e] | 1063 | RANGE: |
---|
[fd6dc8c8] | 1064 | Complete range of the type. |
---|
| 1065 | |
---|
[53bb72e] | 1066 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 1067 | The default value is 0. |
---|
| 1068 | |
---|
[53bb72e] | 1069 | DESCRIPTION: |
---|
| 1070 | ``CONFIGURE_INIT_TASK_ARGUMENTS`` is the task argument of the single |
---|
| 1071 | initialization task defined by the Classic API Initialization Tasks Table. |
---|
[fd6dc8c8] | 1072 | |
---|
[53bb72e] | 1073 | NOTES: |
---|
| 1074 | None. |
---|
[fd6dc8c8] | 1075 | |
---|
| 1076 | .. COMMENT: === CONFIGURE_HAS_OWN_INIT_TASK_TABLE === |
---|
| 1077 | |
---|
[9aafb39] | 1078 | .. _Not Using Generated Initialization Tasks Table: |
---|
[6c56401] | 1079 | .. index:: CONFIGURE_HAS_OWN_INIT_TASK_TABLE |
---|
[9aafb39] | 1080 | |
---|
[fd6dc8c8] | 1081 | Not Using Generated Initialization Tasks Table |
---|
| 1082 | ---------------------------------------------- |
---|
| 1083 | |
---|
[53bb72e] | 1084 | CONSTANT: |
---|
[fd6dc8c8] | 1085 | ``CONFIGURE_HAS_OWN_INIT_TASK_TABLE`` |
---|
| 1086 | |
---|
[53bb72e] | 1087 | DATA TYPE: |
---|
[fd6dc8c8] | 1088 | Boolean feature macro. |
---|
| 1089 | |
---|
[53bb72e] | 1090 | RANGE: |
---|
[fd6dc8c8] | 1091 | Defined or undefined. |
---|
| 1092 | |
---|
[53bb72e] | 1093 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 1094 | This is not defined by default. |
---|
| 1095 | |
---|
[53bb72e] | 1096 | DESCRIPTION: |
---|
| 1097 | ``CONFIGURE_HAS_OWN_INIT_TASK_TABLE`` is defined if the user wishes to |
---|
| 1098 | define their own Classic API Initialization Tasks Table. This table should |
---|
| 1099 | be named ``Initialization_tasks``. |
---|
[fd6dc8c8] | 1100 | |
---|
[53bb72e] | 1101 | NOTES: |
---|
| 1102 | This is a seldom used configuration parameter. The most likely use case is |
---|
| 1103 | when an application desires to have more than one initialization task. |
---|
[fd6dc8c8] | 1104 | |
---|
| 1105 | .. COMMENT: === POSIX API Configuration === |
---|
| 1106 | |
---|
| 1107 | POSIX API Configuration |
---|
| 1108 | ======================= |
---|
| 1109 | |
---|
[c9aaf31] | 1110 | The parameters in this section are used to configure resources for the RTEMS |
---|
| 1111 | POSIX API. They are only relevant if the POSIX API is enabled at configure |
---|
| 1112 | time using the ``--enable-posix`` option. |
---|
[fd6dc8c8] | 1113 | |
---|
| 1114 | .. COMMENT: === CONFIGURE_MAXIMUM_POSIX_THREADS === |
---|
| 1115 | |
---|
[9aafb39] | 1116 | .. _Specify Maximum POSIX API Threads: |
---|
[6c56401] | 1117 | .. index:: CONFIGURE_MAXIMUM_POSIX_THREADS |
---|
[9aafb39] | 1118 | |
---|
[fd6dc8c8] | 1119 | Specify Maximum POSIX API Threads |
---|
| 1120 | --------------------------------- |
---|
| 1121 | |
---|
[53bb72e] | 1122 | CONSTANT: |
---|
[fd6dc8c8] | 1123 | ``CONFIGURE_MAXIMUM_POSIX_THREADS`` |
---|
| 1124 | |
---|
[53bb72e] | 1125 | DATA TYPE: |
---|
[fd6dc8c8] | 1126 | Unsigned integer (``uint32_t``). |
---|
| 1127 | |
---|
[53bb72e] | 1128 | RANGE: |
---|
[fd6dc8c8] | 1129 | Zero or positive. |
---|
| 1130 | |
---|
[53bb72e] | 1131 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 1132 | The default value is 0. |
---|
| 1133 | |
---|
[53bb72e] | 1134 | DESCRIPTION: |
---|
| 1135 | ``CONFIGURE_MAXIMUM_POSIX_THREADS`` is the maximum number of POSIX API |
---|
| 1136 | Threads that can be concurrently active. |
---|
[fd6dc8c8] | 1137 | |
---|
[53bb72e] | 1138 | NOTES: |
---|
| 1139 | This object class can be configured in unlimited allocation mode. |
---|
[fd6dc8c8] | 1140 | |
---|
[53bb72e] | 1141 | This calculations for the required memory in the RTEMS Workspace for |
---|
| 1142 | threads assume that each thread has a minimum stack size and has floating |
---|
| 1143 | point support enabled. The configuration parameter |
---|
| 1144 | ``CONFIGURE_EXTRA_TASK_STACKS`` is used to specify thread stack |
---|
| 1145 | requirements *ABOVE* the minimum size required. See :ref:`Reserve |
---|
| 1146 | Task/Thread Stack Memory Above Minimum` for more information about |
---|
| 1147 | ``CONFIGURE_EXTRA_TASK_STACKS``. |
---|
[fd6dc8c8] | 1148 | |
---|
[53bb72e] | 1149 | The maximum number of Classic API Tasks is specified by |
---|
| 1150 | ``CONFIGURE_MAXIMUM_TASKS``. |
---|
[fd6dc8c8] | 1151 | |
---|
[53bb72e] | 1152 | All POSIX threads have floating point enabled. |
---|
[fd6dc8c8] | 1153 | |
---|
| 1154 | .. COMMENT: === CONFIGURE_MAXIMUM_POSIX_KEYS === |
---|
| 1155 | |
---|
[9aafb39] | 1156 | .. _Specify Maximum POSIX API Keys: |
---|
[6c56401] | 1157 | .. index:: CONFIGURE_MAXIMUM_POSIX_KEYS |
---|
[9aafb39] | 1158 | |
---|
[fd6dc8c8] | 1159 | Specify Maximum POSIX API Keys |
---|
| 1160 | ------------------------------ |
---|
| 1161 | |
---|
[53bb72e] | 1162 | CONSTANT: |
---|
[fd6dc8c8] | 1163 | ``CONFIGURE_MAXIMUM_POSIX_KEYS`` |
---|
| 1164 | |
---|
[53bb72e] | 1165 | DATA TYPE: |
---|
[fd6dc8c8] | 1166 | Unsigned integer (``uint32_t``). |
---|
| 1167 | |
---|
[53bb72e] | 1168 | RANGE: |
---|
[fd6dc8c8] | 1169 | Zero or positive. |
---|
| 1170 | |
---|
[53bb72e] | 1171 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 1172 | The default value is 0. |
---|
| 1173 | |
---|
[53bb72e] | 1174 | DESCRIPTION: |
---|
| 1175 | ``CONFIGURE_MAXIMUM_POSIX_KEYS`` is the maximum number of POSIX API Keys |
---|
| 1176 | that can be concurrently active. |
---|
[fd6dc8c8] | 1177 | |
---|
[53bb72e] | 1178 | NOTES: |
---|
| 1179 | This object class can be configured in unlimited allocation mode. |
---|
[fd6dc8c8] | 1180 | |
---|
| 1181 | .. COMMENT: XXX - Key pairs |
---|
| 1182 | |
---|
| 1183 | .. COMMENT: === CONFIGURE_MAXIMUM_POSIX_TIMERS === |
---|
| 1184 | |
---|
[9aafb39] | 1185 | .. _Specify Maximum POSIX API Timers: |
---|
[6c56401] | 1186 | .. index:: CONFIGURE_MAXIMUM_POSIX_TIMERS |
---|
[9aafb39] | 1187 | |
---|
[fd6dc8c8] | 1188 | Specify Maximum POSIX API Timers |
---|
| 1189 | -------------------------------- |
---|
| 1190 | |
---|
[53bb72e] | 1191 | CONSTANT: |
---|
[fd6dc8c8] | 1192 | ``CONFIGURE_MAXIMUM_POSIX_TIMERS`` |
---|
| 1193 | |
---|
[53bb72e] | 1194 | DATA TYPE: |
---|
[fd6dc8c8] | 1195 | Unsigned integer (``uint32_t``). |
---|
| 1196 | |
---|
[53bb72e] | 1197 | RANGE: |
---|
[fd6dc8c8] | 1198 | Zero or positive. |
---|
| 1199 | |
---|
[53bb72e] | 1200 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 1201 | The default value is 0. |
---|
| 1202 | |
---|
[53bb72e] | 1203 | DESCRIPTION: |
---|
| 1204 | ``CONFIGURE_MAXIMUM_POSIX_TIMERS`` is the maximum number of POSIX API |
---|
| 1205 | Timers that can be concurrently active. |
---|
[fd6dc8c8] | 1206 | |
---|
[53bb72e] | 1207 | NOTES: |
---|
| 1208 | This object class can be configured in unlimited allocation mode. |
---|
[fd6dc8c8] | 1209 | |
---|
| 1210 | .. COMMENT: === CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS === |
---|
| 1211 | |
---|
[9aafb39] | 1212 | .. _Specify Maximum POSIX API Queued Signals: |
---|
[6c56401] | 1213 | .. index:: CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS |
---|
[9aafb39] | 1214 | |
---|
[fd6dc8c8] | 1215 | Specify Maximum POSIX API Queued Signals |
---|
| 1216 | ---------------------------------------- |
---|
| 1217 | |
---|
[53bb72e] | 1218 | CONSTANT: |
---|
[fd6dc8c8] | 1219 | ``CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS`` |
---|
| 1220 | |
---|
[53bb72e] | 1221 | DATA TYPE: |
---|
[fd6dc8c8] | 1222 | Unsigned integer (``uint32_t``). |
---|
| 1223 | |
---|
[53bb72e] | 1224 | RANGE: |
---|
[fd6dc8c8] | 1225 | Zero or positive. |
---|
| 1226 | |
---|
[53bb72e] | 1227 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 1228 | The default value is 0. |
---|
| 1229 | |
---|
[53bb72e] | 1230 | DESCRIPTION: |
---|
| 1231 | ``CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS`` is the maximum number of POSIX |
---|
| 1232 | API Queued Signals that can be concurrently active. |
---|
[fd6dc8c8] | 1233 | |
---|
[53bb72e] | 1234 | NOTES: |
---|
| 1235 | None. |
---|
[fd6dc8c8] | 1236 | |
---|
| 1237 | .. COMMENT: === CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES === |
---|
| 1238 | |
---|
[9aafb39] | 1239 | .. _Specify Maximum POSIX API Message Queues: |
---|
[6c56401] | 1240 | .. index:: CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES |
---|
[9aafb39] | 1241 | |
---|
[fd6dc8c8] | 1242 | Specify Maximum POSIX API Message Queues |
---|
| 1243 | ---------------------------------------- |
---|
| 1244 | |
---|
[53bb72e] | 1245 | CONSTANT: |
---|
[fd6dc8c8] | 1246 | ``CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES`` |
---|
| 1247 | |
---|
[53bb72e] | 1248 | DATA TYPE: |
---|
[fd6dc8c8] | 1249 | Unsigned integer (``uint32_t``). |
---|
| 1250 | |
---|
[53bb72e] | 1251 | RANGE: |
---|
[fd6dc8c8] | 1252 | Zero or positive. |
---|
| 1253 | |
---|
[53bb72e] | 1254 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 1255 | The default value is 0. |
---|
| 1256 | |
---|
[53bb72e] | 1257 | DESCRIPTION: |
---|
| 1258 | ``CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES`` is the maximum number of POSIX |
---|
| 1259 | API Message Queues that can be concurrently active. |
---|
[fd6dc8c8] | 1260 | |
---|
[53bb72e] | 1261 | NOTES: |
---|
| 1262 | This object class can be configured in unlimited allocation mode. |
---|
[fd6dc8c8] | 1263 | |
---|
[64564df] | 1264 | .. COMMENT: === CONFIGURE_MAXIMUM_POSIX_SEMAPHORES === |
---|
| 1265 | |
---|
| 1266 | .. _Specify Maximum POSIX API Semaphores: |
---|
[6c56401] | 1267 | .. index:: CONFIGURE_MAXIMUM_POSIX_SEMAPHORES |
---|
[64564df] | 1268 | |
---|
| 1269 | Specify Maximum POSIX API Named Semaphores |
---|
| 1270 | ------------------------------------------ |
---|
| 1271 | |
---|
| 1272 | CONSTANT: |
---|
| 1273 | ``CONFIGURE_MAXIMUM_POSIX_SEMAPHORES`` |
---|
| 1274 | |
---|
| 1275 | DATA TYPE: |
---|
| 1276 | Unsigned integer (``uint32_t``). |
---|
| 1277 | |
---|
| 1278 | RANGE: |
---|
| 1279 | Zero or positive. |
---|
| 1280 | |
---|
| 1281 | DEFAULT VALUE: |
---|
| 1282 | The default value is 0. |
---|
| 1283 | |
---|
| 1284 | DESCRIPTION: |
---|
| 1285 | ``CONFIGURE_MAXIMUM_POSIX_SEMAPHORES`` is the maximum number of POSIX API |
---|
| 1286 | Named Semaphores that can be concurrently active. Named semaphores are |
---|
| 1287 | created with ``sem_open()``. Semaphores initialized with ``sem_init()`` |
---|
| 1288 | are not affected by this configuration option since the storage space for |
---|
| 1289 | these semaphores is user-provided. |
---|
| 1290 | |
---|
| 1291 | NOTES: |
---|
| 1292 | None. |
---|
| 1293 | |
---|
[fd6dc8c8] | 1294 | .. COMMENT: === POSIX Initialization Threads Table Configuration === |
---|
| 1295 | |
---|
| 1296 | POSIX Initialization Threads Table Configuration |
---|
| 1297 | ================================================ |
---|
| 1298 | |
---|
[c9aaf31] | 1299 | The ``<rtems/confdefs.h>`` configuration system can automatically generate a |
---|
| 1300 | POSIX Initialization Threads Table named ``POSIX_Initialization_threads`` with |
---|
| 1301 | a single entry. The following parameters control the generation of that table. |
---|
[fd6dc8c8] | 1302 | |
---|
| 1303 | .. COMMENT: === CONFIGURE_POSIX_INIT_THREAD_TABLE === |
---|
| 1304 | |
---|
[9aafb39] | 1305 | .. _Instantiate POSIX API Initialization Thread Table: |
---|
[6c56401] | 1306 | .. index:: CONFIGURE_POSIX_INIT_THREAD_TABLE |
---|
[9aafb39] | 1307 | |
---|
[fd6dc8c8] | 1308 | Instantiate POSIX API Initialization Thread Table |
---|
| 1309 | ------------------------------------------------- |
---|
| 1310 | |
---|
[53bb72e] | 1311 | CONSTANT: |
---|
| 1312 | |
---|
| 1313 | ``CONFIGURE_POSIX_INIT_THREAD_TABLE`` |
---|
[fd6dc8c8] | 1314 | |
---|
[53bb72e] | 1315 | DATA TYPE: |
---|
[fd6dc8c8] | 1316 | Boolean feature macro. |
---|
| 1317 | |
---|
[53bb72e] | 1318 | RANGE: |
---|
[fd6dc8c8] | 1319 | Defined or undefined. |
---|
| 1320 | |
---|
[53bb72e] | 1321 | DEFAULT VALUE: |
---|
[c9aaf31] | 1322 | This field is not defined by default, as the user MUST select their own API |
---|
| 1323 | for initialization tasks. |
---|
[fd6dc8c8] | 1324 | |
---|
[53bb72e] | 1325 | DESCRIPTION: |
---|
| 1326 | ``CONFIGURE_POSIX_INIT_THREAD_TABLE`` is defined if the user wishes to use |
---|
| 1327 | a POSIX API Initialization Threads Table. The table built by |
---|
| 1328 | ``<rtems/confdefs.h>`` specifies the parameters for a single thread. This |
---|
| 1329 | is sufficient for applications which initialization the system from a |
---|
| 1330 | single task. |
---|
[fd6dc8c8] | 1331 | |
---|
[53bb72e] | 1332 | By default, this field is not defined as the user MUST select their own API |
---|
| 1333 | for initialization tasks. |
---|
[fd6dc8c8] | 1334 | |
---|
[53bb72e] | 1335 | NOTES: |
---|
| 1336 | The application may choose to use the initialization tasks or threads table |
---|
| 1337 | from another API. |
---|
[fd6dc8c8] | 1338 | |
---|
[53bb72e] | 1339 | A compile time error will be generated if the user does not configure any |
---|
| 1340 | initialization tasks or threads. |
---|
[fd6dc8c8] | 1341 | |
---|
| 1342 | .. COMMENT: === CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT === |
---|
| 1343 | |
---|
[9aafb39] | 1344 | .. _Specifying POSIX API Initialization Thread Entry Point: |
---|
[6c56401] | 1345 | .. index:: CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT |
---|
[9aafb39] | 1346 | |
---|
[fd6dc8c8] | 1347 | Specifying POSIX API Initialization Thread Entry Point |
---|
| 1348 | ------------------------------------------------------ |
---|
| 1349 | |
---|
[53bb72e] | 1350 | CONSTANT: |
---|
[fd6dc8c8] | 1351 | ``CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT`` |
---|
| 1352 | |
---|
[53bb72e] | 1353 | DATA TYPE: |
---|
[bcd64c6] | 1354 | POSIX thread function pointer (``void *(*entry_point)(void *)``). |
---|
[fd6dc8c8] | 1355 | |
---|
[53bb72e] | 1356 | RANGE: |
---|
[fd6dc8c8] | 1357 | Undefined or a valid POSIX thread function pointer. |
---|
| 1358 | |
---|
[53bb72e] | 1359 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 1360 | The default value is ``POSIX_Init``. |
---|
| 1361 | |
---|
[53bb72e] | 1362 | DESCRIPTION: |
---|
| 1363 | ``CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT`` is the entry point |
---|
| 1364 | (a.k.a. function name) of the single initialization thread defined by the |
---|
| 1365 | POSIX API Initialization Threads Table. |
---|
[fd6dc8c8] | 1366 | |
---|
[53bb72e] | 1367 | NOTES: |
---|
| 1368 | The user must implement the function ``POSIX_Init`` or the function name |
---|
| 1369 | provided in this configuration parameter. |
---|
[fd6dc8c8] | 1370 | |
---|
| 1371 | .. COMMENT: === CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE === |
---|
| 1372 | |
---|
[9aafb39] | 1373 | .. _Specifying POSIX API Initialization Thread Stack Size: |
---|
[6c56401] | 1374 | .. index:: CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE |
---|
[9aafb39] | 1375 | |
---|
[fd6dc8c8] | 1376 | Specifying POSIX API Initialization Thread Stack Size |
---|
| 1377 | ----------------------------------------------------- |
---|
| 1378 | |
---|
[53bb72e] | 1379 | CONSTANT: |
---|
[fd6dc8c8] | 1380 | ``CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE`` |
---|
| 1381 | |
---|
[53bb72e] | 1382 | DATA TYPE: |
---|
[fd6dc8c8] | 1383 | Unsigned integer (``size_t``). |
---|
| 1384 | |
---|
[53bb72e] | 1385 | RANGE: |
---|
[fd6dc8c8] | 1386 | Zero or positive. |
---|
| 1387 | |
---|
[53bb72e] | 1388 | DEFAULT VALUE: |
---|
[9aafb39] | 1389 | The default value is 2 \* RTEMS_MINIMUM_STACK_SIZE. |
---|
[fd6dc8c8] | 1390 | |
---|
[53bb72e] | 1391 | DESCRIPTION: |
---|
| 1392 | ``CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE`` is the stack size of the single |
---|
| 1393 | initialization thread defined by the POSIX API Initialization Threads |
---|
| 1394 | Table. |
---|
[fd6dc8c8] | 1395 | |
---|
[53bb72e] | 1396 | NOTES: |
---|
| 1397 | If the stack size specified is greater than the configured minimum, it must |
---|
| 1398 | be accounted for in ``CONFIGURE_EXTRA_TASK_STACKS``. See :ref:`Reserve |
---|
| 1399 | Task/Thread Stack Memory Above Minimum` for more information about |
---|
| 1400 | ``CONFIGURE_EXTRA_TASK_STACKS``. |
---|
[fd6dc8c8] | 1401 | |
---|
| 1402 | .. COMMENT: === CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE === |
---|
| 1403 | |
---|
[9aafb39] | 1404 | .. _Not Using Generated POSIX Initialization Threads Table: |
---|
[6c56401] | 1405 | .. index:: CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE |
---|
[9aafb39] | 1406 | |
---|
[fd6dc8c8] | 1407 | Not Using Generated POSIX Initialization Threads Table |
---|
| 1408 | ------------------------------------------------------ |
---|
| 1409 | |
---|
[53bb72e] | 1410 | CONSTANT: |
---|
[fd6dc8c8] | 1411 | ``CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE`` |
---|
| 1412 | |
---|
[53bb72e] | 1413 | DATA TYPE: |
---|
[fd6dc8c8] | 1414 | Boolean feature macro. |
---|
| 1415 | |
---|
[53bb72e] | 1416 | RANGE: |
---|
[fd6dc8c8] | 1417 | Defined or undefined. |
---|
| 1418 | |
---|
[53bb72e] | 1419 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 1420 | This is not defined by default. |
---|
| 1421 | |
---|
[53bb72e] | 1422 | DESCRIPTION: |
---|
| 1423 | ``CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE`` is defined if the user wishes |
---|
| 1424 | to define their own POSIX API Initialization Threads Table. This table |
---|
| 1425 | should be named ``POSIX_Initialization_threads``. |
---|
[fd6dc8c8] | 1426 | |
---|
[53bb72e] | 1427 | NOTES: |
---|
| 1428 | This is a seldom used configuration parameter. The most likely use case is |
---|
| 1429 | when an application desires to have more than one initialization task. |
---|
[fd6dc8c8] | 1430 | |
---|
| 1431 | .. COMMENT: === Basic System Information === |
---|
| 1432 | |
---|
| 1433 | Basic System Information |
---|
| 1434 | ======================== |
---|
| 1435 | |
---|
[c9aaf31] | 1436 | This section defines the general system configuration parameters supported by |
---|
| 1437 | ``<rtems/confdefs.h>``. |
---|
[fd6dc8c8] | 1438 | |
---|
| 1439 | .. COMMENT: === CONFIGURE_UNIFIED_WORK_AREAS === |
---|
| 1440 | |
---|
[9aafb39] | 1441 | .. _Separate or Unified Work Areas: |
---|
[fd6dc8c8] | 1442 | .. index:: CONFIGURE_UNIFIED_WORK_AREAS |
---|
| 1443 | .. index:: unified work areas |
---|
| 1444 | .. index:: separate work areas |
---|
| 1445 | .. index:: RTEMS Workspace |
---|
| 1446 | .. index:: C Program Heap |
---|
| 1447 | |
---|
[6c56401] | 1448 | Separate or Unified Work Areas |
---|
| 1449 | ------------------------------ |
---|
| 1450 | |
---|
[53bb72e] | 1451 | CONSTANT: |
---|
[fd6dc8c8] | 1452 | ``CONFIGURE_UNIFIED_WORK_AREAS`` |
---|
| 1453 | |
---|
[53bb72e] | 1454 | DATA TYPE: |
---|
[fd6dc8c8] | 1455 | Boolean feature macro. |
---|
| 1456 | |
---|
[53bb72e] | 1457 | RANGE: |
---|
[fd6dc8c8] | 1458 | Defined or undefined. |
---|
| 1459 | |
---|
[53bb72e] | 1460 | DEFAULT VALUE: |
---|
[c9aaf31] | 1461 | This is not defined by default, which specifies that the C Program Heap and |
---|
| 1462 | the RTEMS Workspace will be separate. |
---|
[fd6dc8c8] | 1463 | |
---|
[53bb72e] | 1464 | DESCRIPTION: |
---|
| 1465 | When defined, the C Program Heap and the RTEMS Workspace will be one pool |
---|
| 1466 | of memory. |
---|
[fd6dc8c8] | 1467 | |
---|
[53bb72e] | 1468 | When not defined, there will be separate memory pools for the RTEMS |
---|
| 1469 | Workspace and C Program Heap. |
---|
[fd6dc8c8] | 1470 | |
---|
[53bb72e] | 1471 | NOTES: |
---|
| 1472 | Having separate pools does have some advantages in the event a task blows a |
---|
| 1473 | stack or writes outside its memory area. However, in low memory systems the |
---|
| 1474 | overhead of the two pools plus the potential for unused memory in either |
---|
| 1475 | pool is very undesirable. |
---|
[fd6dc8c8] | 1476 | |
---|
[53bb72e] | 1477 | In high memory environments, this is desirable when you want to use the |
---|
| 1478 | RTEMS "unlimited" objects option. You will be able to create objects until |
---|
| 1479 | you run out of all available memory rather then just until you run out of |
---|
| 1480 | RTEMS Workspace. |
---|
[fd6dc8c8] | 1481 | |
---|
[1d073c5] | 1482 | .. COMMENT: === CONFIGURE_MAXIMUM_PROCESSORS === |
---|
| 1483 | |
---|
| 1484 | .. _CONFIGURE_MAXIMUM_PROCESSORS: |
---|
[6c56401] | 1485 | .. index:: CONFIGURE_MAXIMUM_PROCESSORS |
---|
[1d073c5] | 1486 | |
---|
| 1487 | Specify Maximum Processors |
---|
| 1488 | ---------------------------------------- |
---|
| 1489 | |
---|
| 1490 | CONSTANT: |
---|
| 1491 | ``CONFIGURE_MAXIMUM_PROCESSORS`` |
---|
| 1492 | |
---|
| 1493 | DATA TYPE: |
---|
| 1494 | Unsigned integer (``uint32_t``). |
---|
| 1495 | |
---|
| 1496 | RANGE: |
---|
| 1497 | Positive. |
---|
| 1498 | |
---|
| 1499 | DEFAULT VALUE: |
---|
| 1500 | The default value is 1. |
---|
| 1501 | |
---|
| 1502 | DESCRIPTION: |
---|
| 1503 | ``CONFIGURE_MAXIMUM_PROCESSORS`` must be set to the maximum number of |
---|
| 1504 | processors an applicaiton intends to use. The number of acually available |
---|
| 1505 | processors depends on the hardware and may be less. It is recommended to |
---|
| 1506 | use the smallest value suitable for the application in order to save |
---|
| 1507 | memory. Each processor needs an idle thread and interrupt stack for |
---|
| 1508 | example. |
---|
| 1509 | |
---|
| 1510 | NOTES: |
---|
| 1511 | If there are more processors available than configured, the rest will be |
---|
| 1512 | ignored. This configuration define is ignored in uni-processor |
---|
| 1513 | configurations. |
---|
| 1514 | |
---|
[fd6dc8c8] | 1515 | .. COMMENT: === CONFIGURE_MICROSECONDS_PER_TICK === |
---|
| 1516 | |
---|
[e23f46c] | 1517 | .. _CONFIGURE_MICROSECONDS_PER_TICK: |
---|
[6c56401] | 1518 | .. index:: CONFIGURE_MICROSECONDS_PER_TICK |
---|
| 1519 | .. index:: tick quantum |
---|
[9aafb39] | 1520 | |
---|
[fd6dc8c8] | 1521 | Length of Each Clock Tick |
---|
| 1522 | ------------------------- |
---|
| 1523 | |
---|
[53bb72e] | 1524 | CONSTANT: |
---|
[fd6dc8c8] | 1525 | ``CONFIGURE_MICROSECONDS_PER_TICK`` |
---|
| 1526 | |
---|
[53bb72e] | 1527 | DATA TYPE: |
---|
[fd6dc8c8] | 1528 | Unsigned integer (``uint32_t``). |
---|
| 1529 | |
---|
[53bb72e] | 1530 | RANGE: |
---|
[fd6dc8c8] | 1531 | Positive. |
---|
| 1532 | |
---|
[53bb72e] | 1533 | DEFAULT VALUE: |
---|
[c9aaf31] | 1534 | This is not defined by default. When not defined, the clock tick quantum is |
---|
| 1535 | configured to be 10,000 microseconds which is ten (10) milliseconds. |
---|
[fd6dc8c8] | 1536 | |
---|
[53bb72e] | 1537 | DESCRIPTION: |
---|
| 1538 | This constant is used to specify the length of time between clock ticks. |
---|
[fd6dc8c8] | 1539 | |
---|
[53bb72e] | 1540 | When the clock tick quantum value is too low, the system will spend so much |
---|
| 1541 | time processing clock ticks that it does not have processing time available |
---|
| 1542 | to perform application work. In this case, the system will become |
---|
| 1543 | unresponsive. |
---|
[fd6dc8c8] | 1544 | |
---|
[53bb72e] | 1545 | The lowest practical time quantum varies widely based upon the speed of the |
---|
| 1546 | target hardware and the architectural overhead associated with |
---|
| 1547 | interrupts. In general terms, you do not want to configure it lower than is |
---|
| 1548 | needed for the application. |
---|
[c9aaf31] | 1549 | |
---|
[53bb72e] | 1550 | The clock tick quantum should be selected such that it all blocking and |
---|
| 1551 | delay times in the application are evenly divisible by it. Otherwise, |
---|
| 1552 | rounding errors will be introduced which may negatively impact the |
---|
| 1553 | application. |
---|
[fd6dc8c8] | 1554 | |
---|
[53bb72e] | 1555 | NOTES: |
---|
| 1556 | This configuration parameter has no impact if the Clock Tick Device driver |
---|
| 1557 | is not configured. |
---|
[fd6dc8c8] | 1558 | |
---|
[53bb72e] | 1559 | There may be BSP specific limits on the resolution or maximum value of a |
---|
| 1560 | clock tick quantum. |
---|
[fd6dc8c8] | 1561 | |
---|
| 1562 | .. COMMENT: === CONFIGURE_TICKS_PER_TIMESLICE === |
---|
| 1563 | |
---|
[9aafb39] | 1564 | .. _Specifying Timeslicing Quantum: |
---|
[6c56401] | 1565 | .. index:: CONFIGURE_TICKS_PER_TIMESLICE |
---|
| 1566 | .. index:: ticks per timeslice |
---|
[9aafb39] | 1567 | |
---|
[fd6dc8c8] | 1568 | Specifying Timeslicing Quantum |
---|
| 1569 | ------------------------------ |
---|
| 1570 | |
---|
[53bb72e] | 1571 | CONSTANT: |
---|
[fd6dc8c8] | 1572 | ``CONFIGURE_TICKS_PER_TIMESLICE`` |
---|
| 1573 | |
---|
[53bb72e] | 1574 | DATA TYPE: |
---|
[fd6dc8c8] | 1575 | Unsigned integer (``uint32_t``). |
---|
| 1576 | |
---|
[53bb72e] | 1577 | RANGE: |
---|
[fd6dc8c8] | 1578 | Positive. |
---|
| 1579 | |
---|
[53bb72e] | 1580 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 1581 | The default value is 50. |
---|
| 1582 | |
---|
[53bb72e] | 1583 | DESCRIPTION: |
---|
| 1584 | This configuration parameter specifies the length of the timeslice quantum |
---|
| 1585 | in ticks for each task. |
---|
[fd6dc8c8] | 1586 | |
---|
[53bb72e] | 1587 | NOTES: |
---|
| 1588 | This configuration parameter has no impact if the Clock Tick Device driver |
---|
| 1589 | is not configured. |
---|
[fd6dc8c8] | 1590 | |
---|
| 1591 | .. COMMENT: === CONFIGURE_MAXIMUM_PRIORITY === |
---|
| 1592 | |
---|
[9aafb39] | 1593 | .. _Specifying the Number of Thread Priority Levels: |
---|
[fd6dc8c8] | 1594 | .. index:: CONFIGURE_MAXIMUM_PRIORITY |
---|
| 1595 | .. index:: maximum priority |
---|
| 1596 | .. index:: number of priority levels |
---|
| 1597 | |
---|
[6c56401] | 1598 | Specifying the Number of Thread Priority Levels |
---|
| 1599 | ----------------------------------------------- |
---|
| 1600 | |
---|
[53bb72e] | 1601 | CONSTANT: |
---|
[fd6dc8c8] | 1602 | ``CONFIGURE_MAXIMUM_PRIORITY`` |
---|
| 1603 | |
---|
[53bb72e] | 1604 | DATA TYPE: |
---|
[fd6dc8c8] | 1605 | Unsigned integer (``uint8_t``). |
---|
| 1606 | |
---|
[53bb72e] | 1607 | RANGE: |
---|
[fd6dc8c8] | 1608 | Valid values for this configuration parameter must be one (1) less than |
---|
| 1609 | than a power of two (2) between 4 and 256 inclusively. In other words, |
---|
| 1610 | valid values are 3, 7, 31, 63, 127, and 255. |
---|
| 1611 | |
---|
[53bb72e] | 1612 | DEFAULT VALUE: |
---|
[c9aaf31] | 1613 | The default value is 255, because RTEMS must support 256 priority levels to |
---|
| 1614 | be compliant with various standards. These priorities range from zero (0) |
---|
| 1615 | to 255. |
---|
[fd6dc8c8] | 1616 | |
---|
[53bb72e] | 1617 | DESCRIPTION: |
---|
| 1618 | This configuration parameter specified the maximum numeric priority of any |
---|
| 1619 | task in the system and one less that the number of priority levels in the |
---|
| 1620 | system. |
---|
[fd6dc8c8] | 1621 | |
---|
[53bb72e] | 1622 | Reducing the number of priorities in the system reduces the amount of memory |
---|
| 1623 | allocated from the RTEMS Workspace. |
---|
[fd6dc8c8] | 1624 | |
---|
[53bb72e] | 1625 | NOTES: |
---|
| 1626 | The numerically greatest priority is the logically lowest priority in the |
---|
| 1627 | system and will thus be used by the IDLE task. |
---|
[fd6dc8c8] | 1628 | |
---|
[53bb72e] | 1629 | Priority zero (0) is reserved for internal use by RTEMS and is not available |
---|
| 1630 | to applications. |
---|
[fd6dc8c8] | 1631 | |
---|
[53bb72e] | 1632 | With some schedulers, reducing the number of priorities can reduce the |
---|
| 1633 | amount of memory used by the scheduler. For example, the Deterministic |
---|
| 1634 | Priority Scheduler (DPS) used by default uses three pointers of storage per |
---|
| 1635 | priority level. Reducing the number of priorities from 256 levels to |
---|
| 1636 | sixteen (16) can reduce memory usage by about three (3) kilobytes. |
---|
[fd6dc8c8] | 1637 | |
---|
[fde6ac6] | 1638 | .. COMMENT: === CONFIGURE_MAXIMUM_THREAD_NAME_SIZE === |
---|
| 1639 | |
---|
[40a1e80] | 1640 | .. _CONFIGURE_MAXIMUM_THREAD_NAME_SIZE: |
---|
[6c56401] | 1641 | .. index:: CONFIGURE_MAXIMUM_THREAD_NAME_SIZE |
---|
| 1642 | .. index:: maximum thread name size |
---|
[fde6ac6] | 1643 | |
---|
| 1644 | Specifying the Maximum Thread Name Size |
---|
| 1645 | --------------------------------------- |
---|
| 1646 | |
---|
| 1647 | CONSTANT: |
---|
| 1648 | ``CONFIGURE_MAXIMUM_THREAD_NAME_SIZE`` |
---|
| 1649 | |
---|
| 1650 | DATA TYPE: |
---|
| 1651 | Unsigned integer (``size_t``). |
---|
| 1652 | |
---|
| 1653 | RANGE: |
---|
| 1654 | No restrictions. |
---|
| 1655 | |
---|
| 1656 | DEFAULT VALUE: |
---|
| 1657 | The default value is 16. This value was chosen for Linux compatibility, |
---|
| 1658 | see |
---|
| 1659 | `PTHREAD_SETNAME_NP(3) <http://man7.org/linux/man-pages/man3/pthread_setname_np.3.html>`_. |
---|
| 1660 | |
---|
| 1661 | DESCRIPTION: |
---|
| 1662 | This configuration parameter specifies the maximum thread name size |
---|
| 1663 | including the terminating `NUL` character. |
---|
| 1664 | |
---|
| 1665 | NOTE: |
---|
| 1666 | The size of the thread control block is increased by the maximum thread name |
---|
[60a6d6e] | 1667 | size. This configuration option is available since RTEMS 5.1. |
---|
[fde6ac6] | 1668 | |
---|
[fd6dc8c8] | 1669 | .. COMMENT: === CONFIGURE_MINIMUM_TASK_STACK_SIZE === |
---|
| 1670 | |
---|
[9aafb39] | 1671 | .. _Specifying the Minimum Task Size: |
---|
[6c56401] | 1672 | .. index:: CONFIGURE_MINIMUM_TASK_STACK_SIZE |
---|
| 1673 | .. index:: minimum task stack size |
---|
[9aafb39] | 1674 | |
---|
[fd6dc8c8] | 1675 | Specifying the Minimum Task Size |
---|
| 1676 | -------------------------------- |
---|
| 1677 | |
---|
[53bb72e] | 1678 | CONSTANT: |
---|
[fd6dc8c8] | 1679 | ``CONFIGURE_MINIMUM_TASK_STACK_SIZE`` |
---|
| 1680 | |
---|
[53bb72e] | 1681 | DATA TYPE: |
---|
[fd6dc8c8] | 1682 | Unsigned integer (``uint32_t``). |
---|
| 1683 | |
---|
[53bb72e] | 1684 | RANGE: |
---|
[fd6dc8c8] | 1685 | Positive. |
---|
| 1686 | |
---|
[53bb72e] | 1687 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 1688 | This is not defined by default, which sets the executive to the recommended |
---|
| 1689 | minimum stack size for this processor. |
---|
| 1690 | |
---|
[53bb72e] | 1691 | DESCRIPTION: |
---|
| 1692 | The configuration parameter is set to the number of bytes the application |
---|
| 1693 | wants the minimum stack size to be for every task or thread in the system. |
---|
[fd6dc8c8] | 1694 | |
---|
[53bb72e] | 1695 | Adjusting this parameter should be done with caution. Examining the actual |
---|
| 1696 | usage using the Stack Checker Usage Reporting facility is recommended. |
---|
[fd6dc8c8] | 1697 | |
---|
[53bb72e] | 1698 | NOTES: |
---|
| 1699 | This parameter can be used to lower the minimum from that recommended. This |
---|
| 1700 | can be used in low memory systems to reduce memory consumption for |
---|
| 1701 | stacks. However, this must be done with caution as it could increase the |
---|
| 1702 | possibility of a blown task stack. |
---|
[fd6dc8c8] | 1703 | |
---|
[53bb72e] | 1704 | This parameter can be used to increase the minimum from that |
---|
| 1705 | recommended. This can be used in higher memory systems to reduce the risk |
---|
| 1706 | of stack overflow without performing analysis on actual consumption. |
---|
[fd6dc8c8] | 1707 | |
---|
| 1708 | .. COMMENT: === CONFIGURE_INTERRUPT_STACK_SIZE === |
---|
| 1709 | |
---|
[9aafb39] | 1710 | .. _Configuring the Size of the Interrupt Stack: |
---|
[6c56401] | 1711 | .. index:: CONFIGURE_INTERRUPT_STACK_SIZE |
---|
| 1712 | .. index:: interrupt stack size |
---|
[9aafb39] | 1713 | |
---|
[fd6dc8c8] | 1714 | Configuring the Size of the Interrupt Stack |
---|
| 1715 | ------------------------------------------- |
---|
| 1716 | |
---|
[53bb72e] | 1717 | CONSTANT: |
---|
[fd6dc8c8] | 1718 | ``CONFIGURE_INTERRUPT_STACK_SIZE`` |
---|
| 1719 | |
---|
[53bb72e] | 1720 | DATA TYPE: |
---|
[fd6dc8c8] | 1721 | Unsigned integer (``uint32_t``). |
---|
| 1722 | |
---|
[53bb72e] | 1723 | RANGE: |
---|
[fd6dc8c8] | 1724 | Positive. |
---|
| 1725 | |
---|
[53bb72e] | 1726 | DEFAULT VALUE: |
---|
[c9aaf31] | 1727 | The default value is CONFIGURE_MINIMUM_TASK_STACK_SIZE, which is the |
---|
| 1728 | minimum interrupt stack size. |
---|
[fd6dc8c8] | 1729 | |
---|
[53bb72e] | 1730 | DESCRIPTION: |
---|
| 1731 | ``CONFIGURE_INTERRUPT_STACK_SIZE`` is set to the size of the interrupt |
---|
| 1732 | stack. The interrupt stack size is often set by the BSP but since this |
---|
| 1733 | memory may be allocated from the RTEMS Workspace, it must be accounted for. |
---|
[fd6dc8c8] | 1734 | |
---|
[53bb72e] | 1735 | NOTES: |
---|
| 1736 | In some BSPs, changing this constant does NOT change the size of the |
---|
| 1737 | interrupt stack, only the amount of memory reserved for it. |
---|
[fd6dc8c8] | 1738 | |
---|
[53bb72e] | 1739 | Patches which result in this constant only being used in memory |
---|
| 1740 | calculations when the interrupt stack is intended to be allocated from the |
---|
| 1741 | RTEMS Workspace would be welcomed by the RTEMS Project. |
---|
[fd6dc8c8] | 1742 | |
---|
| 1743 | .. COMMENT: === CONFIGURE_EXTRA_TASK_STACKS === |
---|
| 1744 | |
---|
[9aafb39] | 1745 | .. _Reserve Task/Thread Stack Memory Above Minimum: |
---|
[6c56401] | 1746 | .. index:: CONFIGURE_EXTRA_TASK_STACKS |
---|
| 1747 | .. index:: memory for task tasks |
---|
[fd6dc8c8] | 1748 | |
---|
| 1749 | Reserve Task/Thread Stack Memory Above Minimum |
---|
| 1750 | ---------------------------------------------- |
---|
| 1751 | |
---|
[53bb72e] | 1752 | CONSTANT: |
---|
[fd6dc8c8] | 1753 | ``CONFIGURE_EXTRA_TASK_STACKS`` |
---|
| 1754 | |
---|
[53bb72e] | 1755 | DATA TYPE: |
---|
[fd6dc8c8] | 1756 | Unsigned integer (``size_t``). |
---|
| 1757 | |
---|
[53bb72e] | 1758 | RANGE: |
---|
[fd6dc8c8] | 1759 | Undefined or positive. |
---|
| 1760 | |
---|
[53bb72e] | 1761 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 1762 | The default value is 0. |
---|
| 1763 | |
---|
[53bb72e] | 1764 | DESCRIPTION: |
---|
| 1765 | This configuration parameter is set to the number of bytes the applications |
---|
| 1766 | wishes to add to the task stack requirements calculated by |
---|
| 1767 | ``<rtems/confdefs.h>``. |
---|
[fd6dc8c8] | 1768 | |
---|
[53bb72e] | 1769 | NOTES: |
---|
| 1770 | This parameter is very important. If the application creates tasks with |
---|
| 1771 | stacks larger then the minimum, then that memory is NOT accounted for by |
---|
| 1772 | ``<rtems/confdefs.h>``. |
---|
[fd6dc8c8] | 1773 | |
---|
| 1774 | .. COMMENT: === CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY === |
---|
| 1775 | |
---|
[9aafb39] | 1776 | .. _Automatically Zeroing the RTEMS Workspace and C Program Heap: |
---|
[fd6dc8c8] | 1777 | .. index:: CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY |
---|
| 1778 | .. index:: clear C Program Heap |
---|
| 1779 | .. index:: clear RTEMS Workspace |
---|
| 1780 | .. index:: zero C Program Heap |
---|
| 1781 | .. index:: zero RTEMS Workspace |
---|
| 1782 | |
---|
[6c56401] | 1783 | Automatically Zeroing the RTEMS Workspace and C Program Heap |
---|
| 1784 | ------------------------------------------------------------ |
---|
| 1785 | |
---|
[53bb72e] | 1786 | CONSTANT: |
---|
[fd6dc8c8] | 1787 | ``CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY`` |
---|
| 1788 | |
---|
[53bb72e] | 1789 | DATA TYPE: |
---|
[fd6dc8c8] | 1790 | Boolean feature macro. |
---|
| 1791 | |
---|
[53bb72e] | 1792 | RANGE: |
---|
[fd6dc8c8] | 1793 | Defined or undefined. |
---|
| 1794 | |
---|
[53bb72e] | 1795 | DEFAULT VALUE: |
---|
[c9aaf31] | 1796 | This is not defined by default, unless overridden by the BSP. The default |
---|
| 1797 | is *NOT* to zero out the RTEMS Workspace or C Program Heap. |
---|
[fd6dc8c8] | 1798 | |
---|
[53bb72e] | 1799 | DESCRIPTION: |
---|
| 1800 | This macro indicates whether RTEMS should zero the RTEMS Workspace and C |
---|
| 1801 | Program Heap as part of its initialization. If defined, the memory regions |
---|
| 1802 | are zeroed. Otherwise, they are not. |
---|
[fd6dc8c8] | 1803 | |
---|
[53bb72e] | 1804 | NOTES: |
---|
| 1805 | Zeroing memory can add significantly to system boot time. It is not |
---|
| 1806 | necessary for RTEMS but is often assumed by support libraries. |
---|
[fd6dc8c8] | 1807 | |
---|
| 1808 | .. COMMENT: === CONFIGURE_STACK_CHECKER_ENABLED === |
---|
| 1809 | |
---|
[9aafb39] | 1810 | .. _Enable The Task Stack Usage Checker: |
---|
[6c56401] | 1811 | .. index:: CONFIGURE_STACK_CHECKER_ENABLED |
---|
[9aafb39] | 1812 | |
---|
[fd6dc8c8] | 1813 | Enable The Task Stack Usage Checker |
---|
| 1814 | ----------------------------------- |
---|
| 1815 | |
---|
[53bb72e] | 1816 | CONSTANT: |
---|
[fd6dc8c8] | 1817 | ``CONFIGURE_STACK_CHECKER_ENABLED`` |
---|
| 1818 | |
---|
[53bb72e] | 1819 | DATA TYPE: |
---|
[fd6dc8c8] | 1820 | Boolean feature macro. |
---|
| 1821 | |
---|
[53bb72e] | 1822 | RANGE: |
---|
[fd6dc8c8] | 1823 | Defined or undefined. |
---|
| 1824 | |
---|
[53bb72e] | 1825 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 1826 | This is not defined by default, and thus stack checking is disabled. |
---|
| 1827 | |
---|
[53bb72e] | 1828 | DESCRIPTION: |
---|
| 1829 | This configuration parameter is defined when the application wishes to |
---|
| 1830 | enable run-time stack bounds checking. |
---|
[fd6dc8c8] | 1831 | |
---|
[53bb72e] | 1832 | NOTES: |
---|
| 1833 | In 4.9 and older, this configuration parameter was named ``STACK_CHECKER_ON``. |
---|
[fd6dc8c8] | 1834 | |
---|
[53bb72e] | 1835 | This increases the time required to create tasks as well as adding overhead |
---|
| 1836 | to each context switch. |
---|
[fd6dc8c8] | 1837 | |
---|
| 1838 | .. COMMENT: === CONFIGURE_INITIAL_EXTENSIONS === |
---|
| 1839 | |
---|
[b1e3b75] | 1840 | .. _CONFIGURE_INITIAL_EXTENSIONS: |
---|
[6c56401] | 1841 | .. index:: CONFIGURE_INITIAL_EXTENSIONS |
---|
[9aafb39] | 1842 | |
---|
[fd6dc8c8] | 1843 | Specify Application Specific User Extensions |
---|
| 1844 | -------------------------------------------- |
---|
| 1845 | |
---|
[53bb72e] | 1846 | CONSTANT: |
---|
[fd6dc8c8] | 1847 | ``CONFIGURE_INITIAL_EXTENSIONS`` |
---|
| 1848 | |
---|
[53bb72e] | 1849 | DATA TYPE: |
---|
[fd6dc8c8] | 1850 | List of user extension initializers (``rtems_extensions_table``). |
---|
| 1851 | |
---|
[53bb72e] | 1852 | RANGE: |
---|
[fd6dc8c8] | 1853 | Undefined or a list of one or more user extensions. |
---|
| 1854 | |
---|
[53bb72e] | 1855 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 1856 | This is not defined by default. |
---|
| 1857 | |
---|
[53bb72e] | 1858 | DESCRIPTION: |
---|
| 1859 | If ``CONFIGURE_INITIAL_EXTENSIONS`` is defined by the application, then |
---|
| 1860 | this application specific set of initial extensions will be placed in the |
---|
| 1861 | initial extension table. |
---|
[fd6dc8c8] | 1862 | |
---|
[53bb72e] | 1863 | NOTES: |
---|
| 1864 | None. |
---|
[fd6dc8c8] | 1865 | |
---|
| 1866 | .. COMMENT: === Custom Stack Allocator === |
---|
| 1867 | |
---|
| 1868 | Configuring Custom Task Stack Allocation |
---|
| 1869 | ======================================== |
---|
| 1870 | |
---|
| 1871 | RTEMS allows the application or BSP to define its own allocation and |
---|
[c9aaf31] | 1872 | deallocation methods for task stacks. This can be used to place task stacks in |
---|
| 1873 | special areas of memory or to utilize a Memory Management Unit so that stack |
---|
| 1874 | overflows are detected in hardware. |
---|
[fd6dc8c8] | 1875 | |
---|
| 1876 | .. COMMENT: === CONFIGURE_TASK_STACK_ALLOCATOR_INIT === |
---|
| 1877 | |
---|
[9aafb39] | 1878 | .. _Custom Task Stack Allocator Initialization: |
---|
[6c56401] | 1879 | .. index:: CONFIGURE_TASK_STACK_ALLOCATOR_INIT |
---|
[9aafb39] | 1880 | |
---|
[fd6dc8c8] | 1881 | Custom Task Stack Allocator Initialization |
---|
| 1882 | ------------------------------------------ |
---|
| 1883 | |
---|
[53bb72e] | 1884 | CONSTANT: |
---|
[fd6dc8c8] | 1885 | ``CONFIGURE_TASK_STACK_ALLOCATOR_INIT`` |
---|
| 1886 | |
---|
[53bb72e] | 1887 | DATA TYPE: |
---|
[fd6dc8c8] | 1888 | Function pointer. |
---|
| 1889 | |
---|
[53bb72e] | 1890 | RANGE: |
---|
[fd6dc8c8] | 1891 | Undefined, NULL or valid function pointer. |
---|
| 1892 | |
---|
[53bb72e] | 1893 | DEFAULT VALUE: |
---|
[c9aaf31] | 1894 | The default value is NULL, which indicates that task stacks will be |
---|
| 1895 | allocated from the RTEMS Workspace. |
---|
[fd6dc8c8] | 1896 | |
---|
[53bb72e] | 1897 | DESCRIPTION: |
---|
| 1898 | ``CONFIGURE_TASK_STACK_ALLOCATOR_INIT`` configures the initialization |
---|
| 1899 | method for an application or BSP specific task stack allocation |
---|
| 1900 | implementation. |
---|
[fd6dc8c8] | 1901 | |
---|
[53bb72e] | 1902 | NOTES: |
---|
| 1903 | A correctly configured system must configure the following to be consistent: |
---|
[fd6dc8c8] | 1904 | |
---|
| 1905 | - ``CONFIGURE_TASK_STACK_ALLOCATOR_INIT`` |
---|
| 1906 | |
---|
| 1907 | - ``CONFIGURE_TASK_STACK_ALLOCATOR`` |
---|
| 1908 | |
---|
| 1909 | - ``CONFIGURE_TASK_STACK_DEALLOCATOR`` |
---|
| 1910 | |
---|
| 1911 | .. COMMENT: === CONFIGURE_TASK_STACK_ALLOCATOR === |
---|
| 1912 | |
---|
[9aafb39] | 1913 | .. _Custom Task Stack Allocator: |
---|
[6c56401] | 1914 | .. index:: CONFIGURE_TASK_STACK_ALLOCATOR |
---|
| 1915 | .. index:: task stack allocator |
---|
[9aafb39] | 1916 | |
---|
[fd6dc8c8] | 1917 | Custom Task Stack Allocator |
---|
| 1918 | --------------------------- |
---|
| 1919 | |
---|
[53bb72e] | 1920 | CONSTANT: |
---|
[fd6dc8c8] | 1921 | ``CONFIGURE_TASK_STACK_ALLOCATOR`` |
---|
| 1922 | |
---|
[53bb72e] | 1923 | DATA TYPE: |
---|
[fd6dc8c8] | 1924 | Function pointer. |
---|
| 1925 | |
---|
[53bb72e] | 1926 | RANGE: |
---|
[fd6dc8c8] | 1927 | Undefined or valid function pointer. |
---|
| 1928 | |
---|
[53bb72e] | 1929 | DEFAULT VALUE: |
---|
[c9aaf31] | 1930 | The default value is ``_Workspace_Allocate``, which indicates that task |
---|
| 1931 | stacks will be allocated from the RTEMS Workspace. |
---|
[fd6dc8c8] | 1932 | |
---|
[53bb72e] | 1933 | DESCRIPTION: |
---|
| 1934 | ``CONFIGURE_TASK_STACK_ALLOCATOR`` may point to a user provided routine to |
---|
| 1935 | allocate task stacks. |
---|
[fd6dc8c8] | 1936 | |
---|
[53bb72e] | 1937 | NOTES: |
---|
| 1938 | A correctly configured system must configure the following to be consistent: |
---|
[fd6dc8c8] | 1939 | |
---|
| 1940 | - ``CONFIGURE_TASK_STACK_ALLOCATOR_INIT`` |
---|
| 1941 | |
---|
| 1942 | - ``CONFIGURE_TASK_STACK_ALLOCATOR`` |
---|
| 1943 | |
---|
| 1944 | - ``CONFIGURE_TASK_STACK_DEALLOCATOR`` |
---|
| 1945 | |
---|
| 1946 | .. COMMENT: === CONFIGURE_TASK_STACK_DEALLOCATOR === |
---|
| 1947 | |
---|
[9aafb39] | 1948 | .. _Custom Task Stack Deallocator: |
---|
[6c56401] | 1949 | .. index:: CONFIGURE_TASK_STACK_DEALLOCATOR |
---|
| 1950 | .. index:: task stack deallocator |
---|
[9aafb39] | 1951 | |
---|
[fd6dc8c8] | 1952 | Custom Task Stack Deallocator |
---|
| 1953 | ----------------------------- |
---|
| 1954 | |
---|
[53bb72e] | 1955 | CONSTANT: |
---|
[fd6dc8c8] | 1956 | ``CONFIGURE_TASK_STACK_DEALLOCATOR`` |
---|
| 1957 | |
---|
[53bb72e] | 1958 | DATA TYPE: |
---|
[fd6dc8c8] | 1959 | Function pointer. |
---|
| 1960 | |
---|
[53bb72e] | 1961 | RANGE: |
---|
[fd6dc8c8] | 1962 | Undefined or valid function pointer. |
---|
| 1963 | |
---|
[53bb72e] | 1964 | DEFAULT VALUE: |
---|
[c9aaf31] | 1965 | The default value is ``_Workspace_Free``, which indicates that task stacks |
---|
| 1966 | will be allocated from the RTEMS Workspace. |
---|
[fd6dc8c8] | 1967 | |
---|
[53bb72e] | 1968 | DESCRIPTION: |
---|
| 1969 | ``CONFIGURE_TASK_STACK_DEALLOCATOR`` may point to a user provided routine |
---|
| 1970 | to free task stacks. |
---|
[fd6dc8c8] | 1971 | |
---|
[53bb72e] | 1972 | NOTES: |
---|
| 1973 | A correctly configured system must configure the following to be consistent: |
---|
[fd6dc8c8] | 1974 | |
---|
| 1975 | - ``CONFIGURE_TASK_STACK_ALLOCATOR_INIT`` |
---|
| 1976 | |
---|
| 1977 | - ``CONFIGURE_TASK_STACK_ALLOCATOR`` |
---|
| 1978 | |
---|
| 1979 | - ``CONFIGURE_TASK_STACK_DEALLOCATOR`` |
---|
| 1980 | |
---|
| 1981 | .. COMMENT: === Classic API Message Buffers === |
---|
| 1982 | |
---|
| 1983 | Configuring Memory for Classic API Message Buffers |
---|
| 1984 | ================================================== |
---|
| 1985 | |
---|
[c9aaf31] | 1986 | This section describes the configuration parameters related to specifying the |
---|
| 1987 | amount of memory reserved for Classic API Message Buffers. |
---|
[fd6dc8c8] | 1988 | |
---|
| 1989 | .. COMMENT: === CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE === |
---|
| 1990 | |
---|
[9aafb39] | 1991 | .. _Calculate Memory for a Single Classic Message API Message Queue: |
---|
[6c56401] | 1992 | .. index:: CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE |
---|
| 1993 | .. index:: memory for a single message queue's buffers |
---|
[9aafb39] | 1994 | |
---|
[fd6dc8c8] | 1995 | Calculate Memory for a Single Classic Message API Message Queue |
---|
| 1996 | --------------------------------------------------------------- |
---|
| 1997 | |
---|
[53bb72e] | 1998 | CONSTANT: |
---|
[fd6dc8c8] | 1999 | ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(max_messages, size_per)`` |
---|
| 2000 | |
---|
[53bb72e] | 2001 | DATA TYPE: |
---|
[fd6dc8c8] | 2002 | Unsigned integer (``size_t``). |
---|
| 2003 | |
---|
[53bb72e] | 2004 | RANGE: |
---|
[fd6dc8c8] | 2005 | Positive. |
---|
| 2006 | |
---|
[53bb72e] | 2007 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2008 | The default value is None. |
---|
| 2009 | |
---|
[53bb72e] | 2010 | DESCRIPTION: |
---|
| 2011 | This is a helper macro which is used to assist in computing the total |
---|
| 2012 | amount of memory required for message buffers. Each message queue will |
---|
| 2013 | have its own configuration with maximum message size and maximum number of |
---|
| 2014 | pending messages. |
---|
[fd6dc8c8] | 2015 | |
---|
[53bb72e] | 2016 | The interface for this macro is as follows: |
---|
[fd6dc8c8] | 2017 | |
---|
[53bb72e] | 2018 | .. code-block:: c |
---|
[fd6dc8c8] | 2019 | |
---|
[53bb72e] | 2020 | CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(max_messages, size_per) |
---|
[fd6dc8c8] | 2021 | |
---|
[53bb72e] | 2022 | Where ``max_messages`` is the maximum number of pending messages and |
---|
| 2023 | ``size_per`` is the size in bytes of the user message. |
---|
[fd6dc8c8] | 2024 | |
---|
[53bb72e] | 2025 | NOTES: |
---|
[fd6dc8c8] | 2026 | |
---|
[53bb72e] | 2027 | This macro is only used in support of ``CONFIGURE_MESSAGE_BUFFER_MEMORY``. |
---|
[fd6dc8c8] | 2028 | |
---|
| 2029 | .. COMMENT: === CONFIGURE_MESSAGE_BUFFER_MEMORY === |
---|
| 2030 | |
---|
[9aafb39] | 2031 | .. _Reserve Memory for All Classic Message API Message Queues: |
---|
[6c56401] | 2032 | .. index:: CONFIGURE_MESSAGE_BUFFER_MEMORY |
---|
| 2033 | .. index:: configure message queue buffer memory |
---|
[9aafb39] | 2034 | |
---|
[fd6dc8c8] | 2035 | Reserve Memory for All Classic Message API Message Queues |
---|
| 2036 | --------------------------------------------------------- |
---|
| 2037 | |
---|
[53bb72e] | 2038 | CONSTANT: |
---|
[fd6dc8c8] | 2039 | ``CONFIGURE_MESSAGE_BUFFER_MEMORY`` |
---|
| 2040 | |
---|
[53bb72e] | 2041 | DATA TYPE: |
---|
[fd6dc8c8] | 2042 | integer summation macro |
---|
| 2043 | |
---|
[53bb72e] | 2044 | RANGE: |
---|
[fd6dc8c8] | 2045 | undefined (zero) or calculation resulting in a positive integer |
---|
| 2046 | |
---|
[53bb72e] | 2047 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2048 | This is not defined by default, and zero (0) memory is reserved. |
---|
| 2049 | |
---|
[53bb72e] | 2050 | DESCRIPTION: |
---|
| 2051 | This macro is set to the number of bytes the application requires to be |
---|
| 2052 | reserved for pending Classic API Message Queue buffers. |
---|
| 2053 | |
---|
| 2054 | NOTES: |
---|
| 2055 | The following illustrates how the help macro |
---|
| 2056 | ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE`` can be used to assist in |
---|
| 2057 | calculating the message buffer memory required. In this example, there are |
---|
| 2058 | two message queues used in this application. The first message queue has |
---|
| 2059 | maximum of 24 pending messages with the message structure defined by the |
---|
| 2060 | type ``one_message_type``. The other message queue has maximum of 500 |
---|
| 2061 | pending messages with the message structure defined by the type |
---|
| 2062 | ``other_message_type``. |
---|
| 2063 | |
---|
| 2064 | .. code-block:: c |
---|
| 2065 | |
---|
| 2066 | #define CONFIGURE_MESSAGE_BUFFER_MEMORY \ |
---|
| 2067 | (CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( \ |
---|
| 2068 | 24, sizeof(one_message_type) \ |
---|
| 2069 | ) + \ |
---|
| 2070 | CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( \ |
---|
| 2071 | 500, sizeof(other_message_type) \ |
---|
| 2072 | ) |
---|
[fd6dc8c8] | 2073 | |
---|
| 2074 | .. COMMENT: === Seldom Used Configuration Parameters === |
---|
| 2075 | |
---|
| 2076 | Seldom Used Configuration Parameters |
---|
| 2077 | ==================================== |
---|
| 2078 | |
---|
[c9aaf31] | 2079 | This section describes configuration parameters supported by |
---|
| 2080 | ``<rtems/confdefs.h>`` which are seldom used by applications. These parameters |
---|
| 2081 | tend to be oriented to debugging system configurations and providing |
---|
| 2082 | work-arounds when the memory estimated by ``<rtems/confdefs.h>`` is incorrect. |
---|
[fd6dc8c8] | 2083 | |
---|
| 2084 | .. COMMENT: === CONFIGURE_MEMORY_OVERHEAD === |
---|
| 2085 | |
---|
[9aafb39] | 2086 | .. _Specify Memory Overhead: |
---|
[6c56401] | 2087 | .. index:: CONFIGURE_MEMORY_OVERHEAD |
---|
[fd6dc8c8] | 2088 | |
---|
| 2089 | Specify Memory Overhead |
---|
| 2090 | ----------------------- |
---|
| 2091 | |
---|
[53bb72e] | 2092 | CONSTANT: |
---|
[fd6dc8c8] | 2093 | ``CONFIGURE_MEMORY_OVERHEAD`` |
---|
| 2094 | |
---|
[53bb72e] | 2095 | DATA TYPE: |
---|
[fd6dc8c8] | 2096 | Unsigned integer (``size_t``). |
---|
| 2097 | |
---|
[53bb72e] | 2098 | RANGE: |
---|
[fd6dc8c8] | 2099 | Zero or positive. |
---|
| 2100 | |
---|
[53bb72e] | 2101 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2102 | The default value is 0. |
---|
| 2103 | |
---|
[53bb72e] | 2104 | DESCRIPTION: |
---|
| 2105 | This parameter is set to the number of kilobytes the application wishes to |
---|
| 2106 | add to the requirements calculated by ``<rtems/confdefs.h>``. |
---|
[fd6dc8c8] | 2107 | |
---|
[53bb72e] | 2108 | NOTES: |
---|
| 2109 | This configuration parameter should only be used when it is suspected that |
---|
| 2110 | a bug in ``<rtems/confdefs.h>`` has resulted in an underestimation. |
---|
| 2111 | Typically the memory allocation will be too low when an application does |
---|
| 2112 | not account for all message queue buffers or task stacks. |
---|
[fd6dc8c8] | 2113 | |
---|
| 2114 | .. COMMENT: === CONFIGURE_HAS_OWN_CONFIGURATION_TABLE === |
---|
| 2115 | |
---|
[9aafb39] | 2116 | .. _Do Not Generate Configuration Information: |
---|
[6c56401] | 2117 | .. index:: CONFIGURE_HAS_OWN_CONFIGURATION_TABLE |
---|
[9aafb39] | 2118 | |
---|
[fd6dc8c8] | 2119 | Do Not Generate Configuration Information |
---|
| 2120 | ----------------------------------------- |
---|
| 2121 | |
---|
[53bb72e] | 2122 | CONSTANT: |
---|
[fd6dc8c8] | 2123 | ``CONFIGURE_HAS_OWN_CONFIGURATION_TABLE`` |
---|
| 2124 | |
---|
[53bb72e] | 2125 | DATA TYPE: |
---|
[fd6dc8c8] | 2126 | Boolean feature macro. |
---|
| 2127 | |
---|
[53bb72e] | 2128 | RANGE: |
---|
[fd6dc8c8] | 2129 | Defined or undefined. |
---|
| 2130 | |
---|
[53bb72e] | 2131 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2132 | This is not defined by default. |
---|
| 2133 | |
---|
[53bb72e] | 2134 | DESCRIPTION: |
---|
| 2135 | This configuration parameter should only be defined if the application is |
---|
| 2136 | providing their own complete set of configuration tables. |
---|
[fd6dc8c8] | 2137 | |
---|
[53bb72e] | 2138 | NOTES: |
---|
| 2139 | None. |
---|
[fd6dc8c8] | 2140 | |
---|
| 2141 | .. COMMENT: === C Library Support Configuration === |
---|
| 2142 | |
---|
| 2143 | C Library Support Configuration |
---|
| 2144 | =============================== |
---|
| 2145 | |
---|
[c9aaf31] | 2146 | This section defines the file system and IO library related configuration |
---|
| 2147 | parameters supported by ``<rtems/confdefs.h>``. |
---|
[fd6dc8c8] | 2148 | |
---|
| 2149 | .. COMMENT: === CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS === |
---|
| 2150 | |
---|
[9aafb39] | 2151 | .. _Specify Maximum Number of File Descriptors: |
---|
[6c56401] | 2152 | .. index:: CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS |
---|
| 2153 | .. index:: maximum file descriptors |
---|
[9aafb39] | 2154 | |
---|
[fd6dc8c8] | 2155 | Specify Maximum Number of File Descriptors |
---|
| 2156 | ------------------------------------------ |
---|
| 2157 | |
---|
[53bb72e] | 2158 | CONSTANT: |
---|
[fd6dc8c8] | 2159 | ``CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS`` |
---|
| 2160 | |
---|
[53bb72e] | 2161 | DATA TYPE: |
---|
[fd6dc8c8] | 2162 | Unsigned integer (``uint32_t``). |
---|
| 2163 | |
---|
[53bb72e] | 2164 | RANGE: |
---|
[fd6dc8c8] | 2165 | Zero or positive. |
---|
| 2166 | |
---|
[53bb72e] | 2167 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2168 | If ``CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER`` is defined, then the |
---|
[c9aaf31] | 2169 | default value is 3, otherwise the default value is 0. Three file |
---|
| 2170 | descriptors allows RTEMS to support standard input, output, and error I/O |
---|
| 2171 | streams on ``/dev/console``. |
---|
[fd6dc8c8] | 2172 | |
---|
[53bb72e] | 2173 | DESCRIPTION: |
---|
| 2174 | This configuration parameter is set to the maximum number of file like |
---|
| 2175 | objects that can be concurrently open. |
---|
[fd6dc8c8] | 2176 | |
---|
[53bb72e] | 2177 | NOTES: |
---|
| 2178 | None. |
---|
[fd6dc8c8] | 2179 | |
---|
| 2180 | .. COMMENT: === CONFIGURE_TERMIOS_DISABLED === |
---|
| 2181 | |
---|
[9aafb39] | 2182 | .. _Disable POSIX Termios Support: |
---|
[6c56401] | 2183 | .. index:: CONFIGURE_TERMIOS_DISABLED |
---|
[9aafb39] | 2184 | |
---|
[fd6dc8c8] | 2185 | Disable POSIX Termios Support |
---|
| 2186 | ----------------------------- |
---|
| 2187 | |
---|
[53bb72e] | 2188 | CONSTANT: |
---|
[fd6dc8c8] | 2189 | ``CONFIGURE_TERMIOS_DISABLED`` |
---|
| 2190 | |
---|
[53bb72e] | 2191 | DATA TYPE: |
---|
[fd6dc8c8] | 2192 | Boolean feature macro. |
---|
| 2193 | |
---|
[53bb72e] | 2194 | RANGE: |
---|
[fd6dc8c8] | 2195 | Defined or undefined. |
---|
| 2196 | |
---|
[53bb72e] | 2197 | DEFAULT VALUE: |
---|
[c9aaf31] | 2198 | This is not defined by default, and resources are reserved for the termios |
---|
| 2199 | functionality. |
---|
[fd6dc8c8] | 2200 | |
---|
[53bb72e] | 2201 | DESCRIPTION: |
---|
| 2202 | This configuration parameter is defined if the software implementing POSIX |
---|
| 2203 | termios functionality is not going to be used by this application. |
---|
[fd6dc8c8] | 2204 | |
---|
[53bb72e] | 2205 | NOTES: |
---|
| 2206 | The termios support library should not be included in an application |
---|
| 2207 | executable unless it is directly referenced by the application or a device |
---|
| 2208 | driver. |
---|
[fd6dc8c8] | 2209 | |
---|
| 2210 | .. COMMENT: === CONFIGURE_NUMBER_OF_TERMIOS_PORTS === |
---|
| 2211 | |
---|
[9aafb39] | 2212 | .. _Specify Maximum Termios Ports: |
---|
[6c56401] | 2213 | .. index:: CONFIGURE_NUMBER_OF_TERMIOS_PORTS |
---|
[9aafb39] | 2214 | |
---|
[fd6dc8c8] | 2215 | Specify Maximum Termios Ports |
---|
| 2216 | ----------------------------- |
---|
| 2217 | |
---|
[53bb72e] | 2218 | CONSTANT: |
---|
[fd6dc8c8] | 2219 | ``CONFIGURE_NUMBER_OF_TERMIOS_PORTS`` |
---|
| 2220 | |
---|
[53bb72e] | 2221 | DATA TYPE: |
---|
[fd6dc8c8] | 2222 | Unsigned integer. |
---|
| 2223 | |
---|
[53bb72e] | 2224 | RANGE: |
---|
[fd6dc8c8] | 2225 | Zero or positive. |
---|
| 2226 | |
---|
[53bb72e] | 2227 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2228 | The default value is 1, so a console port can be used. |
---|
| 2229 | |
---|
[53bb72e] | 2230 | DESCRIPTION: |
---|
| 2231 | This configuration parameter is set to the number of ports using the |
---|
| 2232 | termios functionality. Each concurrently active termios port requires |
---|
| 2233 | resources. |
---|
[fd6dc8c8] | 2234 | |
---|
[53bb72e] | 2235 | NOTES: |
---|
| 2236 | If the application will be using serial ports including, but not limited |
---|
| 2237 | to, the Console Device |
---|
| 2238 | (e.g. ``CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER``), then it is highly |
---|
| 2239 | likely that this configuration parameter should NOT be is defined. |
---|
[fd6dc8c8] | 2240 | |
---|
| 2241 | .. COMMENT: === File System Configuration Parameters === |
---|
| 2242 | |
---|
| 2243 | File System Configuration Parameters |
---|
| 2244 | ==================================== |
---|
| 2245 | |
---|
| 2246 | This section defines File System related configuration parameters. |
---|
| 2247 | |
---|
| 2248 | .. COMMENT: === CONFIGURE_HAS_OWN_MOUNT_TABLE === |
---|
| 2249 | |
---|
[9aafb39] | 2250 | .. _Providing Application Specific Mount Table: |
---|
[6c56401] | 2251 | .. index:: CONFIGURE_HAS_OWN_MOUNT_TABLE |
---|
[9aafb39] | 2252 | |
---|
[fd6dc8c8] | 2253 | Providing Application Specific Mount Table |
---|
| 2254 | ------------------------------------------ |
---|
| 2255 | |
---|
[53bb72e] | 2256 | CONSTANT: |
---|
[fd6dc8c8] | 2257 | ``CONFIGURE_HAS_OWN_MOUNT_TABLE`` |
---|
| 2258 | |
---|
[53bb72e] | 2259 | DATA TYPE: |
---|
[fd6dc8c8] | 2260 | Undefined or an array of type ``rtems_filesystem_mount_table_t``. |
---|
| 2261 | |
---|
[53bb72e] | 2262 | RANGE: |
---|
[fd6dc8c8] | 2263 | Undefined or an array of type ``rtems_filesystem_mount_table_t``. |
---|
| 2264 | |
---|
[53bb72e] | 2265 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2266 | This is not defined by default. |
---|
| 2267 | |
---|
[53bb72e] | 2268 | DESCRIPTION: |
---|
| 2269 | This configuration parameter is defined when the application provides their |
---|
| 2270 | own filesystem mount table. The mount table is an array of |
---|
| 2271 | ``rtems_filesystem_mount_table_t`` entries pointed to by the global |
---|
| 2272 | variable ``rtems_filesystem_mount_table``. The number of entries in this |
---|
| 2273 | table is in an integer variable named ``rtems_filesystem_mount_table_t``. |
---|
[fd6dc8c8] | 2274 | |
---|
| 2275 | .. COMMENT: XXX - is the variable name for the count right? |
---|
| 2276 | |
---|
[53bb72e] | 2277 | NOTES: |
---|
| 2278 | None. |
---|
[fd6dc8c8] | 2279 | |
---|
| 2280 | .. COMMENT: XXX - Please provide an example |
---|
| 2281 | |
---|
| 2282 | .. COMMENT: === CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM === |
---|
| 2283 | |
---|
[9aafb39] | 2284 | .. _Configure devFS as Root File System: |
---|
[6c56401] | 2285 | .. index:: CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM |
---|
[9aafb39] | 2286 | |
---|
[fd6dc8c8] | 2287 | Configure devFS as Root File System |
---|
| 2288 | ----------------------------------- |
---|
| 2289 | |
---|
[53bb72e] | 2290 | CONSTANT: |
---|
[fd6dc8c8] | 2291 | ``CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM`` |
---|
| 2292 | |
---|
[53bb72e] | 2293 | DATA TYPE: |
---|
[fd6dc8c8] | 2294 | Boolean feature macro. |
---|
| 2295 | |
---|
[53bb72e] | 2296 | RANGE: |
---|
[fd6dc8c8] | 2297 | Defined or undefined. |
---|
| 2298 | |
---|
[53bb72e] | 2299 | DEFAULT VALUE: |
---|
[c9aaf31] | 2300 | This is not defined by default. If no other root file system configuration |
---|
| 2301 | parameters are specified, the IMFS will be used as the root file system. |
---|
[fd6dc8c8] | 2302 | |
---|
[53bb72e] | 2303 | DESCRIPTION: |
---|
| 2304 | This configuration parameter is defined if the application wishes to use |
---|
| 2305 | the device-only filesytem as the root file system. |
---|
[fd6dc8c8] | 2306 | |
---|
[53bb72e] | 2307 | NOTES: |
---|
| 2308 | The device-only filesystem supports only device nodes and is smaller in |
---|
| 2309 | executable code size than the full IMFS and miniIMFS. |
---|
[fd6dc8c8] | 2310 | |
---|
[53bb72e] | 2311 | The devFS is comparable in functionality to the pseudo-filesystem name |
---|
| 2312 | space provided before RTEMS release 4.5.0. |
---|
[fd6dc8c8] | 2313 | |
---|
| 2314 | .. COMMENT: === CONFIGURE_MAXIMUM_DEVICES === |
---|
| 2315 | |
---|
[9aafb39] | 2316 | .. _Specifying Maximum Devices for devFS: |
---|
[6c56401] | 2317 | .. index:: CONFIGURE_MAXIMUM_DEVICES |
---|
[9aafb39] | 2318 | |
---|
[fd6dc8c8] | 2319 | Specifying Maximum Devices for devFS |
---|
| 2320 | ------------------------------------ |
---|
| 2321 | |
---|
[53bb72e] | 2322 | CONSTANT: |
---|
[fd6dc8c8] | 2323 | ``CONFIGURE_MAXIMUM_DEVICES`` |
---|
| 2324 | |
---|
[53bb72e] | 2325 | DATA TYPE: |
---|
[fd6dc8c8] | 2326 | Unsigned integer (``uint32_t``). |
---|
| 2327 | |
---|
[53bb72e] | 2328 | RANGE: |
---|
[fd6dc8c8] | 2329 | Positive. |
---|
| 2330 | |
---|
[53bb72e] | 2331 | DEFAULT VALUE: |
---|
[c9aaf31] | 2332 | If ``BSP_MAXIMUM_DEVICES`` is defined, then the default value is |
---|
| 2333 | ``BSP_MAXIMUM_DEVICES``, otherwise the default value is 4. |
---|
[fd6dc8c8] | 2334 | |
---|
[53bb72e] | 2335 | DESCRIPTION: |
---|
| 2336 | ``CONFIGURE_MAXIMUM_DEVICES`` is defined to the number of individual |
---|
| 2337 | devices that may be registered in the device file system (devFS). |
---|
[fd6dc8c8] | 2338 | |
---|
[53bb72e] | 2339 | NOTES: |
---|
| 2340 | This option is specific to the device file system (devFS) and should not be |
---|
| 2341 | confused with the ``CONFIGURE_MAXIMUM_DRIVERS`` option. This parameter |
---|
| 2342 | only impacts the devFS and thus is only used by ``<rtems/confdefs.h>`` when |
---|
| 2343 | ``CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM`` is specified. |
---|
[fd6dc8c8] | 2344 | |
---|
| 2345 | .. COMMENT: === CONFIGURE_APPLICATION_DISABLE_FILESYSTEM === |
---|
| 2346 | |
---|
[9aafb39] | 2347 | .. _Disable File System Support: |
---|
[6c56401] | 2348 | .. index:: CONFIGURE_APPLICATION_DISABLE_FILESYSTEM |
---|
[9aafb39] | 2349 | |
---|
[fd6dc8c8] | 2350 | Disable File System Support |
---|
| 2351 | --------------------------- |
---|
| 2352 | |
---|
[53bb72e] | 2353 | CONSTANT: |
---|
[fd6dc8c8] | 2354 | ``CONFIGURE_APPLICATION_DISABLE_FILESYSTEM`` |
---|
| 2355 | |
---|
[53bb72e] | 2356 | DATA TYPE: |
---|
[fd6dc8c8] | 2357 | Boolean feature macro. |
---|
| 2358 | |
---|
[53bb72e] | 2359 | RANGE: |
---|
[fd6dc8c8] | 2360 | Defined or undefined. |
---|
| 2361 | |
---|
[53bb72e] | 2362 | DEFAULT VALUE: |
---|
[c9aaf31] | 2363 | This is not defined by default. If no other root file system configuration |
---|
| 2364 | parameters are specified, the IMFS will be used as the root file system. |
---|
[fd6dc8c8] | 2365 | |
---|
[53bb72e] | 2366 | DESCRIPTION: |
---|
| 2367 | This configuration parameter is defined if the application dose not intend |
---|
| 2368 | to use any kind of filesystem support. This include the device |
---|
| 2369 | infrastructure necessary to support ``printf()``. |
---|
[fd6dc8c8] | 2370 | |
---|
[53bb72e] | 2371 | NOTES: |
---|
| 2372 | None. |
---|
[fd6dc8c8] | 2373 | |
---|
| 2374 | .. COMMENT: === CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM === |
---|
| 2375 | |
---|
[9aafb39] | 2376 | .. _Use a Root IMFS with a Minimalistic Feature Set: |
---|
[6c56401] | 2377 | .. index:: CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM |
---|
[9aafb39] | 2378 | |
---|
[fd6dc8c8] | 2379 | Use a Root IMFS with a Minimalistic Feature Set |
---|
| 2380 | ----------------------------------------------- |
---|
| 2381 | |
---|
[53bb72e] | 2382 | CONSTANT: |
---|
[fd6dc8c8] | 2383 | ``CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM`` |
---|
| 2384 | |
---|
[53bb72e] | 2385 | DATA TYPE: |
---|
[fd6dc8c8] | 2386 | Boolean feature macro. |
---|
| 2387 | |
---|
[53bb72e] | 2388 | RANGE: |
---|
[fd6dc8c8] | 2389 | Defined or undefined. |
---|
| 2390 | |
---|
[53bb72e] | 2391 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2392 | This is not defined by default. |
---|
| 2393 | |
---|
[53bb72e] | 2394 | DESCRIPTION: |
---|
| 2395 | In case this configuration option is defined, then the following |
---|
| 2396 | configuration options will be defined as well |
---|
[fd6dc8c8] | 2397 | |
---|
[53bb72e] | 2398 | - ``CONFIGURE_IMFS_DISABLE_CHMOD``, |
---|
[fd6dc8c8] | 2399 | |
---|
[53bb72e] | 2400 | - ``CONFIGURE_IMFS_DISABLE_CHOWN``, |
---|
[fd6dc8c8] | 2401 | |
---|
[53bb72e] | 2402 | - ``CONFIGURE_IMFS_DISABLE_UTIME``, |
---|
[fd6dc8c8] | 2403 | |
---|
[53bb72e] | 2404 | - ``CONFIGURE_IMFS_DISABLE_LINK``, |
---|
[fd6dc8c8] | 2405 | |
---|
[53bb72e] | 2406 | - ``CONFIGURE_IMFS_DISABLE_SYMLINK``, |
---|
[fd6dc8c8] | 2407 | |
---|
[53bb72e] | 2408 | - ``CONFIGURE_IMFS_DISABLE_READLINK``, |
---|
[fd6dc8c8] | 2409 | |
---|
[53bb72e] | 2410 | - ``CONFIGURE_IMFS_DISABLE_RENAME``, and |
---|
[fd6dc8c8] | 2411 | |
---|
[53bb72e] | 2412 | - ``CONFIGURE_IMFS_DISABLE_UNMOUNT``. |
---|
[fd6dc8c8] | 2413 | |
---|
| 2414 | .. COMMENT: === CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK === |
---|
| 2415 | |
---|
[9aafb39] | 2416 | .. _Specify Block Size for IMFS: |
---|
[6c56401] | 2417 | .. index:: CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK |
---|
[9aafb39] | 2418 | |
---|
[fd6dc8c8] | 2419 | Specify Block Size for IMFS |
---|
| 2420 | --------------------------- |
---|
| 2421 | |
---|
[53bb72e] | 2422 | CONSTANT: |
---|
[fd6dc8c8] | 2423 | ``CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK`` |
---|
| 2424 | |
---|
[53bb72e] | 2425 | DATA TYPE: |
---|
[fd6dc8c8] | 2426 | Boolean feature macro. |
---|
| 2427 | |
---|
[53bb72e] | 2428 | RANGE: |
---|
[fd6dc8c8] | 2429 | Valid values for this configuration parameter are a power of two (2) |
---|
[c9aaf31] | 2430 | between 16 and 512 inclusive. In other words, valid values are 16, 32, 64, |
---|
| 2431 | 128, 256,and 512. |
---|
[fd6dc8c8] | 2432 | |
---|
[53bb72e] | 2433 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2434 | The default IMFS block size is 128 bytes. |
---|
| 2435 | |
---|
[53bb72e] | 2436 | DESCRIPTION: |
---|
| 2437 | This configuration parameter specifies the block size for in-memory files |
---|
| 2438 | managed by the IMFS. The configured block size has two impacts. The first |
---|
| 2439 | is the average amount of unused memory in the last block of each file. For |
---|
| 2440 | example, when the block size is 512, on average one-half of the last block |
---|
| 2441 | of each file will remain unused and the memory is wasted. In contrast, when |
---|
| 2442 | the block size is 16, the average unused memory per file is only 8 |
---|
| 2443 | bytes. However, it requires more allocations for the same size file and |
---|
| 2444 | thus more overhead per block for the dynamic memory management. |
---|
[fd6dc8c8] | 2445 | |
---|
[53bb72e] | 2446 | Second, the block size has an impact on the maximum size file that can be |
---|
| 2447 | stored in the IMFS. With smaller block size, the maximum file size is |
---|
| 2448 | correspondingly smaller. The following shows the maximum file size possible |
---|
| 2449 | based on the configured block size: |
---|
[fd6dc8c8] | 2450 | |
---|
[53bb72e] | 2451 | - when the block size is 16 bytes, the maximum file size is 1,328 bytes. |
---|
[fd6dc8c8] | 2452 | |
---|
[53bb72e] | 2453 | - when the block size is 32 bytes, the maximum file size is 18,656 bytes. |
---|
[fd6dc8c8] | 2454 | |
---|
[53bb72e] | 2455 | - when the block size is 64 bytes, the maximum file size is 279,488 bytes. |
---|
[fd6dc8c8] | 2456 | |
---|
[53bb72e] | 2457 | - when the block size is 128 bytes, the maximum file size is 4,329,344 bytes. |
---|
[fd6dc8c8] | 2458 | |
---|
[53bb72e] | 2459 | - when the block size is 256 bytes, the maximum file size is 68,173,568 bytes. |
---|
[c9aaf31] | 2460 | |
---|
[53bb72e] | 2461 | - when the block size is 512 bytes, the maximum file size is 1,082,195,456 |
---|
| 2462 | bytes. |
---|
[fd6dc8c8] | 2463 | |
---|
| 2464 | .. COMMENT: === CONFIGURE_IMFS_DISABLE_CHOWN === |
---|
| 2465 | |
---|
[9aafb39] | 2466 | .. _Disable Change Owner Support of Root IMFS: |
---|
[6c56401] | 2467 | .. index:: CONFIGURE_IMFS_DISABLE_CHOWN |
---|
[9aafb39] | 2468 | |
---|
[fd6dc8c8] | 2469 | Disable Change Owner Support of Root IMFS |
---|
| 2470 | ----------------------------------------- |
---|
| 2471 | |
---|
[53bb72e] | 2472 | CONSTANT: |
---|
[fd6dc8c8] | 2473 | ``CONFIGURE_IMFS_DISABLE_CHOWN`` |
---|
| 2474 | |
---|
[53bb72e] | 2475 | DATA TYPE: |
---|
[fd6dc8c8] | 2476 | Boolean feature macro. |
---|
| 2477 | |
---|
[53bb72e] | 2478 | RANGE: |
---|
[fd6dc8c8] | 2479 | Defined or undefined. |
---|
| 2480 | |
---|
[53bb72e] | 2481 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2482 | This is not defined by default. |
---|
| 2483 | |
---|
[53bb72e] | 2484 | DESCRIPTION: |
---|
| 2485 | In case this configuration option is defined, then the support to change |
---|
| 2486 | the owner is disabled in the root IMFS. |
---|
[fd6dc8c8] | 2487 | |
---|
| 2488 | .. COMMENT: === CONFIGURE_IMFS_DISABLE_CHMOD === |
---|
| 2489 | |
---|
[9aafb39] | 2490 | .. _Disable Change Mode Support of Root IMFS: |
---|
[6c56401] | 2491 | .. index:: CONFIGURE_IMFS_DISABLE_CHMOD |
---|
[9aafb39] | 2492 | |
---|
[fd6dc8c8] | 2493 | Disable Change Mode Support of Root IMFS |
---|
| 2494 | ---------------------------------------- |
---|
| 2495 | |
---|
[53bb72e] | 2496 | CONSTANT: |
---|
[fd6dc8c8] | 2497 | ``CONFIGURE_IMFS_DISABLE_CHMOD`` |
---|
| 2498 | |
---|
[53bb72e] | 2499 | DATA TYPE: |
---|
[fd6dc8c8] | 2500 | Boolean feature macro. |
---|
| 2501 | |
---|
[53bb72e] | 2502 | RANGE: |
---|
[fd6dc8c8] | 2503 | Defined or undefined. |
---|
| 2504 | |
---|
[53bb72e] | 2505 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2506 | This is not defined by default. |
---|
| 2507 | |
---|
[53bb72e] | 2508 | DESCRIPTION: |
---|
| 2509 | In case this configuration option is defined, then the support to change |
---|
| 2510 | the mode is disabled in the root IMFS. |
---|
[fd6dc8c8] | 2511 | |
---|
| 2512 | .. COMMENT: === CONFIGURE_IMFS_DISABLE_UTIME === |
---|
| 2513 | |
---|
[9aafb39] | 2514 | .. _Disable Change Times Support of Root IMFS: |
---|
[6c56401] | 2515 | .. index:: CONFIGURE_IMFS_DISABLE_UTIME |
---|
[9aafb39] | 2516 | |
---|
[fd6dc8c8] | 2517 | Disable Change Times Support of Root IMFS |
---|
| 2518 | ----------------------------------------- |
---|
| 2519 | |
---|
[53bb72e] | 2520 | CONSTANT: |
---|
[fd6dc8c8] | 2521 | ``CONFIGURE_IMFS_DISABLE_UTIME`` |
---|
| 2522 | |
---|
[53bb72e] | 2523 | DATA TYPE: |
---|
[fd6dc8c8] | 2524 | Boolean feature macro. |
---|
| 2525 | |
---|
[53bb72e] | 2526 | RANGE: |
---|
[fd6dc8c8] | 2527 | Defined or undefined. |
---|
| 2528 | |
---|
[53bb72e] | 2529 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2530 | This is not defined by default. |
---|
| 2531 | |
---|
[53bb72e] | 2532 | DESCRIPTION: |
---|
| 2533 | In case this configuration option is defined, then the support to change |
---|
| 2534 | times is disabled in the root IMFS. |
---|
[fd6dc8c8] | 2535 | |
---|
| 2536 | .. COMMENT: === CONFIGURE_IMFS_DISABLE_LINK === |
---|
| 2537 | |
---|
[9aafb39] | 2538 | .. _Disable Create Hard Link Support of Root IMFS: |
---|
[6c56401] | 2539 | .. index:: CONFIGURE_IMFS_DISABLE_LINK |
---|
[9aafb39] | 2540 | |
---|
[fd6dc8c8] | 2541 | Disable Create Hard Link Support of Root IMFS |
---|
| 2542 | --------------------------------------------- |
---|
| 2543 | |
---|
[53bb72e] | 2544 | CONSTANT: |
---|
[fd6dc8c8] | 2545 | ``CONFIGURE_IMFS_DISABLE_LINK`` |
---|
| 2546 | |
---|
[53bb72e] | 2547 | DATA TYPE: |
---|
[fd6dc8c8] | 2548 | Boolean feature macro. |
---|
| 2549 | |
---|
[53bb72e] | 2550 | RANGE: |
---|
[fd6dc8c8] | 2551 | Defined or undefined. |
---|
| 2552 | |
---|
[53bb72e] | 2553 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2554 | This is not defined by default. |
---|
| 2555 | |
---|
[53bb72e] | 2556 | DESCRIPTION: |
---|
| 2557 | In case this configuration option is defined, then the support to create |
---|
| 2558 | hard links is disabled in the root IMFS. |
---|
[fd6dc8c8] | 2559 | |
---|
| 2560 | .. COMMENT: === CONFIGURE_IMFS_DISABLE_SYMLINK === |
---|
| 2561 | |
---|
[9aafb39] | 2562 | .. _Disable Create Symbolic Link Support of Root IMFS: |
---|
[6c56401] | 2563 | .. index:: CONFIGURE_IMFS_DISABLE_SYMLINK |
---|
[9aafb39] | 2564 | |
---|
[fd6dc8c8] | 2565 | Disable Create Symbolic Link Support of Root IMFS |
---|
| 2566 | ------------------------------------------------- |
---|
| 2567 | |
---|
[53bb72e] | 2568 | CONSTANT: |
---|
[fd6dc8c8] | 2569 | ``CONFIGURE_IMFS_DISABLE_SYMLINK`` |
---|
| 2570 | |
---|
[53bb72e] | 2571 | DATA TYPE: |
---|
[fd6dc8c8] | 2572 | Boolean feature macro. |
---|
| 2573 | |
---|
[53bb72e] | 2574 | RANGE: |
---|
[fd6dc8c8] | 2575 | Defined or undefined. |
---|
| 2576 | |
---|
[53bb72e] | 2577 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2578 | This is not defined by default. |
---|
| 2579 | |
---|
[53bb72e] | 2580 | DESCRIPTION: |
---|
| 2581 | In case this configuration option is defined, then the support to create |
---|
| 2582 | symbolic links is disabled in the root IMFS. |
---|
[fd6dc8c8] | 2583 | |
---|
| 2584 | .. COMMENT: === CONFIGURE_IMFS_DISABLE_READLINK === |
---|
| 2585 | |
---|
[9aafb39] | 2586 | .. _Disable Read Symbolic Link Support of Root IMFS: |
---|
[6c56401] | 2587 | .. index:: CONFIGURE_IMFS_DISABLE_READLINK |
---|
[9aafb39] | 2588 | |
---|
[fd6dc8c8] | 2589 | Disable Read Symbolic Link Support of Root IMFS |
---|
| 2590 | ----------------------------------------------- |
---|
| 2591 | |
---|
[53bb72e] | 2592 | CONSTANT: |
---|
[fd6dc8c8] | 2593 | ``CONFIGURE_IMFS_DISABLE_READLINK`` |
---|
| 2594 | |
---|
[53bb72e] | 2595 | DATA TYPE: |
---|
[fd6dc8c8] | 2596 | Boolean feature macro. |
---|
| 2597 | |
---|
[53bb72e] | 2598 | RANGE: |
---|
[fd6dc8c8] | 2599 | Defined or undefined. |
---|
| 2600 | |
---|
[53bb72e] | 2601 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2602 | This is not defined by default. |
---|
| 2603 | |
---|
[53bb72e] | 2604 | DESCRIPTION: |
---|
| 2605 | In case this configuration option is defined, then the support to read |
---|
| 2606 | symbolic links is disabled in the root IMFS. |
---|
[fd6dc8c8] | 2607 | |
---|
| 2608 | .. COMMENT: === CONFIGURE_IMFS_DISABLE_RENAME === |
---|
| 2609 | |
---|
[9aafb39] | 2610 | .. _Disable Rename Support of Root IMFS: |
---|
[6c56401] | 2611 | .. index:: CONFIGURE_IMFS_DISABLE_RENAME |
---|
[9aafb39] | 2612 | |
---|
[fd6dc8c8] | 2613 | Disable Rename Support of Root IMFS |
---|
| 2614 | ----------------------------------- |
---|
| 2615 | |
---|
[53bb72e] | 2616 | CONSTANT: |
---|
[fd6dc8c8] | 2617 | ``CONFIGURE_IMFS_DISABLE_RENAME`` |
---|
| 2618 | |
---|
[53bb72e] | 2619 | DATA TYPE: |
---|
[fd6dc8c8] | 2620 | Boolean feature macro. |
---|
| 2621 | |
---|
[53bb72e] | 2622 | RANGE: |
---|
[fd6dc8c8] | 2623 | Defined or undefined. |
---|
| 2624 | |
---|
[53bb72e] | 2625 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2626 | This is not defined by default. |
---|
| 2627 | |
---|
[53bb72e] | 2628 | DESCRIPTION: |
---|
| 2629 | In case this configuration option is defined, then the support to rename |
---|
| 2630 | nodes is disabled in the root IMFS. |
---|
[fd6dc8c8] | 2631 | |
---|
| 2632 | .. COMMENT: === CONFIGURE_IMFS_DISABLE_READDIR === |
---|
| 2633 | |
---|
[9aafb39] | 2634 | .. _Disable Directory Read Support of Root IMFS: |
---|
[6c56401] | 2635 | .. index:: CONFIGURE_IMFS_DISABLE_READDIR |
---|
[9aafb39] | 2636 | |
---|
[fd6dc8c8] | 2637 | Disable Directory Read Support of Root IMFS |
---|
| 2638 | ------------------------------------------- |
---|
| 2639 | |
---|
[53bb72e] | 2640 | CONSTANT: |
---|
[fd6dc8c8] | 2641 | ``CONFIGURE_IMFS_DISABLE_READDIR`` |
---|
| 2642 | |
---|
[53bb72e] | 2643 | DATA TYPE: |
---|
[fd6dc8c8] | 2644 | Boolean feature macro. |
---|
| 2645 | |
---|
[53bb72e] | 2646 | RANGE: |
---|
[fd6dc8c8] | 2647 | Defined or undefined. |
---|
| 2648 | |
---|
[53bb72e] | 2649 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2650 | This is not defined by default. |
---|
| 2651 | |
---|
[53bb72e] | 2652 | DESCRIPTION: |
---|
| 2653 | In case this configuration option is defined, then the support to read a |
---|
| 2654 | directory is disabled in the root IMFS. It is still possible to open nodes |
---|
| 2655 | in a directory. |
---|
[fd6dc8c8] | 2656 | |
---|
| 2657 | .. COMMENT: === CONFIGURE_IMFS_DISABLE_MOUNT === |
---|
| 2658 | |
---|
[9aafb39] | 2659 | .. _Disable Mount Support of Root IMFS: |
---|
[6c56401] | 2660 | .. index:: CONFIGURE_IMFS_DISABLE_MOUNT |
---|
[9aafb39] | 2661 | |
---|
[fd6dc8c8] | 2662 | Disable Mount Support of Root IMFS |
---|
| 2663 | ---------------------------------- |
---|
| 2664 | |
---|
[53bb72e] | 2665 | CONSTANT: |
---|
[fd6dc8c8] | 2666 | ``CONFIGURE_IMFS_DISABLE_MOUNT`` |
---|
| 2667 | |
---|
[53bb72e] | 2668 | DATA TYPE: |
---|
[fd6dc8c8] | 2669 | Boolean feature macro. |
---|
| 2670 | |
---|
[53bb72e] | 2671 | RANGE: |
---|
[fd6dc8c8] | 2672 | Defined or undefined. |
---|
| 2673 | |
---|
[53bb72e] | 2674 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2675 | This is not defined by default. |
---|
| 2676 | |
---|
[53bb72e] | 2677 | DESCRIPTION: |
---|
| 2678 | In case this configuration option is defined, then the support to mount |
---|
| 2679 | other file systems is disabled in the root IMFS. |
---|
[fd6dc8c8] | 2680 | |
---|
| 2681 | .. COMMENT: === CONFIGURE_IMFS_DISABLE_UNMOUNT === |
---|
| 2682 | |
---|
[9aafb39] | 2683 | .. _Disable Unmount Support of Root IMFS: |
---|
[6c56401] | 2684 | .. index:: CONFIGURE_IMFS_DISABLE_UNMOUNT |
---|
[9aafb39] | 2685 | |
---|
[fd6dc8c8] | 2686 | Disable Unmount Support of Root IMFS |
---|
| 2687 | ------------------------------------ |
---|
| 2688 | |
---|
[53bb72e] | 2689 | CONSTANT: |
---|
[fd6dc8c8] | 2690 | ``CONFIGURE_IMFS_DISABLE_UNMOUNT`` |
---|
| 2691 | |
---|
[53bb72e] | 2692 | DATA TYPE: |
---|
[fd6dc8c8] | 2693 | Boolean feature macro. |
---|
| 2694 | |
---|
[53bb72e] | 2695 | RANGE: |
---|
[fd6dc8c8] | 2696 | Defined or undefined. |
---|
| 2697 | |
---|
[53bb72e] | 2698 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2699 | This is not defined by default. |
---|
| 2700 | |
---|
[53bb72e] | 2701 | DESCRIPTION: |
---|
| 2702 | In case this configuration option is defined, then the support to unmount |
---|
| 2703 | file systems is disabled in the root IMFS. |
---|
[fd6dc8c8] | 2704 | |
---|
| 2705 | .. COMMENT: === CONFIGURE_IMFS_DISABLE_MKNOD === |
---|
| 2706 | |
---|
[9aafb39] | 2707 | .. _Disable Make Nodes Support of Root IMFS: |
---|
[6c56401] | 2708 | .. index:: CONFIGURE_IMFS_DISABLE_MKNOD |
---|
[9aafb39] | 2709 | |
---|
[fd6dc8c8] | 2710 | Disable Make Nodes Support of Root IMFS |
---|
| 2711 | --------------------------------------- |
---|
| 2712 | |
---|
[53bb72e] | 2713 | CONSTANT: |
---|
[fd6dc8c8] | 2714 | ``CONFIGURE_IMFS_DISABLE_MKNOD`` |
---|
| 2715 | |
---|
[53bb72e] | 2716 | DATA TYPE: |
---|
[fd6dc8c8] | 2717 | Boolean feature macro. |
---|
| 2718 | |
---|
[53bb72e] | 2719 | RANGE: |
---|
[fd6dc8c8] | 2720 | Defined or undefined. |
---|
| 2721 | |
---|
[53bb72e] | 2722 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2723 | This is not defined by default. |
---|
| 2724 | |
---|
[53bb72e] | 2725 | DESCRIPTION: |
---|
| 2726 | In case this configuration option is defined, then the support to make |
---|
| 2727 | directories, devices, regular files and FIFOs is disabled in the root IMFS. |
---|
[fd6dc8c8] | 2728 | |
---|
| 2729 | .. COMMENT: === CONFIGURE_IMFS_DISABLE_MKNOD_FILE === |
---|
| 2730 | |
---|
[9aafb39] | 2731 | .. _Disable Make Files Support of Root IMFS: |
---|
[6c56401] | 2732 | .. index:: CONFIGURE_IMFS_DISABLE_MKNOD_FILE |
---|
[9aafb39] | 2733 | |
---|
[fd6dc8c8] | 2734 | Disable Make Files Support of Root IMFS |
---|
| 2735 | --------------------------------------- |
---|
| 2736 | |
---|
[53bb72e] | 2737 | CONSTANT: |
---|
[fd6dc8c8] | 2738 | ``CONFIGURE_IMFS_DISABLE_MKNOD_FILE`` |
---|
| 2739 | |
---|
[53bb72e] | 2740 | DATA TYPE: |
---|
[fd6dc8c8] | 2741 | Boolean feature macro. |
---|
| 2742 | |
---|
[53bb72e] | 2743 | RANGE: |
---|
[fd6dc8c8] | 2744 | Defined or undefined. |
---|
| 2745 | |
---|
[53bb72e] | 2746 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2747 | This is not defined by default. |
---|
| 2748 | |
---|
[53bb72e] | 2749 | DESCRIPTION: |
---|
| 2750 | In case this configuration option is defined, then the support to make |
---|
| 2751 | regular files is disabled in the root IMFS. |
---|
[fd6dc8c8] | 2752 | |
---|
| 2753 | .. COMMENT: === CONFIGURE_IMFS_DISABLE_RMNOD === |
---|
| 2754 | |
---|
[9aafb39] | 2755 | .. _Disable Remove Nodes Support of Root IMFS: |
---|
[6c56401] | 2756 | .. index:: CONFIGURE_IMFS_DISABLE_RMNOD |
---|
[9aafb39] | 2757 | |
---|
[fd6dc8c8] | 2758 | Disable Remove Nodes Support of Root IMFS |
---|
| 2759 | ----------------------------------------- |
---|
| 2760 | |
---|
[53bb72e] | 2761 | CONSTANT: |
---|
[fd6dc8c8] | 2762 | ``CONFIGURE_IMFS_DISABLE_RMNOD`` |
---|
| 2763 | |
---|
[53bb72e] | 2764 | DATA TYPE: |
---|
[fd6dc8c8] | 2765 | Boolean feature macro. |
---|
| 2766 | |
---|
[53bb72e] | 2767 | RANGE: |
---|
[fd6dc8c8] | 2768 | Defined or undefined. |
---|
| 2769 | |
---|
[53bb72e] | 2770 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2771 | This is not defined by default. |
---|
| 2772 | |
---|
[53bb72e] | 2773 | DESCRIPTION: |
---|
| 2774 | In case this configuration option is defined, then the support to remove |
---|
| 2775 | nodes is disabled in the root IMFS. |
---|
[fd6dc8c8] | 2776 | |
---|
| 2777 | .. COMMENT: === Block Device Cache Configuration === |
---|
| 2778 | |
---|
| 2779 | Block Device Cache Configuration |
---|
| 2780 | ================================ |
---|
| 2781 | |
---|
| 2782 | This section defines Block Device Cache (bdbuf) related configuration |
---|
| 2783 | parameters. |
---|
| 2784 | |
---|
| 2785 | .. COMMENT: === CONFIGURE_APPLICATION_NEEDS_LIBBLOCK === |
---|
| 2786 | |
---|
[9aafb39] | 2787 | .. _Enable Block Device Cache: |
---|
[6c56401] | 2788 | .. index:: CONFIGURE_APPLICATION_NEEDS_LIBBLOCK |
---|
[9aafb39] | 2789 | |
---|
[fd6dc8c8] | 2790 | Enable Block Device Cache |
---|
| 2791 | ------------------------- |
---|
| 2792 | |
---|
[53bb72e] | 2793 | CONSTANT: |
---|
[fd6dc8c8] | 2794 | ``CONFIGURE_APPLICATION_NEEDS_LIBBLOCK`` |
---|
| 2795 | |
---|
[53bb72e] | 2796 | DATA TYPE: |
---|
[fd6dc8c8] | 2797 | Boolean feature macro. |
---|
| 2798 | |
---|
[53bb72e] | 2799 | RANGE: |
---|
[fd6dc8c8] | 2800 | Defined or undefined. |
---|
| 2801 | |
---|
[53bb72e] | 2802 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2803 | This is not defined by default. |
---|
| 2804 | |
---|
[53bb72e] | 2805 | DESCRIPTION: |
---|
| 2806 | Provides a Block Device Cache configuration. |
---|
[fd6dc8c8] | 2807 | |
---|
[53bb72e] | 2808 | NOTES: |
---|
| 2809 | Each option of the Block Device Cache configuration can be explicitly set |
---|
| 2810 | by the user with the configuration options below. The Block Device Cache |
---|
| 2811 | is used for example by the RFS and DOSFS file systems. |
---|
[fd6dc8c8] | 2812 | |
---|
| 2813 | .. COMMENT: === CONFIGURE_BDBUF_CACHE_MEMORY_SIZE === |
---|
| 2814 | |
---|
[9aafb39] | 2815 | .. _Size of the Cache Memory: |
---|
[6c56401] | 2816 | .. index:: CONFIGURE_BDBUF_CACHE_MEMORY_SIZE |
---|
[9aafb39] | 2817 | |
---|
[fd6dc8c8] | 2818 | Size of the Cache Memory |
---|
| 2819 | ------------------------ |
---|
| 2820 | |
---|
[53bb72e] | 2821 | CONSTANT: |
---|
[fd6dc8c8] | 2822 | ``CONFIGURE_BDBUF_CACHE_MEMORY_SIZE`` |
---|
| 2823 | |
---|
[53bb72e] | 2824 | DATA TYPE: |
---|
[fd6dc8c8] | 2825 | Unsigned integer (``size_t``). |
---|
| 2826 | |
---|
[53bb72e] | 2827 | RANGE: |
---|
[fd6dc8c8] | 2828 | Positive. |
---|
| 2829 | |
---|
[53bb72e] | 2830 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2831 | The default value is 32768 bytes. |
---|
| 2832 | |
---|
[53bb72e] | 2833 | DESCRIPTION: |
---|
| 2834 | Size of the cache memory in bytes. |
---|
[fd6dc8c8] | 2835 | |
---|
[53bb72e] | 2836 | NOTES: |
---|
| 2837 | None. |
---|
[fd6dc8c8] | 2838 | |
---|
| 2839 | .. COMMENT: === CONFIGURE_BDBUF_BUFFER_MIN_SIZE === |
---|
| 2840 | |
---|
[9aafb39] | 2841 | .. _Minimum Size of a Buffer: |
---|
[6c56401] | 2842 | .. index:: CONFIGURE_BDBUF_BUFFER_MIN_SIZE |
---|
[9aafb39] | 2843 | |
---|
[fd6dc8c8] | 2844 | Minimum Size of a Buffer |
---|
| 2845 | ------------------------ |
---|
| 2846 | |
---|
[53bb72e] | 2847 | CONSTANT: |
---|
[fd6dc8c8] | 2848 | ``CONFIGURE_BDBUF_BUFFER_MIN_SIZE`` |
---|
| 2849 | |
---|
[53bb72e] | 2850 | DATA TYPE: |
---|
[fd6dc8c8] | 2851 | Unsigned integer (``uint32_t``). |
---|
| 2852 | |
---|
[53bb72e] | 2853 | RANGE: |
---|
[fd6dc8c8] | 2854 | Positive. |
---|
| 2855 | |
---|
[53bb72e] | 2856 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2857 | The default value is 512 bytes. |
---|
| 2858 | |
---|
[53bb72e] | 2859 | DESCRIPTION: |
---|
| 2860 | Defines the minimum size of a buffer in bytes. |
---|
[fd6dc8c8] | 2861 | |
---|
[53bb72e] | 2862 | NOTES: |
---|
| 2863 | None. |
---|
[fd6dc8c8] | 2864 | |
---|
| 2865 | .. COMMENT: === CONFIGURE_BDBUF_BUFFER_MAX_SIZE === |
---|
| 2866 | |
---|
[9aafb39] | 2867 | .. _Maximum Size of a Buffer: |
---|
[6c56401] | 2868 | .. index:: CONFIGURE_BDBUF_BUFFER_MAX_SIZE |
---|
[9aafb39] | 2869 | |
---|
[fd6dc8c8] | 2870 | Maximum Size of a Buffer |
---|
| 2871 | ------------------------ |
---|
| 2872 | |
---|
[53bb72e] | 2873 | CONSTANT: |
---|
[fd6dc8c8] | 2874 | ``CONFIGURE_BDBUF_BUFFER_MAX_SIZE`` |
---|
| 2875 | |
---|
[53bb72e] | 2876 | DATA TYPE: |
---|
[fd6dc8c8] | 2877 | Unsigned integer (``uint32_t``). |
---|
| 2878 | |
---|
[53bb72e] | 2879 | RANGE: |
---|
[fd6dc8c8] | 2880 | It must be positive and an integral multiple of the buffer minimum size. |
---|
| 2881 | |
---|
[53bb72e] | 2882 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2883 | The default value is 4096 bytes. |
---|
| 2884 | |
---|
[53bb72e] | 2885 | DESCRIPTION: |
---|
| 2886 | Defines the maximum size of a buffer in bytes. |
---|
[fd6dc8c8] | 2887 | |
---|
[53bb72e] | 2888 | NOTES: |
---|
| 2889 | None. |
---|
[fd6dc8c8] | 2890 | |
---|
| 2891 | .. COMMENT: === CONFIGURE_SWAPOUT_SWAP_PERIOD === |
---|
| 2892 | |
---|
[9aafb39] | 2893 | .. _Swapout Task Swap Period: |
---|
[6c56401] | 2894 | .. index:: CONFIGURE_SWAPOUT_SWAP_PERIOD |
---|
[9aafb39] | 2895 | |
---|
[fd6dc8c8] | 2896 | Swapout Task Swap Period |
---|
| 2897 | ------------------------ |
---|
| 2898 | |
---|
[53bb72e] | 2899 | CONSTANT: |
---|
[fd6dc8c8] | 2900 | ``CONFIGURE_SWAPOUT_SWAP_PERIOD`` |
---|
| 2901 | |
---|
[53bb72e] | 2902 | DATA TYPE: |
---|
[fd6dc8c8] | 2903 | Unsigned integer (``uint32_t``). |
---|
| 2904 | |
---|
[53bb72e] | 2905 | RANGE: |
---|
[fd6dc8c8] | 2906 | Positive. |
---|
| 2907 | |
---|
[53bb72e] | 2908 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2909 | The default value is 250 milliseconds. |
---|
| 2910 | |
---|
[53bb72e] | 2911 | DESCRIPTION: |
---|
| 2912 | Defines the swapout task swap period in milliseconds. |
---|
[fd6dc8c8] | 2913 | |
---|
[53bb72e] | 2914 | NOTES: |
---|
| 2915 | None. |
---|
[fd6dc8c8] | 2916 | |
---|
| 2917 | .. COMMENT: === CONFIGURE_SWAPOUT_BLOCK_HOLD === |
---|
| 2918 | |
---|
[9aafb39] | 2919 | .. _Swapout Task Maximum Block Hold Time: |
---|
[6c56401] | 2920 | .. index:: CONFIGURE_SWAPOUT_BLOCK_HOLD |
---|
[9aafb39] | 2921 | |
---|
[fd6dc8c8] | 2922 | Swapout Task Maximum Block Hold Time |
---|
| 2923 | ------------------------------------ |
---|
| 2924 | |
---|
[53bb72e] | 2925 | CONSTANT: |
---|
[fd6dc8c8] | 2926 | ``CONFIGURE_SWAPOUT_BLOCK_HOLD`` |
---|
| 2927 | |
---|
[53bb72e] | 2928 | DATA TYPE: |
---|
[fd6dc8c8] | 2929 | Unsigned integer (``uint32_t``). |
---|
| 2930 | |
---|
[53bb72e] | 2931 | RANGE: |
---|
[fd6dc8c8] | 2932 | Positive. |
---|
| 2933 | |
---|
[53bb72e] | 2934 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2935 | The default value is 1000 milliseconds. |
---|
| 2936 | |
---|
[53bb72e] | 2937 | DESCRIPTION: |
---|
| 2938 | Defines the swapout task maximum block hold time in milliseconds. |
---|
[fd6dc8c8] | 2939 | |
---|
[53bb72e] | 2940 | NOTES: |
---|
| 2941 | None. |
---|
[fd6dc8c8] | 2942 | |
---|
| 2943 | .. COMMENT: === CONFIGURE_SWAPOUT_TASK_PRIORITY === |
---|
| 2944 | |
---|
[9aafb39] | 2945 | .. _Swapout Task Priority: |
---|
[6c56401] | 2946 | .. index:: CONFIGURE_SWAPOUT_TASK_PRIORITY |
---|
[9aafb39] | 2947 | |
---|
[fd6dc8c8] | 2948 | Swapout Task Priority |
---|
| 2949 | --------------------- |
---|
| 2950 | |
---|
[53bb72e] | 2951 | CONSTANT: |
---|
[fd6dc8c8] | 2952 | ``CONFIGURE_SWAPOUT_TASK_PRIORITY`` |
---|
| 2953 | |
---|
[53bb72e] | 2954 | DATA TYPE: |
---|
[fd6dc8c8] | 2955 | Task priority (``rtems_task_priority``). |
---|
| 2956 | |
---|
[53bb72e] | 2957 | RANGE: |
---|
[fd6dc8c8] | 2958 | Valid task priority. |
---|
| 2959 | |
---|
[53bb72e] | 2960 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2961 | The default value is 15. |
---|
| 2962 | |
---|
[53bb72e] | 2963 | DESCRIPTION: |
---|
| 2964 | Defines the swapout task priority. |
---|
[fd6dc8c8] | 2965 | |
---|
[53bb72e] | 2966 | NOTES: |
---|
| 2967 | None. |
---|
[fd6dc8c8] | 2968 | |
---|
| 2969 | .. COMMENT: === CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS === |
---|
| 2970 | |
---|
[9aafb39] | 2971 | .. _Maximum Blocks per Read-Ahead Request: |
---|
[6c56401] | 2972 | .. index:: CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS |
---|
[9aafb39] | 2973 | |
---|
[fd6dc8c8] | 2974 | Maximum Blocks per Read-Ahead Request |
---|
| 2975 | ------------------------------------- |
---|
| 2976 | |
---|
[53bb72e] | 2977 | CONSTANT: |
---|
[fd6dc8c8] | 2978 | ``CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS`` |
---|
| 2979 | |
---|
[53bb72e] | 2980 | DATA TYPE: |
---|
[fd6dc8c8] | 2981 | Unsigned integer (``uint32_t``). |
---|
| 2982 | |
---|
[53bb72e] | 2983 | RANGE: |
---|
[fd6dc8c8] | 2984 | Positive. |
---|
| 2985 | |
---|
[53bb72e] | 2986 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 2987 | The default value is 0. |
---|
| 2988 | |
---|
[53bb72e] | 2989 | DESCRIPTION: |
---|
| 2990 | Defines the maximum blocks per read-ahead request. |
---|
[fd6dc8c8] | 2991 | |
---|
[53bb72e] | 2992 | NOTES: |
---|
| 2993 | A value of 0 disables the read-ahead task (default). The read-ahead task |
---|
| 2994 | will issue speculative read transfers if a sequential access pattern is |
---|
| 2995 | detected. This can improve the performance on some systems. |
---|
[fd6dc8c8] | 2996 | |
---|
| 2997 | .. COMMENT: === CONFIGURE_BDBUF_MAX_WRITE_BLOCKS === |
---|
| 2998 | |
---|
[9aafb39] | 2999 | .. _Maximum Blocks per Write Request: |
---|
[6c56401] | 3000 | .. index:: CONFIGURE_BDBUF_MAX_WRITE_BLOCKS |
---|
[9aafb39] | 3001 | |
---|
[fd6dc8c8] | 3002 | Maximum Blocks per Write Request |
---|
| 3003 | -------------------------------- |
---|
| 3004 | |
---|
[53bb72e] | 3005 | CONSTANT: |
---|
[fd6dc8c8] | 3006 | ``CONFIGURE_BDBUF_MAX_WRITE_BLOCKS`` |
---|
| 3007 | |
---|
[53bb72e] | 3008 | DATA TYPE: |
---|
[fd6dc8c8] | 3009 | Unsigned integer (``uint32_t``). |
---|
| 3010 | |
---|
[53bb72e] | 3011 | RANGE: |
---|
[fd6dc8c8] | 3012 | Positive. |
---|
| 3013 | |
---|
[53bb72e] | 3014 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3015 | The default value is 16. |
---|
| 3016 | |
---|
[53bb72e] | 3017 | DESCRIPTION: |
---|
| 3018 | Defines the maximum blocks per write request. |
---|
[fd6dc8c8] | 3019 | |
---|
[53bb72e] | 3020 | NOTES: |
---|
| 3021 | None. |
---|
[fd6dc8c8] | 3022 | |
---|
| 3023 | .. COMMENT: === CONFIGURE_BDBUF_TASK_STACK_SIZE === |
---|
| 3024 | |
---|
[9aafb39] | 3025 | .. _Task Stack Size of the Block Device Cache Tasks: |
---|
[6c56401] | 3026 | .. index:: CONFIGURE_BDBUF_TASK_STACK_SIZE |
---|
[9aafb39] | 3027 | |
---|
[fd6dc8c8] | 3028 | Task Stack Size of the Block Device Cache Tasks |
---|
| 3029 | ----------------------------------------------- |
---|
| 3030 | |
---|
[53bb72e] | 3031 | CONSTANT: |
---|
[fd6dc8c8] | 3032 | ``CONFIGURE_BDBUF_TASK_STACK_SIZE`` |
---|
| 3033 | |
---|
[53bb72e] | 3034 | DATA TYPE: |
---|
[fd6dc8c8] | 3035 | Unsigned integer (``size_t``). |
---|
| 3036 | |
---|
[53bb72e] | 3037 | RANGE: |
---|
[fd6dc8c8] | 3038 | Zero or positive. |
---|
| 3039 | |
---|
[53bb72e] | 3040 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3041 | The default value is RTEMS_MINIMUM_STACK_SIZE. |
---|
| 3042 | |
---|
[53bb72e] | 3043 | DESCRIPTION: |
---|
| 3044 | Defines the task stack size of the Block Device Cache tasks in bytes. |
---|
[fd6dc8c8] | 3045 | |
---|
[53bb72e] | 3046 | NOTES: |
---|
| 3047 | None. |
---|
[fd6dc8c8] | 3048 | |
---|
| 3049 | .. COMMENT: === CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY === |
---|
| 3050 | |
---|
[9aafb39] | 3051 | .. _Read-Ahead Task Priority: |
---|
[6c56401] | 3052 | .. index:: CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY |
---|
[9aafb39] | 3053 | |
---|
[fd6dc8c8] | 3054 | Read-Ahead Task Priority |
---|
| 3055 | ------------------------ |
---|
| 3056 | |
---|
[53bb72e] | 3057 | CONSTANT: |
---|
[fd6dc8c8] | 3058 | ``CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY`` |
---|
| 3059 | |
---|
[53bb72e] | 3060 | DATA TYPE: |
---|
[fd6dc8c8] | 3061 | Task priority (``rtems_task_priority``). |
---|
| 3062 | |
---|
[53bb72e] | 3063 | RANGE: |
---|
[fd6dc8c8] | 3064 | Valid task priority. |
---|
| 3065 | |
---|
[53bb72e] | 3066 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3067 | The default value is 15. |
---|
| 3068 | |
---|
[53bb72e] | 3069 | DESCRIPTION: |
---|
| 3070 | Defines the read-ahead task priority. |
---|
[fd6dc8c8] | 3071 | |
---|
[53bb72e] | 3072 | NOTES: |
---|
| 3073 | None. |
---|
[fd6dc8c8] | 3074 | |
---|
| 3075 | .. COMMENT: === CONFIGURE_SWAPOUT_WORKER_TASKS === |
---|
| 3076 | |
---|
[9aafb39] | 3077 | .. _Swapout Worker Task Count: |
---|
[6c56401] | 3078 | .. index:: CONFIGURE_SWAPOUT_WORKER_TASKS |
---|
[9aafb39] | 3079 | |
---|
[fd6dc8c8] | 3080 | Swapout Worker Task Count |
---|
| 3081 | ------------------------- |
---|
| 3082 | |
---|
[53bb72e] | 3083 | CONSTANT: |
---|
[fd6dc8c8] | 3084 | ``CONFIGURE_SWAPOUT_WORKER_TASKS`` |
---|
| 3085 | |
---|
[53bb72e] | 3086 | DATA TYPE: |
---|
[fd6dc8c8] | 3087 | Unsigned integer (``size_t``). |
---|
| 3088 | |
---|
[53bb72e] | 3089 | RANGE: |
---|
[fd6dc8c8] | 3090 | Zero or positive. |
---|
| 3091 | |
---|
[53bb72e] | 3092 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3093 | The default value is 0. |
---|
| 3094 | |
---|
[53bb72e] | 3095 | DESCRIPTION: |
---|
| 3096 | Defines the swapout worker task count. |
---|
[fd6dc8c8] | 3097 | |
---|
[53bb72e] | 3098 | NOTES: |
---|
| 3099 | None. |
---|
[fd6dc8c8] | 3100 | |
---|
| 3101 | .. COMMENT: === CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY === |
---|
| 3102 | |
---|
[9aafb39] | 3103 | .. _Swapout Worker Task Priority: |
---|
[6c56401] | 3104 | .. index:: CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY |
---|
[9aafb39] | 3105 | |
---|
[fd6dc8c8] | 3106 | Swapout Worker Task Priority |
---|
| 3107 | ---------------------------- |
---|
| 3108 | |
---|
[53bb72e] | 3109 | CONSTANT: |
---|
[fd6dc8c8] | 3110 | ``CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY`` |
---|
| 3111 | |
---|
[53bb72e] | 3112 | DATA TYPE: |
---|
[fd6dc8c8] | 3113 | Task priority (``rtems_task_priority``). |
---|
| 3114 | |
---|
[53bb72e] | 3115 | RANGE: |
---|
[fd6dc8c8] | 3116 | Valid task priority. |
---|
| 3117 | |
---|
[53bb72e] | 3118 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3119 | The default value is 15. |
---|
| 3120 | |
---|
[53bb72e] | 3121 | DESCRIPTION: |
---|
| 3122 | Defines the swapout worker task priority. |
---|
[fd6dc8c8] | 3123 | |
---|
[53bb72e] | 3124 | NOTES: |
---|
| 3125 | None. |
---|
[fd6dc8c8] | 3126 | |
---|
| 3127 | .. COMMENT: === BSP Specific Settings === |
---|
| 3128 | |
---|
| 3129 | BSP Specific Settings |
---|
| 3130 | ===================== |
---|
| 3131 | |
---|
[c9aaf31] | 3132 | This section describes BSP specific configuration settings used by |
---|
| 3133 | ``<rtems/confdefs.h>``. The BSP specific configuration settings are defined in |
---|
| 3134 | ``<bsp.h>``. |
---|
[fd6dc8c8] | 3135 | |
---|
| 3136 | .. COMMENT: === Disable BSP Settings === |
---|
| 3137 | |
---|
[9aafb39] | 3138 | .. _Disable BSP Configuration Settings: |
---|
[6c56401] | 3139 | .. index:: CONFIGURE_DISABLE_BSP_SETTINGS |
---|
[9aafb39] | 3140 | |
---|
[fd6dc8c8] | 3141 | Disable BSP Configuration Settings |
---|
| 3142 | ---------------------------------- |
---|
| 3143 | |
---|
[53bb72e] | 3144 | CONSTANT: |
---|
[fd6dc8c8] | 3145 | ``CONFIGURE_DISABLE_BSP_SETTINGS`` |
---|
| 3146 | |
---|
[53bb72e] | 3147 | DATA TYPE: |
---|
[fd6dc8c8] | 3148 | Boolean feature macro. |
---|
| 3149 | |
---|
[53bb72e] | 3150 | RANGE: |
---|
[fd6dc8c8] | 3151 | Defined or undefined. |
---|
| 3152 | |
---|
[53bb72e] | 3153 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3154 | This is not defined by default. |
---|
| 3155 | |
---|
[53bb72e] | 3156 | DESCRIPTION: |
---|
| 3157 | All BSP specific configuration settings can be disabled by the application |
---|
| 3158 | with the ``CONFIGURE_DISABLE_BSP_SETTINGS`` option. |
---|
[fd6dc8c8] | 3159 | |
---|
[53bb72e] | 3160 | NOTES: |
---|
| 3161 | None. |
---|
[fd6dc8c8] | 3162 | |
---|
| 3163 | .. COMMENT: === CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK === |
---|
| 3164 | |
---|
[9aafb39] | 3165 | .. _Specify BSP Supports sbrk(): |
---|
[6c56401] | 3166 | .. index:: CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK |
---|
[9aafb39] | 3167 | |
---|
[fd6dc8c8] | 3168 | Specify BSP Supports sbrk() |
---|
| 3169 | --------------------------- |
---|
| 3170 | |
---|
[53bb72e] | 3171 | CONSTANT: |
---|
[fd6dc8c8] | 3172 | ``CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK`` |
---|
| 3173 | |
---|
[53bb72e] | 3174 | DATA TYPE: |
---|
[fd6dc8c8] | 3175 | Boolean feature macro. |
---|
| 3176 | |
---|
[53bb72e] | 3177 | RANGE: |
---|
[fd6dc8c8] | 3178 | Defined or undefined. |
---|
| 3179 | |
---|
[53bb72e] | 3180 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3181 | This option is BSP specific. |
---|
| 3182 | |
---|
[53bb72e] | 3183 | DESCRIPTION: |
---|
| 3184 | This configuration parameter is defined by a BSP to indicate that it does |
---|
| 3185 | not allocate all available memory to the C Program Heap used by the Malloc |
---|
| 3186 | Family of routines. |
---|
[fd6dc8c8] | 3187 | |
---|
[53bb72e] | 3188 | If defined, when ``malloc()`` is unable to allocate memory, it will call |
---|
| 3189 | the BSP supplied ``sbrk()`` to obtain more memory. |
---|
[fd6dc8c8] | 3190 | |
---|
[53bb72e] | 3191 | NOTES: |
---|
| 3192 | This parameter should not be defined by the application. Only the BSP knows |
---|
| 3193 | how it allocates memory to the C Program Heap. |
---|
[fd6dc8c8] | 3194 | |
---|
| 3195 | .. COMMENT: === BSP_IDLE_TASK_BODY === |
---|
| 3196 | |
---|
[9aafb39] | 3197 | .. _Specify BSP Specific Idle Task: |
---|
[6c56401] | 3198 | .. index:: BSP_IDLE_TASK_BODY |
---|
[9aafb39] | 3199 | |
---|
[fd6dc8c8] | 3200 | Specify BSP Specific Idle Task |
---|
| 3201 | ------------------------------ |
---|
| 3202 | |
---|
[53bb72e] | 3203 | CONSTANT: |
---|
[fd6dc8c8] | 3204 | ``BSP_IDLE_TASK_BODY`` |
---|
| 3205 | |
---|
[53bb72e] | 3206 | DATA TYPE: |
---|
[fd6dc8c8] | 3207 | Function pointer. |
---|
| 3208 | |
---|
[53bb72e] | 3209 | RANGE: |
---|
[fd6dc8c8] | 3210 | Undefined or valid function pointer. |
---|
| 3211 | |
---|
[53bb72e] | 3212 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3213 | This option is BSP specific. |
---|
| 3214 | |
---|
[53bb72e] | 3215 | DESCRIPTION: |
---|
| 3216 | If ``BSP_IDLE_TASK_BODY`` is defined by the BSP and |
---|
| 3217 | ``CONFIGURE_IDLE_TASK_BODY`` is not defined by the application, then this |
---|
| 3218 | BSP specific idle task body will be used. |
---|
[fd6dc8c8] | 3219 | |
---|
[53bb72e] | 3220 | NOTES: |
---|
| 3221 | As it has knowledge of the specific CPU model, system controller logic, and |
---|
| 3222 | peripheral buses, a BSP specific IDLE task may be capable of turning |
---|
| 3223 | components off to save power during extended periods of no task activity |
---|
[fd6dc8c8] | 3224 | |
---|
| 3225 | .. COMMENT: === BSP_IDLE_TASK_STACK_SIZE === |
---|
| 3226 | |
---|
[9aafb39] | 3227 | .. _Specify BSP Suggested Value for IDLE Task Stack Size: |
---|
[6c56401] | 3228 | .. index:: BSP_IDLE_TASK_STACK_SIZE |
---|
[9aafb39] | 3229 | |
---|
[fd6dc8c8] | 3230 | Specify BSP Suggested Value for IDLE Task Stack Size |
---|
| 3231 | ---------------------------------------------------- |
---|
| 3232 | |
---|
[53bb72e] | 3233 | CONSTANT: |
---|
[fd6dc8c8] | 3234 | ``BSP_IDLE_TASK_STACK_SIZE`` |
---|
| 3235 | |
---|
[53bb72e] | 3236 | DATA TYPE: |
---|
[fd6dc8c8] | 3237 | Unsigned integer (``size_t``). |
---|
| 3238 | |
---|
[53bb72e] | 3239 | RANGE: |
---|
[fd6dc8c8] | 3240 | Undefined or positive. |
---|
| 3241 | |
---|
[53bb72e] | 3242 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3243 | This option is BSP specific. |
---|
| 3244 | |
---|
[53bb72e] | 3245 | DESCRIPTION: |
---|
| 3246 | If ``BSP_IDLE_TASK_STACK_SIZE`` is defined by the BSP and |
---|
| 3247 | ``CONFIGURE_IDLE_TASK_STACK_SIZE`` is not defined by the application, then |
---|
| 3248 | this BSP suggested idle task stack size will be used. |
---|
[fd6dc8c8] | 3249 | |
---|
[53bb72e] | 3250 | NOTES: |
---|
| 3251 | The order of precedence for configuring the IDLE task stack size is: |
---|
[fd6dc8c8] | 3252 | |
---|
[53bb72e] | 3253 | - RTEMS default minimum stack size. |
---|
[fd6dc8c8] | 3254 | |
---|
[53bb72e] | 3255 | - If defined, then ``CONFIGURE_MINIMUM_TASK_STACK_SIZE``. |
---|
[fd6dc8c8] | 3256 | |
---|
[53bb72e] | 3257 | - If defined, then the BSP specific ``BSP_IDLE_TASK_SIZE``. |
---|
[fd6dc8c8] | 3258 | |
---|
[53bb72e] | 3259 | - If defined, then the application specified ``CONFIGURE_IDLE_TASK_SIZE``. |
---|
[fd6dc8c8] | 3260 | |
---|
| 3261 | .. COMMENT: XXX - add cross references to other related values. |
---|
| 3262 | |
---|
| 3263 | .. COMMENT: === BSP_INITIAL_EXTENSION === |
---|
| 3264 | |
---|
[9aafb39] | 3265 | .. _Specify BSP Specific User Extensions: |
---|
[6c56401] | 3266 | .. index:: BSP_INITIAL_EXTENSION |
---|
[9aafb39] | 3267 | |
---|
[fd6dc8c8] | 3268 | Specify BSP Specific User Extensions |
---|
| 3269 | ------------------------------------ |
---|
| 3270 | |
---|
[53bb72e] | 3271 | CONSTANT: |
---|
[fd6dc8c8] | 3272 | ``BSP_INITIAL_EXTENSION`` |
---|
| 3273 | |
---|
[53bb72e] | 3274 | DATA TYPE: |
---|
[fd6dc8c8] | 3275 | List of user extension initializers (``rtems_extensions_table``). |
---|
| 3276 | |
---|
[53bb72e] | 3277 | RANGE: |
---|
[fd6dc8c8] | 3278 | Undefined or a list of user extension initializers. |
---|
| 3279 | |
---|
[53bb72e] | 3280 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3281 | This option is BSP specific. |
---|
| 3282 | |
---|
[53bb72e] | 3283 | DESCRIPTION: |
---|
| 3284 | If ``BSP_INITIAL_EXTENSION`` is defined by the BSP, then this BSP specific |
---|
| 3285 | initial extension will be placed as the last entry in the initial extension |
---|
| 3286 | table. |
---|
[fd6dc8c8] | 3287 | |
---|
[53bb72e] | 3288 | NOTES: |
---|
| 3289 | None. |
---|
[fd6dc8c8] | 3290 | |
---|
| 3291 | .. COMMENT: === BSP_INTERRUPT_STACK_SIZE === |
---|
| 3292 | |
---|
[9aafb39] | 3293 | .. _Specifying BSP Specific Interrupt Stack Size: |
---|
[6c56401] | 3294 | .. index:: BSP_INTERRUPT_STACK_SIZE |
---|
[9aafb39] | 3295 | |
---|
[fd6dc8c8] | 3296 | Specifying BSP Specific Interrupt Stack Size |
---|
| 3297 | -------------------------------------------- |
---|
| 3298 | |
---|
[53bb72e] | 3299 | CONSTANT: |
---|
[fd6dc8c8] | 3300 | ``BSP_INTERRUPT_STACK_SIZE`` |
---|
| 3301 | |
---|
[53bb72e] | 3302 | DATA TYPE: |
---|
[fd6dc8c8] | 3303 | Unsigned integer (``size_t``). |
---|
| 3304 | |
---|
[53bb72e] | 3305 | RANGE: |
---|
[fd6dc8c8] | 3306 | Undefined or positive. |
---|
| 3307 | |
---|
[53bb72e] | 3308 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3309 | This option is BSP specific. |
---|
| 3310 | |
---|
[53bb72e] | 3311 | DESCRIPTION: |
---|
| 3312 | If ``BSP_INTERRUPT_STACK_SIZE`` is defined by the BSP and |
---|
| 3313 | ``CONFIGURE_INTERRUPT_STACK_SIZE`` is not defined by the application, then |
---|
| 3314 | this BSP specific interrupt stack size will be used. |
---|
[fd6dc8c8] | 3315 | |
---|
[53bb72e] | 3316 | NOTES: |
---|
| 3317 | None. |
---|
[fd6dc8c8] | 3318 | |
---|
| 3319 | .. COMMENT: === BSP_MAXIMUM_DEVICES === |
---|
| 3320 | |
---|
[9aafb39] | 3321 | .. _Specifying BSP Specific Maximum Devices: |
---|
[6c56401] | 3322 | .. index:: BSP_MAXIMUM_DEVICES |
---|
[9aafb39] | 3323 | |
---|
[fd6dc8c8] | 3324 | Specifying BSP Specific Maximum Devices |
---|
| 3325 | --------------------------------------- |
---|
| 3326 | |
---|
[53bb72e] | 3327 | CONSTANT: |
---|
[fd6dc8c8] | 3328 | ``BSP_MAXIMUM_DEVICES`` |
---|
| 3329 | |
---|
[53bb72e] | 3330 | DATA TYPE: |
---|
[fd6dc8c8] | 3331 | Unsigned integer (``size_t``). |
---|
| 3332 | |
---|
[53bb72e] | 3333 | RANGE: |
---|
[fd6dc8c8] | 3334 | Undefined or positive. |
---|
| 3335 | |
---|
[53bb72e] | 3336 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3337 | This option is BSP specific. |
---|
| 3338 | |
---|
[53bb72e] | 3339 | DESCRIPTION: |
---|
| 3340 | If ``BSP_MAXIMUM_DEVICES`` is defined by the BSP and |
---|
| 3341 | ``CONFIGURE_MAXIMUM_DEVICES`` is not defined by the application, then this |
---|
| 3342 | BSP specific maximum device count will be used. |
---|
[fd6dc8c8] | 3343 | |
---|
[53bb72e] | 3344 | NOTES: |
---|
| 3345 | This option is specific to the device file system (devFS) and should not be |
---|
| 3346 | confused with the ``CONFIGURE_MAXIMUM_DRIVERS`` option. This parameter |
---|
| 3347 | only impacts the devFS and thus is only used by ``<rtems/confdefs.h>`` when |
---|
| 3348 | ``CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM`` is specified. |
---|
[fd6dc8c8] | 3349 | |
---|
| 3350 | .. COMMENT: === BSP_ZERO_WORKSPACE_AUTOMATICALLY === |
---|
| 3351 | |
---|
[9aafb39] | 3352 | .. _BSP Recommends RTEMS Workspace be Cleared: |
---|
[6c56401] | 3353 | .. index:: BSP_ZERO_WORKSPACE_AUTOMATICALLY |
---|
[9aafb39] | 3354 | |
---|
[fd6dc8c8] | 3355 | BSP Recommends RTEMS Workspace be Cleared |
---|
| 3356 | ----------------------------------------- |
---|
| 3357 | |
---|
[53bb72e] | 3358 | CONSTANT: |
---|
[fd6dc8c8] | 3359 | ``BSP_ZERO_WORKSPACE_AUTOMATICALLY`` |
---|
| 3360 | |
---|
[53bb72e] | 3361 | DATA TYPE: |
---|
[fd6dc8c8] | 3362 | Boolean feature macro. |
---|
| 3363 | |
---|
[53bb72e] | 3364 | RANGE: |
---|
[fd6dc8c8] | 3365 | Defined or undefined. |
---|
| 3366 | |
---|
[53bb72e] | 3367 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3368 | This option is BSP specific. |
---|
| 3369 | |
---|
[53bb72e] | 3370 | DESCRIPTION: |
---|
| 3371 | If ``BSP_ZERO_WORKSPACE_AUTOMATICALLY`` is defined by the BSP and |
---|
| 3372 | ``CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY`` is not defined by the |
---|
| 3373 | application, then the workspace will be zeroed automatically. |
---|
[fd6dc8c8] | 3374 | |
---|
[53bb72e] | 3375 | NOTES: |
---|
| 3376 | Zeroing memory can add significantly to system boot time. It is not |
---|
| 3377 | necessary for RTEMS but is often assumed by support libraries. |
---|
[fd6dc8c8] | 3378 | |
---|
| 3379 | .. COMMENT: === CONFIGURE_BSP_PREREQUISITE_DRIVERS === |
---|
| 3380 | |
---|
[9aafb39] | 3381 | .. _Specify BSP Prerequisite Drivers: |
---|
[6c56401] | 3382 | .. index:: CONFIGURE_BSP_PREREQUISITE_DRIVERS |
---|
[9aafb39] | 3383 | |
---|
[fd6dc8c8] | 3384 | Specify BSP Prerequisite Drivers |
---|
| 3385 | -------------------------------- |
---|
| 3386 | |
---|
[53bb72e] | 3387 | CONSTANT: |
---|
[fd6dc8c8] | 3388 | ``CONFIGURE_BSP_PREREQUISITE_DRIVERS`` |
---|
| 3389 | |
---|
[53bb72e] | 3390 | DATA TYPE: |
---|
[fd6dc8c8] | 3391 | List of device driver initializers (``rtems_driver_address_table``). |
---|
| 3392 | |
---|
[53bb72e] | 3393 | RANGE: |
---|
[fd6dc8c8] | 3394 | Undefined or array of device drivers. |
---|
| 3395 | |
---|
[53bb72e] | 3396 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3397 | This option is BSP specific. |
---|
| 3398 | |
---|
[53bb72e] | 3399 | DESCRIPTION: |
---|
| 3400 | ``CONFIGURE_BSP_PREREQUISITE_DRIVERS`` is defined if the BSP has device |
---|
| 3401 | drivers it needs to include in the Device Driver Table. This should be |
---|
| 3402 | defined to the set of device driver entries that will be placed in the |
---|
| 3403 | table at the *FRONT* of the Device Driver Table and initialized before any |
---|
| 3404 | other drivers *INCLUDING* any application prerequisite drivers. |
---|
[fd6dc8c8] | 3405 | |
---|
[53bb72e] | 3406 | NOTES: |
---|
| 3407 | ``CONFIGURE_BSP_PREREQUISITE_DRIVERS`` is typically used by BSPs to |
---|
| 3408 | configure common infrastructure such as bus controllers or probe for |
---|
| 3409 | devices. |
---|
[fd6dc8c8] | 3410 | |
---|
| 3411 | .. COMMENT: === Idle Task Configuration === |
---|
| 3412 | |
---|
| 3413 | Idle Task Configuration |
---|
| 3414 | ======================= |
---|
| 3415 | |
---|
[c9aaf31] | 3416 | This section defines the IDLE task related configuration parameters supported |
---|
| 3417 | by ``<rtems/confdefs.h>``. |
---|
[fd6dc8c8] | 3418 | |
---|
| 3419 | .. COMMENT: === CONFIGURE_IDLE_TASK_BODY === |
---|
| 3420 | |
---|
[9aafb39] | 3421 | .. _Specify Application Specific Idle Task Body: |
---|
[6c56401] | 3422 | .. index:: CONFIGURE_IDLE_TASK_BODY |
---|
[9aafb39] | 3423 | |
---|
[fd6dc8c8] | 3424 | Specify Application Specific Idle Task Body |
---|
| 3425 | ------------------------------------------- |
---|
| 3426 | |
---|
[53bb72e] | 3427 | CONSTANT: |
---|
[fd6dc8c8] | 3428 | ``CONFIGURE_IDLE_TASK_BODY`` |
---|
| 3429 | |
---|
[53bb72e] | 3430 | DATA TYPE: |
---|
[fd6dc8c8] | 3431 | Function pointer. |
---|
| 3432 | |
---|
[53bb72e] | 3433 | RANGE: |
---|
[fd6dc8c8] | 3434 | Undefined or valid function pointer. |
---|
| 3435 | |
---|
[53bb72e] | 3436 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3437 | This is not defined by default. |
---|
| 3438 | |
---|
[53bb72e] | 3439 | DESCRIPTION: |
---|
| 3440 | ``CONFIGURE_IDLE_TASK_BODY`` is set to the function name corresponding to |
---|
| 3441 | the application specific IDLE thread body. If not specified, the BSP or |
---|
| 3442 | RTEMS default IDLE thread body will be used. |
---|
[fd6dc8c8] | 3443 | |
---|
[53bb72e] | 3444 | NOTES: |
---|
| 3445 | None. |
---|
[fd6dc8c8] | 3446 | |
---|
| 3447 | .. COMMENT: === CONFIGURE_IDLE_TASK_STACK_SIZE === |
---|
| 3448 | |
---|
[9aafb39] | 3449 | .. _Specify Idle Task Stack Size: |
---|
[6c56401] | 3450 | .. index:: CONFIGURE_IDLE_TASK_STACK_SIZE |
---|
[9aafb39] | 3451 | |
---|
[fd6dc8c8] | 3452 | Specify Idle Task Stack Size |
---|
| 3453 | ---------------------------- |
---|
| 3454 | |
---|
[53bb72e] | 3455 | CONSTANT: |
---|
[fd6dc8c8] | 3456 | ``CONFIGURE_IDLE_TASK_STACK_SIZE`` |
---|
| 3457 | |
---|
[53bb72e] | 3458 | DATA TYPE: |
---|
[fd6dc8c8] | 3459 | Unsigned integer (``size_t``). |
---|
| 3460 | |
---|
[53bb72e] | 3461 | RANGE: |
---|
[fd6dc8c8] | 3462 | Undefined or positive. |
---|
| 3463 | |
---|
[53bb72e] | 3464 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3465 | The default value is RTEMS_MINIMUM_STACK_SIZE. |
---|
| 3466 | |
---|
[53bb72e] | 3467 | DESCRIPTION: |
---|
| 3468 | ``CONFIGURE_IDLE_TASK_STACK_SIZE`` is set to the desired stack size for the |
---|
| 3469 | IDLE task. |
---|
[fd6dc8c8] | 3470 | |
---|
[53bb72e] | 3471 | NOTES: |
---|
| 3472 | None. |
---|
[fd6dc8c8] | 3473 | |
---|
| 3474 | .. COMMENT: === CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION === |
---|
| 3475 | |
---|
[9aafb39] | 3476 | .. _Specify Idle Task Performs Application Initialization: |
---|
[6c56401] | 3477 | .. index:: CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION |
---|
[9aafb39] | 3478 | |
---|
[fd6dc8c8] | 3479 | Specify Idle Task Performs Application Initialization |
---|
| 3480 | ----------------------------------------------------- |
---|
| 3481 | |
---|
[53bb72e] | 3482 | CONSTANT: |
---|
[fd6dc8c8] | 3483 | ``CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION`` |
---|
| 3484 | |
---|
[53bb72e] | 3485 | DATA TYPE: |
---|
[fd6dc8c8] | 3486 | Boolean feature macro. |
---|
| 3487 | |
---|
[53bb72e] | 3488 | RANGE: |
---|
[fd6dc8c8] | 3489 | Defined or undefined. |
---|
| 3490 | |
---|
[53bb72e] | 3491 | DEFAULT VALUE: |
---|
| 3492 | This is not defined by default, the user is assumed to provide one or more |
---|
| 3493 | initialization tasks. |
---|
[fd6dc8c8] | 3494 | |
---|
[53bb72e] | 3495 | DESCRIPTION: |
---|
| 3496 | ``CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION`` is set to indicate that the |
---|
| 3497 | user has configured *NO* user initialization tasks or threads and that the |
---|
| 3498 | user provided IDLE task will perform application initialization and then |
---|
| 3499 | transform itself into an IDLE task. |
---|
[fd6dc8c8] | 3500 | |
---|
[53bb72e] | 3501 | NOTES: |
---|
| 3502 | If you use this option be careful, the user IDLE task *CANNOT* block at all |
---|
| 3503 | during the initialization sequence. Further, once application |
---|
| 3504 | initialization is complete, it must make itself preemptible and enter an |
---|
| 3505 | IDLE body loop. |
---|
[fd6dc8c8] | 3506 | |
---|
[53bb72e] | 3507 | The IDLE task must run at the lowest priority of all tasks in the system. |
---|
[fd6dc8c8] | 3508 | |
---|
| 3509 | .. COMMENT: === Scheduler Algorithm Configuration === |
---|
| 3510 | |
---|
| 3511 | Scheduler Algorithm Configuration |
---|
| 3512 | ================================= |
---|
| 3513 | |
---|
| 3514 | This section defines the configuration parameters related to selecting a |
---|
[c9aaf31] | 3515 | scheduling algorithm for an application. For the schedulers built into RTEMS, |
---|
| 3516 | the configuration is straightforward. All that is required is to define the |
---|
| 3517 | configuration macro which specifies which scheduler you want for in your |
---|
| 3518 | application. The currently available schedulers are: |
---|
[fd6dc8c8] | 3519 | |
---|
[c9aaf31] | 3520 | The pluggable scheduler interface also enables the user to provide their own |
---|
| 3521 | scheduling algorithm. If you choose to do this, you must define multiple |
---|
| 3522 | configuration macros. |
---|
[fd6dc8c8] | 3523 | |
---|
| 3524 | .. COMMENT: === CONFIGURE_SCHEDULER_PRIORITY === |
---|
| 3525 | |
---|
[9aafb39] | 3526 | .. _Use Deterministic Priority Scheduler: |
---|
[6c56401] | 3527 | .. index:: CONFIGURE_SCHEDULER_PRIORITY |
---|
[9aafb39] | 3528 | |
---|
[fd6dc8c8] | 3529 | Use Deterministic Priority Scheduler |
---|
| 3530 | ------------------------------------ |
---|
| 3531 | |
---|
[53bb72e] | 3532 | CONSTANT: |
---|
[fd6dc8c8] | 3533 | ``CONFIGURE_SCHEDULER_PRIORITY`` |
---|
| 3534 | |
---|
[53bb72e] | 3535 | DATA TYPE: |
---|
[fd6dc8c8] | 3536 | Boolean feature macro. |
---|
| 3537 | |
---|
[53bb72e] | 3538 | RANGE: |
---|
[fd6dc8c8] | 3539 | Defined or undefined. |
---|
| 3540 | |
---|
[53bb72e] | 3541 | DEFAULT VALUE: |
---|
[c9aaf31] | 3542 | This is defined by default. This is the default scheduler and specifying |
---|
| 3543 | this configuration parameter is redundant. |
---|
[fd6dc8c8] | 3544 | |
---|
[53bb72e] | 3545 | DESCRIPTION: |
---|
| 3546 | The Deterministic Priority Scheduler is the default scheduler in RTEMS for |
---|
| 3547 | uni-processor applications and is designed for predictable performance |
---|
| 3548 | under the highest loads. It can block or unblock a thread in a constant |
---|
| 3549 | amount of time. This scheduler requires a variable amount of memory based |
---|
| 3550 | upon the number of priorities configured in the system. |
---|
[fd6dc8c8] | 3551 | |
---|
[53bb72e] | 3552 | NOTES: |
---|
| 3553 | This scheduler may be explicitly selected by defining |
---|
| 3554 | ``CONFIGURE_SCHEDULER_PRIORITY`` although this is equivalent to the default |
---|
| 3555 | behavior. |
---|
[fd6dc8c8] | 3556 | |
---|
| 3557 | .. COMMENT: === CONFIGURE_SCHEDULER_SIMPLE === |
---|
| 3558 | |
---|
[9aafb39] | 3559 | .. _Use Simple Priority Scheduler: |
---|
[6c56401] | 3560 | .. index:: CONFIGURE_SCHEDULER_SIMPLE |
---|
[9aafb39] | 3561 | |
---|
[fd6dc8c8] | 3562 | Use Simple Priority Scheduler |
---|
| 3563 | ----------------------------- |
---|
| 3564 | |
---|
[53bb72e] | 3565 | CONSTANT: |
---|
[fd6dc8c8] | 3566 | ``CONFIGURE_SCHEDULER_SIMPLE`` |
---|
| 3567 | |
---|
[53bb72e] | 3568 | DATA TYPE: |
---|
[fd6dc8c8] | 3569 | Boolean feature macro. |
---|
| 3570 | |
---|
[53bb72e] | 3571 | RANGE: |
---|
[fd6dc8c8] | 3572 | Defined or undefined. |
---|
| 3573 | |
---|
[53bb72e] | 3574 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3575 | This is not defined by default. |
---|
| 3576 | |
---|
[53bb72e] | 3577 | DESCRIPTION: |
---|
| 3578 | When defined, the Simple Priority Scheduler is used at the thread |
---|
| 3579 | scheduling algorithm. This is an alternative scheduler in RTEMS. It is |
---|
| 3580 | designed to provide the same task scheduling behaviour as the Deterministic |
---|
| 3581 | Priority Scheduler while being simpler in implementation and uses less |
---|
| 3582 | memory for data management. It maintains a single sorted list of all ready |
---|
| 3583 | threads. Thus blocking or unblocking a thread is not a constant time |
---|
| 3584 | operation with this scheduler. |
---|
[fd6dc8c8] | 3585 | |
---|
[53bb72e] | 3586 | This scheduler may be explicitly selected by defining |
---|
| 3587 | ``CONFIGURE_SCHEDULER_SIMPLE``. |
---|
[fd6dc8c8] | 3588 | |
---|
[53bb72e] | 3589 | NOTES: |
---|
| 3590 | This scheduler is appropriate for use in small systems where RAM is limited. |
---|
[fd6dc8c8] | 3591 | |
---|
| 3592 | .. COMMENT: === CONFIGURE_SCHEDULER_EDF === |
---|
| 3593 | |
---|
[9aafb39] | 3594 | .. _Use Earliest Deadline First Scheduler: |
---|
[6c56401] | 3595 | .. index:: CONFIGURE_SCHEDULER_EDF |
---|
[9aafb39] | 3596 | |
---|
[fd6dc8c8] | 3597 | Use Earliest Deadline First Scheduler |
---|
| 3598 | ------------------------------------- |
---|
| 3599 | |
---|
[53bb72e] | 3600 | CONSTANT: |
---|
[fd6dc8c8] | 3601 | ``CONFIGURE_SCHEDULER_EDF`` |
---|
| 3602 | |
---|
[53bb72e] | 3603 | DATA TYPE: |
---|
[fd6dc8c8] | 3604 | Boolean feature macro. |
---|
| 3605 | |
---|
[53bb72e] | 3606 | RANGE: |
---|
[fd6dc8c8] | 3607 | Defined or undefined. |
---|
| 3608 | |
---|
[53bb72e] | 3609 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3610 | This is not defined by default. |
---|
| 3611 | |
---|
[53bb72e] | 3612 | DESCRIPTION: |
---|
| 3613 | The Earliest Deadline First Scheduler (EDF) is an alternative scheduler in |
---|
| 3614 | RTEMS for uni-processor applications. The EDF schedules tasks with dynamic |
---|
| 3615 | priorities equal to deadlines. The deadlines are declared using only Rate |
---|
| 3616 | Monotonic manager which handles periodic behavior. Period is always equal |
---|
| 3617 | to deadline. If a task does not have any deadline declared or the deadline |
---|
| 3618 | is cancelled, the task is considered a background task which is scheduled |
---|
| 3619 | in case no deadline-driven tasks are ready to run. Moreover, multiple |
---|
| 3620 | background tasks are scheduled according their priority assigned upon |
---|
| 3621 | initialization. All ready tasks reside in a single ready queue. |
---|
[fd6dc8c8] | 3622 | |
---|
[53bb72e] | 3623 | This scheduler may be explicitly selected by defining |
---|
| 3624 | ``CONFIGURE_SCHEDULER_EDF``. |
---|
[fd6dc8c8] | 3625 | |
---|
[53bb72e] | 3626 | NOTES: |
---|
| 3627 | None. |
---|
[fd6dc8c8] | 3628 | |
---|
[8cf3d75] | 3629 | .. COMMENT: === CONFIGURE_SCHEDULER_EDF_SMP === |
---|
| 3630 | |
---|
| 3631 | .. _Use Earliest Deadline First SMP Scheduler: |
---|
[6c56401] | 3632 | .. index:: CONFIGURE_SCHEDULER_EDF_SMP |
---|
[8cf3d75] | 3633 | |
---|
| 3634 | Use Earliest Deadline First Scheduler |
---|
| 3635 | ------------------------------------- |
---|
| 3636 | |
---|
| 3637 | CONSTANT: |
---|
| 3638 | ``CONFIGURE_SCHEDULER_EDF_SMP`` |
---|
| 3639 | |
---|
| 3640 | DATA TYPE: |
---|
| 3641 | Boolean feature macro. |
---|
| 3642 | |
---|
| 3643 | RANGE: |
---|
| 3644 | Defined or undefined. |
---|
| 3645 | |
---|
| 3646 | DEFAULT VALUE: |
---|
| 3647 | This is not defined by default. |
---|
| 3648 | |
---|
| 3649 | DESCRIPTION: |
---|
| 3650 | If defined, then the Earliest Deadline First (EDF) SMP Scheduler is |
---|
| 3651 | selected as the default scheduler. |
---|
| 3652 | |
---|
| 3653 | NOTES: |
---|
| 3654 | None. |
---|
| 3655 | |
---|
[fd6dc8c8] | 3656 | .. COMMENT: === CONFIGURE_SCHEDULER_CBS === |
---|
| 3657 | |
---|
[9aafb39] | 3658 | .. _Use Constant Bandwidth Server Scheduler: |
---|
[6c56401] | 3659 | .. index:: CONFIGURE_SCHEDULER_CBS |
---|
[9aafb39] | 3660 | |
---|
[fd6dc8c8] | 3661 | Use Constant Bandwidth Server Scheduler |
---|
| 3662 | --------------------------------------- |
---|
| 3663 | |
---|
[53bb72e] | 3664 | CONSTANT: |
---|
[fd6dc8c8] | 3665 | ``CONFIGURE_SCHEDULER_CBS`` |
---|
| 3666 | |
---|
[53bb72e] | 3667 | DATA TYPE: |
---|
[fd6dc8c8] | 3668 | Boolean feature macro. |
---|
| 3669 | |
---|
[53bb72e] | 3670 | RANGE: |
---|
[fd6dc8c8] | 3671 | Defined or undefined. |
---|
| 3672 | |
---|
[53bb72e] | 3673 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3674 | This is not defined by default. |
---|
| 3675 | |
---|
[53bb72e] | 3676 | DESCRIPTION: |
---|
| 3677 | The Constant Bandwidth Server Scheduler (CBS) is an alternative scheduler |
---|
| 3678 | in RTEMS for uni-processor applications. The CBS is a budget aware |
---|
| 3679 | extension of EDF scheduler. The goal of this scheduler is to ensure |
---|
| 3680 | temporal isolation of tasks. The CBS is equipped with a set of additional |
---|
| 3681 | rules and provides with an extensive API. |
---|
[fd6dc8c8] | 3682 | |
---|
[53bb72e] | 3683 | This scheduler may be explicitly selected by defining |
---|
| 3684 | ``CONFIGURE_SCHEDULER_CBS``. |
---|
[fd6dc8c8] | 3685 | |
---|
| 3686 | .. COMMENT: XXX - add cross reference to API chapter |
---|
| 3687 | |
---|
[53bb72e] | 3688 | NOTES: |
---|
| 3689 | None. |
---|
[fd6dc8c8] | 3690 | |
---|
| 3691 | .. COMMENT: === CONFIGURE_SCHEDULER_PRIORITY_SMP === |
---|
| 3692 | |
---|
[9aafb39] | 3693 | .. _Use Deterministic Priority SMP Scheduler: |
---|
[6c56401] | 3694 | .. index:: CONFIGURE_SCHEDULER_PRIORITY_SMP |
---|
[9aafb39] | 3695 | |
---|
[fd6dc8c8] | 3696 | Use Deterministic Priority SMP Scheduler |
---|
| 3697 | ---------------------------------------- |
---|
| 3698 | |
---|
[53bb72e] | 3699 | CONSTANT: |
---|
[fd6dc8c8] | 3700 | ``CONFIGURE_SCHEDULER_PRIORITY_SMP`` |
---|
| 3701 | |
---|
[53bb72e] | 3702 | DATA TYPE: |
---|
[fd6dc8c8] | 3703 | Boolean feature macro. |
---|
| 3704 | |
---|
[53bb72e] | 3705 | RANGE: |
---|
[fd6dc8c8] | 3706 | Defined or undefined. |
---|
| 3707 | |
---|
[53bb72e] | 3708 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3709 | This is not defined by default. |
---|
| 3710 | |
---|
[53bb72e] | 3711 | DESCRIPTION: |
---|
| 3712 | The Deterministic Priority SMP Scheduler is derived from the Deterministic |
---|
| 3713 | Priority Scheduler but is capable of scheduling threads across multiple |
---|
| 3714 | processors. |
---|
[fd6dc8c8] | 3715 | |
---|
[53bb72e] | 3716 | In a configuration with SMP enabled at configure time, it may be explicitly |
---|
| 3717 | selected by defining ``CONFIGURE_SCHEDULER_PRIORITY_SMP``. |
---|
[fd6dc8c8] | 3718 | |
---|
[53bb72e] | 3719 | NOTES: |
---|
| 3720 | This scheduler is only available when RTEMS is configured with SMP support |
---|
| 3721 | enabled. |
---|
[fd6dc8c8] | 3722 | |
---|
[53bb72e] | 3723 | This scheduler is currently the default in SMP configurations and is only |
---|
[1d073c5] | 3724 | selected when ``CONFIGURE_MAXIMUM_PROCESSORS`` is greater than one. |
---|
[fd6dc8c8] | 3725 | |
---|
| 3726 | .. COMMENT: === CONFIGURE_SCHEDULER_SIMPLE_SMP === |
---|
| 3727 | |
---|
[9aafb39] | 3728 | .. _Use Simple SMP Priority Scheduler: |
---|
[6c56401] | 3729 | .. index:: CONFIGURE_SCHEDULER_SIMPLE_SMP |
---|
[9aafb39] | 3730 | |
---|
[fd6dc8c8] | 3731 | Use Simple SMP Priority Scheduler |
---|
| 3732 | --------------------------------- |
---|
| 3733 | |
---|
[53bb72e] | 3734 | CONSTANT: |
---|
[fd6dc8c8] | 3735 | ``CONFIGURE_SCHEDULER_SIMPLE_SMP`` |
---|
| 3736 | |
---|
[53bb72e] | 3737 | DATA TYPE: |
---|
[fd6dc8c8] | 3738 | Boolean feature macro. |
---|
| 3739 | |
---|
[53bb72e] | 3740 | RANGE: |
---|
[fd6dc8c8] | 3741 | Defined or undefined. |
---|
| 3742 | |
---|
[53bb72e] | 3743 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3744 | This is not defined by default. |
---|
| 3745 | |
---|
[53bb72e] | 3746 | DESCRIPTION: |
---|
| 3747 | The Simple SMP Priority Scheduler is derived from the Simple Priority |
---|
| 3748 | Scheduler but is capable of scheduling threads across multiple processors. |
---|
| 3749 | It is designed to provide the same task scheduling behaviour as the |
---|
| 3750 | Deterministic Priority Scheduler while distributing threads across multiple |
---|
| 3751 | processors. Being based upon the Simple Priority Scheduler, it also |
---|
| 3752 | maintains a single sorted list of all ready threads. Thus blocking or |
---|
| 3753 | unblocking a thread is not a constant time operation with this scheduler. |
---|
[fd6dc8c8] | 3754 | |
---|
[53bb72e] | 3755 | In addition, when allocating threads to processors, the algorithm is not |
---|
| 3756 | constant time. This algorithm was not designed with efficiency as a primary |
---|
| 3757 | design goal. Its primary design goal was to provide an SMP-aware |
---|
| 3758 | scheduling algorithm that is simple to understand. |
---|
[fd6dc8c8] | 3759 | |
---|
[53bb72e] | 3760 | In a configuration with SMP enabled at configure time, it may be explicitly |
---|
| 3761 | selected by defining ``CONFIGURE_SCHEDULER_SIMPLE_SMP``. |
---|
[fd6dc8c8] | 3762 | |
---|
[53bb72e] | 3763 | NOTES: |
---|
| 3764 | This scheduler is only available when RTEMS is configured with SMP support |
---|
| 3765 | enabled. |
---|
[fd6dc8c8] | 3766 | |
---|
| 3767 | .. COMMENT: === Configuring a Scheduler Name === |
---|
| 3768 | |
---|
[9aafb39] | 3769 | .. _Configuring a Scheduler Name: |
---|
[6c56401] | 3770 | .. index:: CONFIGURE_SCHEDULER_NAME |
---|
[9aafb39] | 3771 | |
---|
[fd6dc8c8] | 3772 | Configuring a Scheduler Name |
---|
| 3773 | ---------------------------- |
---|
| 3774 | |
---|
[53bb72e] | 3775 | CONSTANT: |
---|
[fd6dc8c8] | 3776 | ``CONFIGURE_SCHEDULER_NAME`` |
---|
| 3777 | |
---|
[53bb72e] | 3778 | DATA TYPE: |
---|
[fd6dc8c8] | 3779 | RTEMS Name (``rtems_name``). |
---|
| 3780 | |
---|
[53bb72e] | 3781 | RANGE: |
---|
[fd6dc8c8] | 3782 | Any value. |
---|
| 3783 | |
---|
[53bb72e] | 3784 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3785 | The default name is |
---|
[c9aaf31] | 3786 | - ``"UCBS"`` for the Uni-Processor CBS scheduler, |
---|
| 3787 | - ``"UEDF"`` for the Uni-Processor EDF scheduler, |
---|
| 3788 | - ``"UPD "`` for the Uni-Processor Deterministic Priority scheduler, |
---|
| 3789 | - ``"UPS "`` for the Uni-Processor Simple Priority scheduler, |
---|
| 3790 | - ``"MPA "`` for the Multi-Processor Priority Affinity scheduler, and |
---|
| 3791 | - ``"MPD "`` for the Multi-Processor Deterministic Priority scheduler, and |
---|
| 3792 | - ``"MPS "`` for the Multi-Processor Simple Priority scheduler. |
---|
[fd6dc8c8] | 3793 | |
---|
[53bb72e] | 3794 | DESCRIPTION: |
---|
| 3795 | Schedulers can be identified via ``rtems_scheduler_ident``. The name of |
---|
| 3796 | the scheduler is determined by the configuration. |
---|
[fd6dc8c8] | 3797 | |
---|
[53bb72e] | 3798 | NOTES: |
---|
| 3799 | None. |
---|
[fd6dc8c8] | 3800 | |
---|
| 3801 | .. COMMENT: === Configuring a User Scheduler === |
---|
| 3802 | |
---|
[9aafb39] | 3803 | .. _Configuring a User Provided Scheduler: |
---|
[6c56401] | 3804 | .. index:: CONFIGURE_SCHEDULER_USER |
---|
[9aafb39] | 3805 | |
---|
[fd6dc8c8] | 3806 | Configuring a User Provided Scheduler |
---|
| 3807 | ------------------------------------- |
---|
| 3808 | |
---|
[53bb72e] | 3809 | CONSTANT: |
---|
[fd6dc8c8] | 3810 | ``CONFIGURE_SCHEDULER_USER`` |
---|
| 3811 | |
---|
[53bb72e] | 3812 | DATA TYPE: |
---|
[fd6dc8c8] | 3813 | Boolean feature macro. |
---|
| 3814 | |
---|
[53bb72e] | 3815 | RANGE: |
---|
[fd6dc8c8] | 3816 | Defined or undefined. |
---|
| 3817 | |
---|
[53bb72e] | 3818 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 3819 | This is not defined by default. |
---|
| 3820 | |
---|
[53bb72e] | 3821 | DESCRIPTION: |
---|
| 3822 | RTEMS allows the application to provide its own task/thread scheduling |
---|
| 3823 | algorithm. In order to do this, one must define |
---|
| 3824 | ``CONFIGURE_SCHEDULER_USER`` to indicate the application provides its own |
---|
| 3825 | scheduling algorithm. If ``CONFIGURE_SCHEDULER_USER`` is defined then the |
---|
| 3826 | following additional macros must be defined: |
---|
[fd6dc8c8] | 3827 | |
---|
[53bb72e] | 3828 | - ``CONFIGURE_SCHEDULER_CONTEXT`` must be defined to a static definition of |
---|
| 3829 | the scheduler context of the user scheduler. |
---|
[fd6dc8c8] | 3830 | |
---|
[53bb72e] | 3831 | - ``CONFIGURE_SCHEDULER_CONTROLS`` must be defined to a scheduler control |
---|
| 3832 | initializer for the user scheduler. |
---|
[fd6dc8c8] | 3833 | |
---|
[53bb72e] | 3834 | - ``CONFIGURE_SCHEDULER_USER_PER_THREAD`` must be defined to the type of |
---|
| 3835 | the per-thread information of the user scheduler. |
---|
[fd6dc8c8] | 3836 | |
---|
[53bb72e] | 3837 | NOTES: |
---|
| 3838 | At this time, the mechanics and requirements for writing a new scheduler |
---|
| 3839 | are evolving and not fully documented. It is recommended that you look at |
---|
| 3840 | the existing Deterministic Priority Scheduler in |
---|
| 3841 | ``cpukit/score/src/schedulerpriority*.c`` for guidance. For guidance on |
---|
| 3842 | the configuration macros, please examine ``cpukit/sapi/include/confdefs.h`` |
---|
| 3843 | for how these are defined for the Deterministic Priority Scheduler. |
---|
[fd6dc8c8] | 3844 | |
---|
| 3845 | .. COMMENT: === Configuring Clustered Schedulers === |
---|
| 3846 | |
---|
[9aafb39] | 3847 | .. _Configuring Clustered Schedulers: |
---|
[fd6dc8c8] | 3848 | |
---|
| 3849 | Configuring Clustered Schedulers |
---|
| 3850 | -------------------------------- |
---|
| 3851 | |
---|
| 3852 | Clustered scheduling helps to control the worst-case latencies in a |
---|
| 3853 | multi-processor system. The goal is to reduce the amount of shared state in |
---|
| 3854 | the system and thus prevention of lock contention. Modern multi-processor |
---|
| 3855 | systems tend to have several layers of data and instruction caches. With |
---|
| 3856 | clustered scheduling it is possible to honour the cache topology of a system |
---|
| 3857 | and thus avoid expensive cache synchronization traffic. |
---|
| 3858 | |
---|
| 3859 | We have clustered scheduling in case the set of processors of a system is |
---|
| 3860 | partitioned into non-empty pairwise-disjoint subsets. These subsets are called |
---|
| 3861 | clusters. Clusters with a cardinality of one are partitions. Each cluster is |
---|
[c9aaf31] | 3862 | owned by exactly one scheduler instance. In order to use clustered scheduling |
---|
| 3863 | the application designer has to answer two questions. |
---|
[fd6dc8c8] | 3864 | |
---|
[01a36ee] | 3865 | #. How is the set of processors partitioned into clusters? |
---|
[fd6dc8c8] | 3866 | |
---|
[01a36ee] | 3867 | #. Which scheduler is used for which cluster? |
---|
[fd6dc8c8] | 3868 | |
---|
[53bb72e] | 3869 | CONFIGURATION: |
---|
| 3870 | The schedulers in an SMP system are statically configured on RTEMS. |
---|
| 3871 | Firstly the application must select which scheduling algorithms are |
---|
| 3872 | available with the following defines |
---|
| 3873 | |
---|
| 3874 | - ``CONFIGURE_SCHEDULER_PRIORITY_SMP``, |
---|
| 3875 | |
---|
| 3876 | - ``CONFIGURE_SCHEDULER_SIMPLE_SMP``, and |
---|
| 3877 | |
---|
| 3878 | - ``CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP``. |
---|
| 3879 | |
---|
| 3880 | This is necessary to calculate the per-thread overhead introduced by the |
---|
| 3881 | schedulers. After these definitions the configuration file must ``#include |
---|
| 3882 | <rtems/scheduler.h>`` to have access to scheduler specific configuration |
---|
| 3883 | macros. Each scheduler needs a context to store state information at |
---|
| 3884 | run-time. To provide a context for each scheduler is the next step. Use |
---|
| 3885 | the following macros to create scheduler contexts |
---|
| 3886 | |
---|
| 3887 | - ``RTEMS_SCHEDULER_CONTEXT_PRIORITY_SMP(name, prio_count)``, |
---|
| 3888 | |
---|
| 3889 | - ``RTEMS_SCHEDULER_CONTEXT_SIMPLE_SMP(name)``, and |
---|
| 3890 | |
---|
| 3891 | - ``RTEMS_SCHEDULER_CONTEXT_PRIORITY_AFFINITY_SMP(name, prio_count)``. |
---|
| 3892 | |
---|
| 3893 | The ``name`` parameter is used as part of a designator for a global |
---|
| 3894 | variable, so the usual C/C++ designator rules apply. Additional parameters |
---|
| 3895 | are scheduler specific. The schedulers are registered in the system via |
---|
| 3896 | the scheduler table. To create the scheduler table define |
---|
| 3897 | ``CONFIGURE_SCHEDULER_CONTROLS`` to a list of the following scheduler |
---|
| 3898 | control initializers |
---|
| 3899 | |
---|
| 3900 | - ``RTEMS_SCHEDULER_CONTROL_PRIORITY_SMP(name, obj_name)``, |
---|
| 3901 | |
---|
| 3902 | - ``RTEMS_SCHEDULER_CONTROL_SIMPLE_SMP(name, obj_name)``, and |
---|
| 3903 | |
---|
| 3904 | - ``RTEMS_SCHEDULER_CONTROL_PRIORITY_AFFINITY_SMP(name, obj_name)``. |
---|
| 3905 | |
---|
| 3906 | The ``name`` parameter must correspond to the parameter defining the |
---|
| 3907 | scheduler context. The ``obj_name`` determines the scheduler object name |
---|
| 3908 | and can be used in ``rtems_scheduler_ident()`` to get the scheduler object |
---|
| 3909 | identifier. |
---|
| 3910 | |
---|
| 3911 | The last step is to define which processor uses which scheduler. For this |
---|
| 3912 | purpose a scheduler assignment table must be defined. The entry count of |
---|
| 3913 | this table must be equal to the configured maximum processors |
---|
[1d073c5] | 3914 | (``CONFIGURE_MAXIMUM_PROCESSORS``). A processor assignment to a |
---|
[53bb72e] | 3915 | scheduler can be optional or mandatory. The boot processor must have a |
---|
| 3916 | scheduler assigned. In case the system needs more mandatory processors |
---|
| 3917 | than available then a fatal run-time error will occur. To specify the |
---|
| 3918 | scheduler assignments define ``CONFIGURE_SMP_SCHEDULER_ASSIGNMENTS`` to a |
---|
| 3919 | list of ``RTEMS_SCHEDULER_ASSIGN(index, attr)`` and |
---|
| 3920 | ``RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER`` macros. The ``index`` parameter |
---|
| 3921 | must be a valid index into the scheduler table. The ``attr`` parameter |
---|
| 3922 | defines the scheduler assignment attributes. By default a scheduler |
---|
| 3923 | assignment to a processor is optional. For the scheduler assignment |
---|
| 3924 | attribute use one of the mutually exclusive variants |
---|
| 3925 | |
---|
| 3926 | - ``RTEMS_SCHEDULER_ASSIGN_DEFAULT``, |
---|
| 3927 | |
---|
| 3928 | - ``RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY``, and |
---|
| 3929 | |
---|
| 3930 | - ``RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL``. |
---|
| 3931 | |
---|
[bcdca5d] | 3932 | It is possible to add/remove processors to/from scheduler instances at |
---|
| 3933 | run-time, see :ref:`rtems_scheduler_add_processor` and |
---|
| 3934 | :ref:`rtems_scheduler_remove_processor`. |
---|
| 3935 | |
---|
[53bb72e] | 3936 | ERRORS: |
---|
| 3937 | In case one of the scheduler indices |
---|
| 3938 | in``CONFIGURE_SMP_SCHEDULER_ASSIGNMENTS`` is invalid a link-time error will |
---|
| 3939 | occur with an undefined reference to ``RTEMS_SCHEDULER_INVALID_INDEX``. |
---|
| 3940 | |
---|
| 3941 | Some fatal errors may occur in case of scheduler configuration |
---|
| 3942 | inconsistencies or a lack of processors on the system. The fatal source is |
---|
| 3943 | ``RTEMS_FATAL_SOURCE_SMP``. None of the errors is internal. |
---|
| 3944 | |
---|
| 3945 | - ``SMP_FATAL_BOOT_PROCESSOR_NOT_ASSIGNED_TO_SCHEDULER`` - the boot |
---|
| 3946 | processor must have a scheduler assigned. |
---|
| 3947 | |
---|
| 3948 | - ``SMP_FATAL_MANDATORY_PROCESSOR_NOT_PRESENT`` - there exists a mandatory |
---|
| 3949 | processor beyond the range of physically or virtually available |
---|
| 3950 | processors. The processor demand must be reduced for this system. |
---|
| 3951 | |
---|
| 3952 | - ``SMP_FATAL_START_OF_MANDATORY_PROCESSOR_FAILED`` - the start of a |
---|
| 3953 | mandatory processor failed during system initialization. The system may |
---|
| 3954 | not have this processor at all or it could be a problem with a boot |
---|
| 3955 | loader for example. Check the ``CONFIGURE_SMP_SCHEDULER_ASSIGNMENTS`` |
---|
| 3956 | definition. |
---|
| 3957 | |
---|
| 3958 | - ``SMP_FATAL_MULTITASKING_START_ON_UNASSIGNED_PROCESSOR`` - it is not |
---|
| 3959 | allowed to start multitasking on a processor with no scheduler assigned. |
---|
| 3960 | |
---|
| 3961 | EXAMPLE: |
---|
| 3962 | The following example shows a scheduler configuration for a hypothetical |
---|
| 3963 | product using two chip variants. One variant has four processors which is |
---|
| 3964 | used for the normal product line and another provides eight processors for |
---|
| 3965 | the high-performance product line. The first processor performs hard-real |
---|
| 3966 | time control of actuators and sensors. The second processor is not used by |
---|
| 3967 | RTEMS at all and runs a Linux instance to provide a graphical user |
---|
| 3968 | interface. The additional processors are used for a worker thread pool to |
---|
| 3969 | perform data processing operations. |
---|
| 3970 | |
---|
| 3971 | The processors managed by RTEMS use two Deterministic Priority scheduler |
---|
| 3972 | instances capable of dealing with 256 priority levels. The scheduler with |
---|
| 3973 | index zero has the name ``"IO "``. The scheduler with index one has the |
---|
| 3974 | name ``"WORK"``. The scheduler assignments of the first, third and fourth |
---|
| 3975 | processor are mandatory, so the system must have at least four processors, |
---|
| 3976 | otherwise a fatal run-time error will occur during system startup. The |
---|
| 3977 | processor assignments for the fifth up to the eighth processor are optional |
---|
| 3978 | so that the same application can be used for the normal and |
---|
| 3979 | high-performance product lines. The second processor has no scheduler |
---|
| 3980 | assigned and runs Linux. A hypervisor will ensure that the two systems |
---|
| 3981 | cannot interfere in an undesirable way. |
---|
| 3982 | |
---|
| 3983 | .. code-block:: c |
---|
| 3984 | |
---|
[1d073c5] | 3985 | #define CONFIGURE_MAXIMUM_PROCESSORS 8 |
---|
[53bb72e] | 3986 | #define CONFIGURE_MAXIMUM_PRIORITY 255 |
---|
[bcdca5d] | 3987 | |
---|
[53bb72e] | 3988 | /* Make the scheduler algorithm available */ |
---|
| 3989 | #define CONFIGURE_SCHEDULER_PRIORITY_SMP |
---|
| 3990 | #include <rtems/scheduler.h> |
---|
[bcdca5d] | 3991 | |
---|
[53bb72e] | 3992 | /* Create contexts for the two scheduler instances */ |
---|
| 3993 | RTEMS_SCHEDULER_CONTEXT_PRIORITY_SMP(io, CONFIGURE_MAXIMUM_PRIORITY + 1); |
---|
| 3994 | RTEMS_SCHEDULER_CONTEXT_PRIORITY_SMP(work, CONFIGURE_MAXIMUM_PRIORITY + 1); |
---|
[bcdca5d] | 3995 | |
---|
[53bb72e] | 3996 | /* Define the scheduler table */ |
---|
| 3997 | #define CONFIGURE_SCHEDULER_CONTROLS \\ |
---|
[bcdca5d] | 3998 | RTEMS_SCHEDULER_CONTROL_PRIORITY_SMP( \ |
---|
| 3999 | io, \ |
---|
| 4000 | rtems_build_name('I', 'O', ' ', ' ') \ |
---|
| 4001 | ), \ |
---|
| 4002 | RTEMS_SCHEDULER_CONTROL_PRIORITY_SMP( \ |
---|
| 4003 | work, \ |
---|
| 4004 | rtems_build_name('W', 'O', 'R', 'K') \ |
---|
| 4005 | ) |
---|
| 4006 | |
---|
| 4007 | /* Define the initial processor to scheduler assignments */ |
---|
[53bb72e] | 4008 | #define CONFIGURE_SMP_SCHEDULER_ASSIGNMENTS \ |
---|
[bcdca5d] | 4009 | RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY), \ |
---|
| 4010 | RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ |
---|
| 4011 | RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY), \ |
---|
| 4012 | RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY), \ |
---|
| 4013 | RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ |
---|
| 4014 | RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ |
---|
| 4015 | RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ |
---|
| 4016 | RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL) |
---|
[fd6dc8c8] | 4017 | |
---|
| 4018 | .. COMMENT: === Device Driver Table === |
---|
| 4019 | |
---|
| 4020 | Device Driver Table |
---|
| 4021 | =================== |
---|
| 4022 | |
---|
[c9aaf31] | 4023 | This section defines the configuration parameters related to the automatic |
---|
| 4024 | generation of a Device Driver Table. As ``<rtems/confdefs.h>`` only is aware |
---|
| 4025 | of a small set of standard device drivers, the generated Device Driver Table is |
---|
| 4026 | suitable for simple applications with no custom device drivers. |
---|
[fd6dc8c8] | 4027 | |
---|
| 4028 | Note that network device drivers are not configured in the Device Driver Table. |
---|
| 4029 | |
---|
| 4030 | .. COMMENT: === CONFIGURE_MAXIMUM_DRIVERS === |
---|
| 4031 | |
---|
[9aafb39] | 4032 | .. _Specifying the Maximum Number of Device Drivers: |
---|
[6c56401] | 4033 | .. index:: CONFIGURE_MAXIMUM_DRIVERS |
---|
[9aafb39] | 4034 | |
---|
[fd6dc8c8] | 4035 | Specifying the Maximum Number of Device Drivers |
---|
| 4036 | ----------------------------------------------- |
---|
| 4037 | |
---|
[53bb72e] | 4038 | CONSTANT: |
---|
| 4039 | |
---|
[fd6dc8c8] | 4040 | ``CONFIGURE_MAXIMUM_DRIVERS`` |
---|
| 4041 | |
---|
[53bb72e] | 4042 | DATA TYPE: |
---|
[fd6dc8c8] | 4043 | Unsigned integer (``uint32_t``). |
---|
| 4044 | |
---|
[53bb72e] | 4045 | RANGE: |
---|
[fd6dc8c8] | 4046 | Zero or positive. |
---|
| 4047 | |
---|
[53bb72e] | 4048 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4049 | This is computed by default, and is set to the number of device drivers |
---|
| 4050 | configured using the ``CONFIGURE_APPLICATIONS_NEEDS_XXX_DRIVER`` |
---|
| 4051 | configuration parameters. |
---|
| 4052 | |
---|
[53bb72e] | 4053 | DESCRIPTION: |
---|
| 4054 | ``CONFIGURE_MAXIMUM_DRIVERS`` is defined as the number of device drivers |
---|
| 4055 | per node. |
---|
[fd6dc8c8] | 4056 | |
---|
[53bb72e] | 4057 | NOTES: |
---|
| 4058 | If the application will dynamically install device drivers, then this |
---|
| 4059 | configuration parameter must be larger than the number of statically |
---|
| 4060 | configured device drivers. Drivers configured using the |
---|
| 4061 | ``CONFIGURE_APPLICATIONS_NEEDS_XXX_DRIVER`` configuration parameters are |
---|
| 4062 | statically installed. |
---|
[fd6dc8c8] | 4063 | |
---|
| 4064 | .. COMMENT: === CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER === |
---|
| 4065 | |
---|
[9aafb39] | 4066 | .. _Enable Console Device Driver: |
---|
[6c56401] | 4067 | .. index:: CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER |
---|
[9aafb39] | 4068 | |
---|
[fd6dc8c8] | 4069 | Enable Console Device Driver |
---|
| 4070 | ---------------------------- |
---|
| 4071 | |
---|
[53bb72e] | 4072 | CONSTANT: |
---|
[fd6dc8c8] | 4073 | ``CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER`` |
---|
| 4074 | |
---|
[53bb72e] | 4075 | DATA TYPE: |
---|
[fd6dc8c8] | 4076 | Boolean feature macro. |
---|
| 4077 | |
---|
[53bb72e] | 4078 | RANGE: |
---|
[fd6dc8c8] | 4079 | Defined or undefined. |
---|
| 4080 | |
---|
[53bb72e] | 4081 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4082 | This is not defined by default. |
---|
| 4083 | |
---|
[53bb72e] | 4084 | DESCRIPTION: |
---|
| 4085 | ``CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER`` is defined if the |
---|
| 4086 | application wishes to include the Console Device Driver. |
---|
[fd6dc8c8] | 4087 | |
---|
[53bb72e] | 4088 | NOTES: |
---|
| 4089 | This device driver is responsible for providing standard input and output |
---|
| 4090 | using */dev/console*. |
---|
[fd6dc8c8] | 4091 | |
---|
[53bb72e] | 4092 | BSPs should be constructed in a manner that allows ``printk()`` to work |
---|
| 4093 | properly without the need for the console driver to be configured. |
---|
[fd6dc8c8] | 4094 | |
---|
| 4095 | .. COMMENT: === CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER === |
---|
| 4096 | |
---|
[9aafb39] | 4097 | .. _Enable Clock Driver: |
---|
[6c56401] | 4098 | .. index:: CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER |
---|
[9aafb39] | 4099 | |
---|
[fd6dc8c8] | 4100 | Enable Clock Driver |
---|
| 4101 | ------------------- |
---|
| 4102 | |
---|
[53bb72e] | 4103 | CONSTANT: |
---|
[fd6dc8c8] | 4104 | ``CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER`` |
---|
| 4105 | |
---|
[53bb72e] | 4106 | DATA TYPE: |
---|
[fd6dc8c8] | 4107 | Boolean feature macro. |
---|
| 4108 | |
---|
[53bb72e] | 4109 | RANGE: |
---|
[fd6dc8c8] | 4110 | Defined or undefined. |
---|
| 4111 | |
---|
[53bb72e] | 4112 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4113 | This is not defined by default. |
---|
| 4114 | |
---|
[53bb72e] | 4115 | DESCRIPTION: |
---|
| 4116 | ``CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER`` is defined if the application |
---|
| 4117 | wishes to include the Clock Device Driver. |
---|
[fd6dc8c8] | 4118 | |
---|
[53bb72e] | 4119 | NOTES: |
---|
| 4120 | This device driver is responsible for providing a regular interrupt which |
---|
| 4121 | invokes a clock tick directive. |
---|
[fd6dc8c8] | 4122 | |
---|
[53bb72e] | 4123 | If neither the Clock Driver not Benchmark Timer is enabled and the |
---|
| 4124 | configuration parameter |
---|
| 4125 | ``CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER`` is not defined, then a |
---|
| 4126 | compile time error will occur. |
---|
[fd6dc8c8] | 4127 | |
---|
| 4128 | .. COMMENT: === CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER === |
---|
| 4129 | |
---|
[9aafb39] | 4130 | .. _Enable the Benchmark Timer Driver: |
---|
[6c56401] | 4131 | .. index:: CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER |
---|
[9aafb39] | 4132 | |
---|
[fd6dc8c8] | 4133 | Enable the Benchmark Timer Driver |
---|
| 4134 | --------------------------------- |
---|
| 4135 | |
---|
[53bb72e] | 4136 | CONSTANT: |
---|
[fd6dc8c8] | 4137 | ``CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER`` |
---|
| 4138 | |
---|
[53bb72e] | 4139 | DATA TYPE: |
---|
[fd6dc8c8] | 4140 | Boolean feature macro. |
---|
| 4141 | |
---|
[53bb72e] | 4142 | RANGE: |
---|
[fd6dc8c8] | 4143 | Defined or undefined. |
---|
| 4144 | |
---|
[53bb72e] | 4145 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4146 | This is not defined by default. |
---|
| 4147 | |
---|
[53bb72e] | 4148 | DESCRIPTION: |
---|
| 4149 | ``CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER`` is defined if the application |
---|
| 4150 | wishes to include the Timer Driver. This device driver is used to |
---|
| 4151 | benchmark execution times by the RTEMS Timing Test Suites. |
---|
[fd6dc8c8] | 4152 | |
---|
[53bb72e] | 4153 | NOTES: |
---|
| 4154 | If neither the Clock Driver not Benchmark Timer is enabled and the |
---|
| 4155 | configuration parameter |
---|
| 4156 | ``CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER`` is not defined, then a |
---|
| 4157 | compile time error will occur. |
---|
[fd6dc8c8] | 4158 | |
---|
| 4159 | .. COMMENT: === CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER === |
---|
| 4160 | |
---|
[9aafb39] | 4161 | .. _Specify Clock and Benchmark Timer Drivers Are Not Needed: |
---|
[6c56401] | 4162 | .. index:: CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER |
---|
[9aafb39] | 4163 | |
---|
[fd6dc8c8] | 4164 | Specify Clock and Benchmark Timer Drivers Are Not Needed |
---|
| 4165 | -------------------------------------------------------- |
---|
| 4166 | |
---|
[53bb72e] | 4167 | CONSTANT: |
---|
[fd6dc8c8] | 4168 | ``CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER`` |
---|
| 4169 | |
---|
[53bb72e] | 4170 | DATA TYPE: |
---|
[fd6dc8c8] | 4171 | Boolean feature macro. |
---|
| 4172 | |
---|
[53bb72e] | 4173 | RANGE: |
---|
[fd6dc8c8] | 4174 | Defined or undefined. |
---|
| 4175 | |
---|
[53bb72e] | 4176 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4177 | This is not defined by default. |
---|
| 4178 | |
---|
[53bb72e] | 4179 | DESCRIPTION: |
---|
| 4180 | ``CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER`` is defined when the |
---|
| 4181 | application does *NOT* want the Clock Device Driver and is *NOT* using the |
---|
| 4182 | Timer Driver. The inclusion or exclusion of the Clock Driver must be |
---|
| 4183 | explicit in user applications. |
---|
[fd6dc8c8] | 4184 | |
---|
[53bb72e] | 4185 | NOTES: |
---|
| 4186 | This configuration parameter is intended to prevent the common user error |
---|
| 4187 | of using the Hello World example as the baseline for an application and |
---|
| 4188 | leaving out a clock tick source. |
---|
[fd6dc8c8] | 4189 | |
---|
| 4190 | .. COMMENT: === CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER === |
---|
| 4191 | |
---|
[9aafb39] | 4192 | .. _Enable Real-Time Clock Driver: |
---|
[6c56401] | 4193 | .. index:: CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER |
---|
[9aafb39] | 4194 | |
---|
[fd6dc8c8] | 4195 | Enable Real-Time Clock Driver |
---|
| 4196 | ----------------------------- |
---|
| 4197 | |
---|
[53bb72e] | 4198 | CONSTANT: |
---|
[fd6dc8c8] | 4199 | ``CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER`` |
---|
| 4200 | |
---|
[53bb72e] | 4201 | DATA TYPE: |
---|
[fd6dc8c8] | 4202 | Boolean feature macro. |
---|
| 4203 | |
---|
[53bb72e] | 4204 | RANGE: |
---|
[fd6dc8c8] | 4205 | Defined or undefined. |
---|
| 4206 | |
---|
[53bb72e] | 4207 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4208 | This is not defined by default. |
---|
| 4209 | |
---|
[53bb72e] | 4210 | DESCRIPTION: |
---|
| 4211 | ``CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER`` is defined if the application |
---|
| 4212 | wishes to include the Real-Time Clock Driver. |
---|
[fd6dc8c8] | 4213 | |
---|
[53bb72e] | 4214 | NOTES: |
---|
| 4215 | Most BSPs do not include support for a real-time clock. This is because |
---|
| 4216 | many boards do not include the required hardware. |
---|
[fd6dc8c8] | 4217 | |
---|
[53bb72e] | 4218 | If this is defined and the BSP does not have this device driver, then the |
---|
| 4219 | user will get a link time error for an undefined symbol. |
---|
[fd6dc8c8] | 4220 | |
---|
| 4221 | .. COMMENT: === CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER === |
---|
| 4222 | |
---|
[9aafb39] | 4223 | .. _Enable the Watchdog Device Driver: |
---|
[6c56401] | 4224 | .. index:: CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER |
---|
[9aafb39] | 4225 | |
---|
[fd6dc8c8] | 4226 | Enable the Watchdog Device Driver |
---|
| 4227 | --------------------------------- |
---|
| 4228 | |
---|
[53bb72e] | 4229 | CONSTANT: |
---|
[fd6dc8c8] | 4230 | ``CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER`` |
---|
| 4231 | |
---|
[53bb72e] | 4232 | DATA TYPE: |
---|
[fd6dc8c8] | 4233 | Boolean feature macro. |
---|
| 4234 | |
---|
[53bb72e] | 4235 | RANGE: |
---|
[fd6dc8c8] | 4236 | Defined or undefined. |
---|
| 4237 | |
---|
[53bb72e] | 4238 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4239 | This is not defined by default. |
---|
| 4240 | |
---|
[53bb72e] | 4241 | DESCRIPTION: |
---|
| 4242 | ``CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER`` is defined if the |
---|
| 4243 | application wishes to include the Watchdog Driver. |
---|
[fd6dc8c8] | 4244 | |
---|
[53bb72e] | 4245 | NOTES: |
---|
| 4246 | Most BSPs do not include support for a watchdog device driver. This is |
---|
| 4247 | because many boards do not include the required hardware. |
---|
[fd6dc8c8] | 4248 | |
---|
[53bb72e] | 4249 | If this is defined and the BSP does not have this device driver, then the |
---|
| 4250 | user will get a link time error for an undefined symbol. |
---|
[fd6dc8c8] | 4251 | |
---|
| 4252 | .. COMMENT: === CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER === |
---|
| 4253 | |
---|
[9aafb39] | 4254 | .. _Enable the Graphics Frame Buffer Device Driver: |
---|
[6c56401] | 4255 | .. index:: CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER |
---|
[9aafb39] | 4256 | |
---|
[fd6dc8c8] | 4257 | Enable the Graphics Frame Buffer Device Driver |
---|
| 4258 | ---------------------------------------------- |
---|
| 4259 | |
---|
[53bb72e] | 4260 | CONSTANT: |
---|
[fd6dc8c8] | 4261 | ``CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER`` |
---|
| 4262 | |
---|
[53bb72e] | 4263 | DATA TYPE: |
---|
[fd6dc8c8] | 4264 | Boolean feature macro. |
---|
| 4265 | |
---|
[53bb72e] | 4266 | RANGE: |
---|
[fd6dc8c8] | 4267 | Defined or undefined. |
---|
| 4268 | |
---|
[53bb72e] | 4269 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4270 | This is not defined by default. |
---|
| 4271 | |
---|
[53bb72e] | 4272 | DESCRIPTION: |
---|
| 4273 | ``CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER`` is defined if the |
---|
| 4274 | application wishes to include the BSP's Frame Buffer Device Driver. |
---|
[fd6dc8c8] | 4275 | |
---|
[53bb72e] | 4276 | NOTES: |
---|
| 4277 | Most BSPs do not include support for a Frame Buffer Device Driver. This is |
---|
| 4278 | because many boards do not include the required hardware. |
---|
[fd6dc8c8] | 4279 | |
---|
[53bb72e] | 4280 | If this is defined and the BSP does not have this device driver, then the |
---|
| 4281 | user will get a link time error for an undefined symbol. |
---|
[fd6dc8c8] | 4282 | |
---|
| 4283 | .. COMMENT: === CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER === |
---|
| 4284 | |
---|
[9aafb39] | 4285 | .. _Enable Stub Device Driver: |
---|
[6c56401] | 4286 | .. index:: CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER |
---|
[9aafb39] | 4287 | |
---|
[fd6dc8c8] | 4288 | Enable Stub Device Driver |
---|
| 4289 | ------------------------- |
---|
| 4290 | |
---|
[53bb72e] | 4291 | CONSTANT: |
---|
[fd6dc8c8] | 4292 | ``CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER`` |
---|
| 4293 | |
---|
[53bb72e] | 4294 | DATA TYPE: |
---|
[fd6dc8c8] | 4295 | Boolean feature macro. |
---|
| 4296 | |
---|
[53bb72e] | 4297 | RANGE: |
---|
[fd6dc8c8] | 4298 | Defined or undefined. |
---|
| 4299 | |
---|
[53bb72e] | 4300 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4301 | This is not defined by default. |
---|
| 4302 | |
---|
[53bb72e] | 4303 | DESCRIPTION: |
---|
| 4304 | ``CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER`` is defined if the application |
---|
| 4305 | wishes to include the Stub Device Driver. |
---|
[fd6dc8c8] | 4306 | |
---|
[53bb72e] | 4307 | NOTES: |
---|
| 4308 | This device driver simply provides entry points that return successful and |
---|
| 4309 | is primarily a test fixture. It is supported by all BSPs. |
---|
[fd6dc8c8] | 4310 | |
---|
| 4311 | .. COMMENT: === CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS === |
---|
| 4312 | |
---|
[9aafb39] | 4313 | .. _Specify Application Prerequisite Device Drivers: |
---|
[6c56401] | 4314 | .. index:: CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS |
---|
[9aafb39] | 4315 | |
---|
[fd6dc8c8] | 4316 | Specify Application Prerequisite Device Drivers |
---|
| 4317 | ----------------------------------------------- |
---|
| 4318 | |
---|
[53bb72e] | 4319 | CONSTANT: |
---|
[fd6dc8c8] | 4320 | ``CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS`` |
---|
| 4321 | |
---|
[53bb72e] | 4322 | DATA TYPE: |
---|
[fd6dc8c8] | 4323 | device driver entry structures |
---|
| 4324 | |
---|
[53bb72e] | 4325 | RANGE: |
---|
[fd6dc8c8] | 4326 | Undefined or set of device driver entry structures |
---|
| 4327 | |
---|
[53bb72e] | 4328 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4329 | This is not defined by default. |
---|
| 4330 | |
---|
[53bb72e] | 4331 | DESCRIPTION: |
---|
| 4332 | ``CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS`` is defined if the |
---|
| 4333 | application has device drivers it needs to include in the Device Driver |
---|
| 4334 | Table. This should be defined to the set of device driver entries that |
---|
| 4335 | will be placed in the table at the *FRONT* of the Device Driver Table and |
---|
| 4336 | initialized before any other drivers *EXCEPT* any BSP prerequisite drivers. |
---|
[fd6dc8c8] | 4337 | |
---|
[53bb72e] | 4338 | NOTES: |
---|
| 4339 | In some cases, it is used by System On Chip BSPs to support peripheral |
---|
| 4340 | buses beyond those normally found on the System On Chip. For example, this |
---|
| 4341 | is used by one RTEMS system which has implemented a SPARC/ERC32 based board |
---|
| 4342 | with VMEBus. The VMEBus Controller initialization is performed by a device |
---|
| 4343 | driver configured via this configuration parameter. |
---|
[fd6dc8c8] | 4344 | |
---|
| 4345 | .. COMMENT: XXX Add example |
---|
| 4346 | |
---|
| 4347 | .. COMMENT: === CONFIGURE_APPLICATION_EXTRA_DRIVERS === |
---|
| 4348 | |
---|
[9aafb39] | 4349 | .. _Specify Extra Application Device Drivers: |
---|
[6c56401] | 4350 | .. index:: CONFIGURE_APPLICATION_EXTRA_DRIVERS |
---|
[9aafb39] | 4351 | |
---|
[fd6dc8c8] | 4352 | Specify Extra Application Device Drivers |
---|
| 4353 | ---------------------------------------- |
---|
| 4354 | |
---|
[53bb72e] | 4355 | CONSTANT: |
---|
[fd6dc8c8] | 4356 | ``CONFIGURE_APPLICATION_EXTRA_DRIVERS`` |
---|
| 4357 | |
---|
[53bb72e] | 4358 | DATA TYPE: |
---|
[fd6dc8c8] | 4359 | device driver entry structures |
---|
| 4360 | |
---|
[53bb72e] | 4361 | RANGE: |
---|
[fd6dc8c8] | 4362 | Undefined or set of device driver entry structures |
---|
| 4363 | |
---|
[53bb72e] | 4364 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4365 | This is not defined by default. |
---|
| 4366 | |
---|
[53bb72e] | 4367 | DESCRIPTION: |
---|
| 4368 | ``CONFIGURE_APPLICATION_EXTRA_DRIVERS`` is defined if the application has |
---|
| 4369 | device drivers it needs to include in the Device Driver Table. This should |
---|
| 4370 | be defined to the set of device driver entries that will be placed in the |
---|
| 4371 | table at the *END* of the Device Driver Table. |
---|
[fd6dc8c8] | 4372 | |
---|
[53bb72e] | 4373 | NOTES: |
---|
| 4374 | None. |
---|
[fd6dc8c8] | 4375 | |
---|
| 4376 | .. COMMENT: === CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER === |
---|
| 4377 | |
---|
[9aafb39] | 4378 | .. _Enable /dev/null Device Driver: |
---|
[6c56401] | 4379 | .. index:: CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER |
---|
| 4380 | .. index:: /dev/null |
---|
[9aafb39] | 4381 | |
---|
[fd6dc8c8] | 4382 | Enable /dev/null Device Driver |
---|
| 4383 | ------------------------------ |
---|
| 4384 | |
---|
[53bb72e] | 4385 | CONSTANT: |
---|
[fd6dc8c8] | 4386 | ``CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER`` |
---|
| 4387 | |
---|
[53bb72e] | 4388 | DATA TYPE: |
---|
[fd6dc8c8] | 4389 | Boolean feature macro. |
---|
| 4390 | |
---|
[53bb72e] | 4391 | RANGE: |
---|
[fd6dc8c8] | 4392 | Defined or undefined. |
---|
| 4393 | |
---|
[53bb72e] | 4394 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4395 | This is not defined by default. |
---|
| 4396 | |
---|
[53bb72e] | 4397 | DESCRIPTION: |
---|
| 4398 | This configuration variable is specified to enable ``/dev/null`` device driver. |
---|
[fd6dc8c8] | 4399 | |
---|
[53bb72e] | 4400 | NOTES: |
---|
| 4401 | This device driver is supported by all BSPs. |
---|
[fd6dc8c8] | 4402 | |
---|
| 4403 | .. COMMENT: === CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER === |
---|
| 4404 | |
---|
[9aafb39] | 4405 | .. _Enable /dev/zero Device Driver: |
---|
[6c56401] | 4406 | .. index:: CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER |
---|
| 4407 | .. index:: /dev/zero |
---|
[9aafb39] | 4408 | |
---|
[fd6dc8c8] | 4409 | Enable /dev/zero Device Driver |
---|
| 4410 | ------------------------------ |
---|
| 4411 | |
---|
[53bb72e] | 4412 | CONSTANT: |
---|
[fd6dc8c8] | 4413 | ``CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER`` |
---|
| 4414 | |
---|
[53bb72e] | 4415 | DATA TYPE: |
---|
[fd6dc8c8] | 4416 | Boolean feature macro. |
---|
| 4417 | |
---|
[53bb72e] | 4418 | RANGE: |
---|
[fd6dc8c8] | 4419 | Defined or undefined. |
---|
| 4420 | |
---|
[53bb72e] | 4421 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4422 | This is not defined by default. |
---|
| 4423 | |
---|
[53bb72e] | 4424 | DESCRIPTION: |
---|
| 4425 | This configuration variable is specified to enable ``/dev/zero`` device driver. |
---|
[fd6dc8c8] | 4426 | |
---|
[53bb72e] | 4427 | NOTES: |
---|
| 4428 | This device driver is supported by all BSPs. |
---|
[fd6dc8c8] | 4429 | |
---|
| 4430 | .. COMMENT: === CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE === |
---|
| 4431 | |
---|
[9aafb39] | 4432 | .. _Specifying Application Defined Device Driver Table: |
---|
[6c56401] | 4433 | .. index:: CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE |
---|
[9aafb39] | 4434 | |
---|
[fd6dc8c8] | 4435 | Specifying Application Defined Device Driver Table |
---|
| 4436 | -------------------------------------------------- |
---|
| 4437 | |
---|
[53bb72e] | 4438 | CONSTANT: |
---|
[fd6dc8c8] | 4439 | ``CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE`` |
---|
| 4440 | |
---|
[53bb72e] | 4441 | DATA TYPE: |
---|
[fd6dc8c8] | 4442 | Boolean feature macro. |
---|
| 4443 | |
---|
[53bb72e] | 4444 | RANGE: |
---|
[fd6dc8c8] | 4445 | Defined or undefined. |
---|
| 4446 | |
---|
[53bb72e] | 4447 | DEFAULT VALUE: |
---|
[c9aaf31] | 4448 | This is not defined by default, indicating the ``<rtems/confdefs.h>`` is |
---|
| 4449 | providing the device driver table. |
---|
[fd6dc8c8] | 4450 | |
---|
[53bb72e] | 4451 | DESCRIPTION: |
---|
| 4452 | ``CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE`` is defined if the application |
---|
| 4453 | wishes to provide their own Device Driver Table. |
---|
[fd6dc8c8] | 4454 | |
---|
[53bb72e] | 4455 | The table must be an array of ``rtems_driver_address_table`` entries |
---|
| 4456 | named`` _IO_Driver_address_table``. The application must also provide a |
---|
| 4457 | const variable ``_IO_Number_of_drivers`` of type ``size_t`` indicating the |
---|
| 4458 | number of entries in the ``_IO_Driver_address_table``. |
---|
[fd6dc8c8] | 4459 | |
---|
[53bb72e] | 4460 | NOTES: |
---|
| 4461 | It is expected that there the application would only rarely need to do this. |
---|
[fd6dc8c8] | 4462 | |
---|
| 4463 | .. COMMENT: === Multiprocessing Configuration === |
---|
| 4464 | |
---|
| 4465 | Multiprocessing Configuration |
---|
| 4466 | ============================= |
---|
| 4467 | |
---|
| 4468 | This section defines the multiprocessing related system configuration |
---|
[c9aaf31] | 4469 | parameters supported by ``<rtems/confdefs.h>``. They are only used if the |
---|
| 4470 | Multiprocessing Support (distinct from the SMP support) is enabled at configure |
---|
| 4471 | time using the ``--enable-multiprocessing`` option. |
---|
[fd6dc8c8] | 4472 | |
---|
[c9aaf31] | 4473 | Additionally, this class of Configuration Constants are only applicable if |
---|
| 4474 | ``CONFIGURE_MP_APPLICATION`` is defined. |
---|
[fd6dc8c8] | 4475 | |
---|
| 4476 | .. COMMENT: === CONFIGURE_MP_APPLICATION === |
---|
| 4477 | |
---|
[9aafb39] | 4478 | .. _Specify Application Will Use Multiprocessing: |
---|
[6c56401] | 4479 | .. index:: CONFIGURE_MP_APPLICATION |
---|
[9aafb39] | 4480 | |
---|
[fd6dc8c8] | 4481 | Specify Application Will Use Multiprocessing |
---|
| 4482 | -------------------------------------------- |
---|
| 4483 | |
---|
[53bb72e] | 4484 | CONSTANT: |
---|
[fd6dc8c8] | 4485 | ``CONFIGURE_MP_APPLICATION`` |
---|
| 4486 | |
---|
[53bb72e] | 4487 | DATA TYPE: |
---|
[fd6dc8c8] | 4488 | Boolean feature macro. |
---|
| 4489 | |
---|
[53bb72e] | 4490 | RANGE: |
---|
[fd6dc8c8] | 4491 | Defined or undefined. |
---|
| 4492 | |
---|
[53bb72e] | 4493 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4494 | This is not defined by default. |
---|
| 4495 | |
---|
[53bb72e] | 4496 | DESCRIPTION: |
---|
| 4497 | This configuration parameter must be defined to indicate that the |
---|
| 4498 | application intends to be part of a multiprocessing |
---|
| 4499 | configuration. Additional configuration parameters are assumed to be |
---|
| 4500 | provided. |
---|
[fd6dc8c8] | 4501 | |
---|
[53bb72e] | 4502 | NOTES: |
---|
| 4503 | This has no impact unless RTEMS was configured and built using the |
---|
| 4504 | ``--enable-multiprocessing`` option. |
---|
[fd6dc8c8] | 4505 | |
---|
| 4506 | .. COMMENT: === CONFIGURE_MP_NODE_NUMBER === |
---|
| 4507 | |
---|
[9aafb39] | 4508 | .. _Configure Node Number in Multiprocessor Configuration: |
---|
[6c56401] | 4509 | .. index:: CONFIGURE_MP_NODE_NUMBER |
---|
[9aafb39] | 4510 | |
---|
[fd6dc8c8] | 4511 | Configure Node Number in Multiprocessor Configuration |
---|
| 4512 | ----------------------------------------------------- |
---|
| 4513 | |
---|
[53bb72e] | 4514 | CONSTANT: |
---|
[fd6dc8c8] | 4515 | ``CONFIGURE_MP_NODE_NUMBER`` |
---|
| 4516 | |
---|
[53bb72e] | 4517 | DATA TYPE: |
---|
[fd6dc8c8] | 4518 | Unsigned integer (``uint32_t``). |
---|
| 4519 | |
---|
[53bb72e] | 4520 | RANGE: |
---|
[fd6dc8c8] | 4521 | Positive. |
---|
| 4522 | |
---|
[53bb72e] | 4523 | DEFAULT VALUE: |
---|
[c9aaf31] | 4524 | The default value is ``NODE_NUMBER``, which is assumed to be set by the |
---|
| 4525 | compilation environment. |
---|
[fd6dc8c8] | 4526 | |
---|
[53bb72e] | 4527 | DESCRIPTION: |
---|
| 4528 | ``CONFIGURE_MP_NODE_NUMBER`` is the node number of this node in a |
---|
| 4529 | multiprocessor system. |
---|
[fd6dc8c8] | 4530 | |
---|
[53bb72e] | 4531 | NOTES: |
---|
| 4532 | In the RTEMS Multiprocessing Test Suite, the node number is derived from |
---|
| 4533 | the Makefile variable ``NODE_NUMBER``. The same code is compiled with the |
---|
| 4534 | ``NODE_NUMBER`` set to different values. The test programs behave |
---|
| 4535 | differently based upon their node number. |
---|
[fd6dc8c8] | 4536 | |
---|
| 4537 | .. COMMENT: === CONFIGURE_MP_MAXIMUM_NODES === |
---|
| 4538 | |
---|
[9aafb39] | 4539 | .. _Configure Maximum Node in Multiprocessor Configuration: |
---|
[6c56401] | 4540 | .. index:: CONFIGURE_MP_MAXIMUM_NODES |
---|
[9aafb39] | 4541 | |
---|
[fd6dc8c8] | 4542 | Configure Maximum Node in Multiprocessor Configuration |
---|
| 4543 | ------------------------------------------------------ |
---|
| 4544 | |
---|
[53bb72e] | 4545 | CONSTANT: |
---|
[fd6dc8c8] | 4546 | ``CONFIGURE_MP_MAXIMUM_NODES`` |
---|
| 4547 | |
---|
[53bb72e] | 4548 | DATA TYPE: |
---|
[fd6dc8c8] | 4549 | Unsigned integer (``uint32_t``). |
---|
| 4550 | |
---|
[53bb72e] | 4551 | RANGE: |
---|
[fd6dc8c8] | 4552 | Positive. |
---|
| 4553 | |
---|
[53bb72e] | 4554 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4555 | The default value is 2. |
---|
| 4556 | |
---|
[53bb72e] | 4557 | DESCRIPTION: |
---|
| 4558 | ``CONFIGURE_MP_MAXIMUM_NODES`` is the maximum number of nodes in a |
---|
| 4559 | multiprocessor system. |
---|
[fd6dc8c8] | 4560 | |
---|
[53bb72e] | 4561 | NOTES: |
---|
| 4562 | None. |
---|
[fd6dc8c8] | 4563 | |
---|
| 4564 | .. COMMENT: === CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS === |
---|
| 4565 | |
---|
[9aafb39] | 4566 | .. _Configure Maximum Global Objects in Multiprocessor Configuration: |
---|
[6c56401] | 4567 | .. index:: CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS |
---|
[9aafb39] | 4568 | |
---|
[fd6dc8c8] | 4569 | Configure Maximum Global Objects in Multiprocessor Configuration |
---|
| 4570 | ---------------------------------------------------------------- |
---|
| 4571 | |
---|
[53bb72e] | 4572 | CONSTANT: |
---|
[fd6dc8c8] | 4573 | ``CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS`` |
---|
| 4574 | |
---|
[53bb72e] | 4575 | DATA TYPE: |
---|
[fd6dc8c8] | 4576 | Unsigned integer (``uint32_t``). |
---|
| 4577 | |
---|
[53bb72e] | 4578 | RANGE: |
---|
[fd6dc8c8] | 4579 | Positive. |
---|
| 4580 | |
---|
[53bb72e] | 4581 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4582 | The default value is 32. |
---|
| 4583 | |
---|
[53bb72e] | 4584 | DESCRIPTION: |
---|
| 4585 | ``CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS`` is the maximum number of |
---|
| 4586 | concurrently active global objects in a multiprocessor system. |
---|
[fd6dc8c8] | 4587 | |
---|
[53bb72e] | 4588 | NOTES: |
---|
| 4589 | This value corresponds to the total number of objects which can be created |
---|
| 4590 | with the ``RTEMS_GLOBAL`` attribute. |
---|
[fd6dc8c8] | 4591 | |
---|
| 4592 | .. COMMENT: === CONFIGURE_MP_MAXIMUM_PROXIES === |
---|
| 4593 | |
---|
[9aafb39] | 4594 | .. _Configure Maximum Proxies in Multiprocessor Configuration: |
---|
[6c56401] | 4595 | .. index:: CONFIGURE_MP_MAXIMUM_PROXIES |
---|
[9aafb39] | 4596 | |
---|
[fd6dc8c8] | 4597 | Configure Maximum Proxies in Multiprocessor Configuration |
---|
| 4598 | --------------------------------------------------------- |
---|
| 4599 | |
---|
[53bb72e] | 4600 | CONSTANT: |
---|
[fd6dc8c8] | 4601 | ``CONFIGURE_MP_MAXIMUM_PROXIES`` |
---|
| 4602 | |
---|
[53bb72e] | 4603 | DATA TYPE: |
---|
[fd6dc8c8] | 4604 | Unsigned integer (``uint32_t``). |
---|
| 4605 | |
---|
[53bb72e] | 4606 | RANGE: |
---|
[fd6dc8c8] | 4607 | Undefined or positive. |
---|
| 4608 | |
---|
[53bb72e] | 4609 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4610 | The default value is 32. |
---|
| 4611 | |
---|
[53bb72e] | 4612 | DESCRIPTION: |
---|
| 4613 | ``CONFIGURE_MP_MAXIMUM_PROXIES`` is the maximum number of concurrently |
---|
| 4614 | active thread/task proxies on this node in a multiprocessor system. |
---|
[fd6dc8c8] | 4615 | |
---|
[53bb72e] | 4616 | NOTES: |
---|
| 4617 | Since a proxy is used to represent a remote task/thread which is blocking |
---|
| 4618 | on this node. This configuration parameter reflects the maximum number of |
---|
| 4619 | remote tasks/threads which can be blocked on objects on this node. |
---|
[fd6dc8c8] | 4620 | |
---|
| 4621 | .. COMMENT: XXX - add xref to proxy discussion in MP chapter |
---|
| 4622 | |
---|
| 4623 | .. COMMENT: === CONFIGURE_MP_MPCI_TABLE_POINTER === |
---|
| 4624 | |
---|
[9aafb39] | 4625 | .. _Configure MPCI in Multiprocessor Configuration: |
---|
[6c56401] | 4626 | .. index:: CONFIGURE_MP_MPCI_TABLE_POINTER |
---|
[9aafb39] | 4627 | |
---|
[fd6dc8c8] | 4628 | Configure MPCI in Multiprocessor Configuration |
---|
| 4629 | ---------------------------------------------- |
---|
| 4630 | |
---|
[53bb72e] | 4631 | CONSTANT: |
---|
[fd6dc8c8] | 4632 | ``CONFIGURE_MP_MPCI_TABLE_POINTER`` |
---|
| 4633 | |
---|
[53bb72e] | 4634 | DATA TYPE: |
---|
[fd6dc8c8] | 4635 | pointer to ``rtems_mpci_table`` |
---|
| 4636 | |
---|
[53bb72e] | 4637 | RANGE: |
---|
[fd6dc8c8] | 4638 | undefined or valid pointer |
---|
| 4639 | |
---|
[53bb72e] | 4640 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4641 | This is not defined by default. |
---|
| 4642 | |
---|
[53bb72e] | 4643 | DESCRIPTION: |
---|
| 4644 | ``CONFIGURE_MP_MPCI_TABLE_POINTER`` is the pointer to the MPCI |
---|
| 4645 | Configuration Table. The default value of this field is``&MPCI_table``. |
---|
[fd6dc8c8] | 4646 | |
---|
[53bb72e] | 4647 | NOTES: |
---|
| 4648 | RTEMS provides a Shared Memory MPCI Device Driver which can be used on any |
---|
| 4649 | Multiprocessor System assuming the BSP provides the proper set of |
---|
| 4650 | supporting methods. |
---|
[fd6dc8c8] | 4651 | |
---|
| 4652 | .. COMMENT: === CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE === |
---|
| 4653 | |
---|
[9aafb39] | 4654 | .. _Do Not Generate Multiprocessor Configuration Table: |
---|
[6c56401] | 4655 | .. index:: CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE |
---|
[9aafb39] | 4656 | |
---|
[fd6dc8c8] | 4657 | Do Not Generate Multiprocessor Configuration Table |
---|
| 4658 | -------------------------------------------------- |
---|
| 4659 | |
---|
[53bb72e] | 4660 | CONSTANT: |
---|
[fd6dc8c8] | 4661 | ``CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE`` |
---|
| 4662 | |
---|
[53bb72e] | 4663 | DATA TYPE: |
---|
[fd6dc8c8] | 4664 | Boolean feature macro. |
---|
| 4665 | |
---|
[53bb72e] | 4666 | RANGE: |
---|
[fd6dc8c8] | 4667 | Defined or undefined. |
---|
| 4668 | |
---|
[53bb72e] | 4669 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4670 | This is not defined by default. |
---|
| 4671 | |
---|
[53bb72e] | 4672 | DESCRIPTION: |
---|
| 4673 | ``CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE`` is defined if the application |
---|
| 4674 | wishes to provide their own Multiprocessing Configuration Table. The |
---|
| 4675 | generated table is named ``Multiprocessing_configuration``. |
---|
[fd6dc8c8] | 4676 | |
---|
[53bb72e] | 4677 | NOTES: |
---|
| 4678 | This is a configuration parameter which is very unlikely to be used by an |
---|
| 4679 | application. If you find yourself wanting to use it in an application, |
---|
| 4680 | please reconsider and discuss this on the RTEMS Users mailing list. |
---|
[fd6dc8c8] | 4681 | |
---|
| 4682 | .. COMMENT: === Ada Tasks === |
---|
| 4683 | |
---|
| 4684 | Ada Tasks |
---|
| 4685 | ========= |
---|
| 4686 | |
---|
[c9aaf31] | 4687 | This section defines the system configuration parameters supported by |
---|
| 4688 | ``<rtems/confdefs.h>`` related to configuring RTEMS to support a task using Ada |
---|
| 4689 | tasking with GNAT/RTEMS. |
---|
[fd6dc8c8] | 4690 | |
---|
[c9aaf31] | 4691 | These configuration parameters are only available when RTEMS is built with the |
---|
| 4692 | ``--enable-ada`` configure option and the application specifies |
---|
| 4693 | ``CONFIGURE_GNAT_RTEMS``. |
---|
[fd6dc8c8] | 4694 | |
---|
[c9aaf31] | 4695 | Additionally RTEMS includes an Ada language binding to the Classic API which |
---|
| 4696 | has a test suite. This test suite is enabled only when``--enable-tests`` and |
---|
| 4697 | ``--enable-expada`` are specified on the configure command. |
---|
[fd6dc8c8] | 4698 | |
---|
| 4699 | .. COMMENT: === CONFIGURE_GNAT_RTEMS === |
---|
| 4700 | |
---|
[9aafb39] | 4701 | .. _Specify Application Includes Ada Code: |
---|
[6c56401] | 4702 | .. index:: CONFIGURE_GNAT_RTEMS |
---|
[9aafb39] | 4703 | |
---|
[fd6dc8c8] | 4704 | Specify Application Includes Ada Code |
---|
| 4705 | ------------------------------------- |
---|
| 4706 | |
---|
[53bb72e] | 4707 | CONSTANT: |
---|
[fd6dc8c8] | 4708 | ``CONFIGURE_GNAT_RTEMS`` |
---|
| 4709 | |
---|
[53bb72e] | 4710 | DATA TYPE: |
---|
[fd6dc8c8] | 4711 | Boolean feature macro. |
---|
| 4712 | |
---|
[53bb72e] | 4713 | RANGE: |
---|
[fd6dc8c8] | 4714 | Defined or undefined. |
---|
| 4715 | |
---|
[53bb72e] | 4716 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4717 | This is not defined by default. |
---|
| 4718 | |
---|
[53bb72e] | 4719 | DESCRIPTION: |
---|
| 4720 | ``CONFIGURE_GNAT_RTEMS`` is defined to inform RTEMS that the GNAT Ada |
---|
| 4721 | run-time is to be used by the application. |
---|
[fd6dc8c8] | 4722 | |
---|
[53bb72e] | 4723 | NOTES: |
---|
| 4724 | This configuration parameter is critical as it makes``<rtems/confdefs.h>`` |
---|
| 4725 | configure the resources (POSIX API Threads, Mutexes, Condition Variables, |
---|
| 4726 | and Keys) used implicitly by the GNAT run-time. |
---|
[fd6dc8c8] | 4727 | |
---|
| 4728 | .. COMMENT: === CONFIGURE_MAXIMUM_ADA_TASKS === |
---|
| 4729 | |
---|
[9aafb39] | 4730 | .. _Specify the Maximum Number of Ada Tasks.: |
---|
[6c56401] | 4731 | .. index:: CONFIGURE_MAXIMUM_ADA_TASKS |
---|
[9aafb39] | 4732 | |
---|
[fd6dc8c8] | 4733 | Specify the Maximum Number of Ada Tasks. |
---|
| 4734 | ---------------------------------------- |
---|
| 4735 | |
---|
[53bb72e] | 4736 | CONSTANT: |
---|
[fd6dc8c8] | 4737 | ``CONFIGURE_MAXIMUM_ADA_TASKS`` |
---|
| 4738 | |
---|
[53bb72e] | 4739 | DATA TYPE: |
---|
[fd6dc8c8] | 4740 | Unsigned integer (``uint32_t``). |
---|
| 4741 | |
---|
[53bb72e] | 4742 | RANGE: |
---|
[fd6dc8c8] | 4743 | Undefined or positive. |
---|
| 4744 | |
---|
[53bb72e] | 4745 | DEFAULT VALUE: |
---|
[c9aaf31] | 4746 | If ``CONFIGURE_GNAT_RTEMS`` is defined, then the default value is 20, |
---|
| 4747 | otherwise the default value is 0. |
---|
[fd6dc8c8] | 4748 | |
---|
[53bb72e] | 4749 | DESCRIPTION: |
---|
| 4750 | ``CONFIGURE_MAXIMUM_ADA_TASKS`` is the number of Ada tasks that can be |
---|
| 4751 | concurrently active in the system. |
---|
[fd6dc8c8] | 4752 | |
---|
[53bb72e] | 4753 | NOTES: |
---|
| 4754 | None. |
---|
[fd6dc8c8] | 4755 | |
---|
| 4756 | .. COMMENT: === CONFIGURE_MAXIMUM_FAKE_ADA_TASKS === |
---|
| 4757 | |
---|
[9aafb39] | 4758 | .. _Specify the Maximum Fake Ada Tasks: |
---|
[6c56401] | 4759 | .. index:: CONFIGURE_MAXIMUM_FAKE_ADA_TASKS |
---|
[9aafb39] | 4760 | |
---|
[fd6dc8c8] | 4761 | Specify the Maximum Fake Ada Tasks |
---|
| 4762 | ---------------------------------- |
---|
| 4763 | |
---|
[53bb72e] | 4764 | CONSTANT: |
---|
[6c56401] | 4765 | ``CONFIGURE_MAXIMUM_FAKE_ADA_TASKS`` |
---|
[fd6dc8c8] | 4766 | |
---|
[53bb72e] | 4767 | DATA TYPE: |
---|
[fd6dc8c8] | 4768 | Unsigned integer (``uint32_t``). |
---|
| 4769 | |
---|
[53bb72e] | 4770 | RANGE: |
---|
[fd6dc8c8] | 4771 | Zero or positive. |
---|
| 4772 | |
---|
[53bb72e] | 4773 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4774 | The default value is 0. |
---|
| 4775 | |
---|
[53bb72e] | 4776 | DESCRIPTION: |
---|
| 4777 | ``CONFIGURE_MAXIMUM_FAKE_ADA_TASKS`` is the number of *fake* Ada tasks that |
---|
| 4778 | can be concurrently active in the system. A *fake* Ada task is a non-Ada |
---|
| 4779 | task that makes calls back into Ada code and thus implicitly uses the Ada |
---|
| 4780 | run-time. |
---|
[fd6dc8c8] | 4781 | |
---|
[53bb72e] | 4782 | NOTES: |
---|
| 4783 | None. |
---|
[fd6dc8c8] | 4784 | |
---|
| 4785 | .. COMMENT: === PCI Library === |
---|
| 4786 | |
---|
| 4787 | PCI Library |
---|
| 4788 | =========== |
---|
| 4789 | |
---|
[c9aaf31] | 4790 | This section defines the system configuration parameters supported by |
---|
| 4791 | ``rtems/confdefs.h`` related to configuring the PCI Library for RTEMS. |
---|
| 4792 | |
---|
| 4793 | The PCI Library startup behaviour can be configured in four different ways |
---|
| 4794 | depending on how ``CONFIGURE_PCI_CONFIG_LIB`` is defined: |
---|
| 4795 | |
---|
| 4796 | .. index:: PCI_LIB_AUTO |
---|
| 4797 | |
---|
| 4798 | ``PCI_LIB_AUTO`` |
---|
| 4799 | Used to enable the PCI auto configuration software. PCI will be automatically |
---|
| 4800 | probed, PCI buses enumerated, all devices and bridges will be initialized |
---|
| 4801 | using Plug & Play software routines. The PCI device tree will be populated |
---|
| 4802 | based on the PCI devices found in the system, PCI devices will be configured |
---|
| 4803 | by allocating address region resources automatically in PCI space according |
---|
| 4804 | to the BSP or host bridge driver set up. |
---|
| 4805 | |
---|
| 4806 | .. index:: PCI_LIB_READ |
---|
| 4807 | |
---|
| 4808 | ``PCI_LIB_READ`` |
---|
| 4809 | Used to enable the PCI read configuration software. The current PCI |
---|
| 4810 | configuration is read to create the RAM representation (the PCI device tree) |
---|
| 4811 | of the PCI devices present. PCI devices are assumed to already have been |
---|
| 4812 | initialized and PCI buses enumerated, it is therefore required that a BIOS or |
---|
| 4813 | a boot loader has set up configuration space prior to booting into RTEMS. |
---|
| 4814 | |
---|
| 4815 | .. index:: PCI_LIB_STATIC |
---|
| 4816 | |
---|
| 4817 | ``PCI_LIB_STATIC`` |
---|
| 4818 | Used to enable the PCI static configuration software. The user provides a PCI |
---|
| 4819 | tree with information how all PCI devices are to be configured at compile |
---|
| 4820 | time by linking in a custom ``struct pci_bus pci_hb`` tree. The static PCI |
---|
| 4821 | library will not probe PCI for devices, instead it will assume that all |
---|
| 4822 | devices defined by the user are present, it will enumerate the PCI buses and |
---|
| 4823 | configure all PCI devices in static configuration accordingly. Since probe |
---|
| 4824 | and allocation software is not needed the startup is faster, has smaller |
---|
| 4825 | footprint and does not require dynamic memory allocation. |
---|
| 4826 | |
---|
| 4827 | .. index:: PCI_LIB_PERIPHERAL |
---|
| 4828 | |
---|
| 4829 | ``PCI_LIB_PERIPHERAL`` |
---|
| 4830 | Used to enable the PCI peripheral configuration. It is similar to |
---|
| 4831 | ``PCI_LIB_STATIC``, but it will never write the configuration to the PCI |
---|
| 4832 | devices since PCI peripherals are not allowed to access PCI configuration |
---|
| 4833 | space. |
---|
| 4834 | |
---|
| 4835 | Note that selecting ``PCI_LIB_STATIC`` or ``PCI_LIB_PERIPHERAL`` but not |
---|
| 4836 | defining ``pci_hb`` will reuslt in link errors. Note also that in these modes |
---|
[fd6dc8c8] | 4837 | Plug & Play is not performed. |
---|
| 4838 | |
---|
| 4839 | .. COMMENT: === Go Tasks === |
---|
| 4840 | |
---|
| 4841 | Go Tasks |
---|
| 4842 | ======== |
---|
| 4843 | |
---|
| 4844 | .. COMMENT: === CONFIGURE_ENABLE_GO === |
---|
| 4845 | |
---|
[9aafb39] | 4846 | .. _Specify Application Includes Go Code: |
---|
[6c56401] | 4847 | .. index:: CONFIGURE_ENABLE_GO |
---|
[9aafb39] | 4848 | |
---|
[fd6dc8c8] | 4849 | Specify Application Includes Go Code |
---|
| 4850 | ------------------------------------ |
---|
| 4851 | |
---|
[53bb72e] | 4852 | CONSTANT: |
---|
[fd6dc8c8] | 4853 | ``CONFIGURE_ENABLE_GO`` |
---|
| 4854 | |
---|
[53bb72e] | 4855 | DATA TYPE: |
---|
[fd6dc8c8] | 4856 | Boolean feature macro. |
---|
| 4857 | |
---|
[53bb72e] | 4858 | RANGE: |
---|
[fd6dc8c8] | 4859 | Defined or undefined. |
---|
| 4860 | |
---|
[53bb72e] | 4861 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4862 | This is not defined by default. |
---|
| 4863 | |
---|
[53bb72e] | 4864 | DESCRIPTION: |
---|
| 4865 | ``CONFIGURE_ENABLE_GO`` is defined to inform RTEMS that the Go run-time is |
---|
| 4866 | to be used by the application. |
---|
[fd6dc8c8] | 4867 | |
---|
[53bb72e] | 4868 | NOTES: |
---|
| 4869 | The Go language support is experimental |
---|
[fd6dc8c8] | 4870 | |
---|
| 4871 | .. COMMENT: === CONFIGURE_MAXIMUM_GOROUTINES === |
---|
| 4872 | |
---|
[9aafb39] | 4873 | .. _Specify the maximum number of Go routines: |
---|
[6c56401] | 4874 | .. index:: CONFIGURE_MAXIMUM_GOROUTINES |
---|
[9aafb39] | 4875 | |
---|
[fd6dc8c8] | 4876 | Specify the maximum number of Go routines |
---|
| 4877 | ----------------------------------------- |
---|
| 4878 | |
---|
[53bb72e] | 4879 | CONSTANT: |
---|
[fd6dc8c8] | 4880 | ``CONFIGURE_MAXIMUM_GOROUTINES`` |
---|
| 4881 | |
---|
[53bb72e] | 4882 | DATA TYPE: |
---|
[fd6dc8c8] | 4883 | Unsigned integer (``uint32_t``). |
---|
| 4884 | |
---|
[53bb72e] | 4885 | RANGE: |
---|
[fd6dc8c8] | 4886 | Zero or positive. |
---|
| 4887 | |
---|
[53bb72e] | 4888 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4889 | The default value is 400 |
---|
| 4890 | |
---|
[53bb72e] | 4891 | DESCRIPTION: |
---|
| 4892 | ``CONFIGURE_MAXIMUM_GOROUTINES`` is defined to specify the maximum number |
---|
| 4893 | of Go routines. |
---|
[fd6dc8c8] | 4894 | |
---|
[53bb72e] | 4895 | NOTES: |
---|
| 4896 | The Go language support is experimental |
---|
[fd6dc8c8] | 4897 | |
---|
| 4898 | .. COMMENT: === CONFIGURE_MAXIMUM_GO_CHANNELS === |
---|
| 4899 | |
---|
[9aafb39] | 4900 | .. _Specify the maximum number of Go Channels: |
---|
[6c56401] | 4901 | .. index:: CONFIGURE_MAXIMUM_GO_CHANNELS |
---|
[9aafb39] | 4902 | |
---|
[fd6dc8c8] | 4903 | Specify the maximum number of Go Channels |
---|
| 4904 | ----------------------------------------- |
---|
| 4905 | |
---|
[53bb72e] | 4906 | CONSTANT: |
---|
[fd6dc8c8] | 4907 | ``CONFIGURE_MAXIMUM_GO_CHANNELS`` |
---|
| 4908 | |
---|
[53bb72e] | 4909 | DATA TYPE: |
---|
[fd6dc8c8] | 4910 | Unsigned integer (``uint32_t``). |
---|
| 4911 | |
---|
[53bb72e] | 4912 | RANGE: |
---|
[fd6dc8c8] | 4913 | Zero or positive. |
---|
| 4914 | |
---|
[53bb72e] | 4915 | DEFAULT VALUE: |
---|
[fd6dc8c8] | 4916 | The default value is 500 |
---|
| 4917 | |
---|
[53bb72e] | 4918 | DESCRIPTION: |
---|
| 4919 | ``CONFIGURE_MAXIMUM_GO_CHANNELS`` is defined to specify the maximum number |
---|
| 4920 | of Go channels. |
---|
[fd6dc8c8] | 4921 | |
---|
[53bb72e] | 4922 | NOTES: |
---|
| 4923 | The Go language support is experimental |
---|
[d8f7bdc] | 4924 | |
---|
| 4925 | Obsolete Configuration Options |
---|
| 4926 | ============================== |
---|
[6c56401] | 4927 | .. index:: CONFIGURE_BDBUF_BUFFER_COUNT |
---|
[d8f7bdc] | 4928 | |
---|
| 4929 | CONFIGURE_BDBUF_BUFFER_COUNT |
---|
| 4930 | ---------------------------- |
---|
| 4931 | |
---|
[60a6d6e] | 4932 | This configuration option was introduced in RTEMS 4.7.0 and is obsolete since |
---|
| 4933 | RTEMS 4.10.0. |
---|
[6c56401] | 4934 | .. index:: CONFIGURE_BDBUF_BUFFER_SIZE |
---|
[d8f7bdc] | 4935 | |
---|
| 4936 | CONFIGURE_BDBUF_BUFFER_SIZE |
---|
| 4937 | --------------------------- |
---|
| 4938 | |
---|
[60a6d6e] | 4939 | This configuration option was introduced in RTEMS 4.7.0 and is obsolete since |
---|
| 4940 | RTEMS 4.10.0. |
---|
[6c56401] | 4941 | .. index:: CONFIGURE_DISABLE_CLASSIC_API_NOTEPADS |
---|
[d8f7bdc] | 4942 | |
---|
| 4943 | CONFIGURE_DISABLE_CLASSIC_API_NOTEPADS |
---|
| 4944 | -------------------------------------- |
---|
| 4945 | |
---|
[60a6d6e] | 4946 | This configuration option was introduced in RTEMS 4.9.0 and is obsolete since |
---|
| 4947 | RTEMS 5.1. |
---|
[6c56401] | 4948 | .. index:: CONFIGURE_HAS_OWN_BDBUF_TABLE |
---|
[d8f7bdc] | 4949 | |
---|
| 4950 | CONFIGURE_HAS_OWN_BDBUF_TABLE |
---|
| 4951 | ----------------------------- |
---|
| 4952 | |
---|
[60a6d6e] | 4953 | This configuration option was introduced in RTEMS 4.7.0 and is obsolete since |
---|
| 4954 | RTEMS 4.10.0. |
---|
[6c56401] | 4955 | .. index:: CONFIGURE_MAXIMUM_POSIX_BARRIERS |
---|
[d8f7bdc] | 4956 | |
---|
| 4957 | CONFIGURE_MAXIMUM_POSIX_BARRIERS |
---|
| 4958 | -------------------------------- |
---|
| 4959 | |
---|
[60a6d6e] | 4960 | This configuration option is obsolete since RTEMS 5.1. |
---|
[6c56401] | 4961 | .. index:: CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES |
---|
[d8f7bdc] | 4962 | |
---|
| 4963 | CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES |
---|
| 4964 | ------------------------------------------- |
---|
| 4965 | |
---|
[60a6d6e] | 4966 | This configuration option is obsolete since RTEMS 5.1. |
---|
[6c56401] | 4967 | .. index:: CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUE_DESCRIPTORS |
---|
[d8f7bdc] | 4968 | |
---|
| 4969 | CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUE_DESCRIPTORS |
---|
| 4970 | ------------------------------- |
---|
| 4971 | |
---|
[60a6d6e] | 4972 | This configuration option was introduced in RTEMS 4.10.0 and is obsolete since |
---|
| 4973 | RTEMS 5.1. |
---|
[6c56401] | 4974 | .. index:: CONFIGURE_MAXIMUM_POSIX_MUTEXES |
---|
[d8f7bdc] | 4975 | |
---|
| 4976 | CONFIGURE_MAXIMUM_POSIX_MUTEXES |
---|
| 4977 | ------------------------------- |
---|
| 4978 | |
---|
[60a6d6e] | 4979 | This configuration option is obsolete since RTEMS 5.1. |
---|
[6c56401] | 4980 | .. index:: CONFIGURE_MAXIMUM_POSIX_RWLOCKS |
---|
[d8f7bdc] | 4981 | |
---|
| 4982 | CONFIGURE_MAXIMUM_POSIX_RWLOCKS |
---|
| 4983 | ------------------------------- |
---|
| 4984 | |
---|
[60a6d6e] | 4985 | This configuration option is obsolete since RTEMS 5.1. |
---|
[6c56401] | 4986 | .. index:: CONFIGURE_MAXIMUM_POSIX_SPINLOCKS |
---|
[d8f7bdc] | 4987 | |
---|
| 4988 | CONFIGURE_MAXIMUM_POSIX_SPINLOCKS |
---|
| 4989 | --------------------------------- |
---|
| 4990 | |
---|
[60a6d6e] | 4991 | This configuration option is obsolete since RTEMS 5.1. |
---|
[6c56401] | 4992 | .. index:: CONFIGURE_SMP_APPLICATION |
---|
[d8f7bdc] | 4993 | |
---|
| 4994 | CONFIGURE_SMP_APPLICATION |
---|
| 4995 | ------------------------- |
---|
| 4996 | |
---|
[60a6d6e] | 4997 | This configuration option was introduced in RTEMS 4.11.0 and is obsolete since |
---|
| 4998 | RTEMS 5.1. |
---|
[6c56401] | 4999 | .. index:: CONFIGURE_SMP_MAXIMUM_PROCESSORS |
---|
[d8f7bdc] | 5000 | |
---|
| 5001 | CONFIGURE_SMP_MAXIMUM_PROCESSORS |
---|
| 5002 | -------------------------------- |
---|
| 5003 | |
---|
[60a6d6e] | 5004 | This configuration option was introduced in RTEMS 4.11.0 and is obsolete since |
---|
| 5005 | RTEMS 5.1. See also :ref:`CONFIGURE_MAXIMUM_PROCESSORS`. |
---|