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