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