source: rtems-docs/c-user/config/index.rst @ 4d74cbd

5
Last change on this file since 4d74cbd was 4d74cbd, checked in by Sebastian Huber <sebastian.huber@…>, on 03/09/20 at 07:50:59

c-user: Move "Message Queue Buffer Configuration"

Update #3836.

  • Property mode set to 100644
File size: 75.3 KB
Line 
1.. SPDX-License-Identifier: CC-BY-SA-4.0
2
3.. Copyright (C) 2010 Gedare Bloom
4.. Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR)
5
6.. index:: configuring a system
7.. _Configuring a System:
8
9Configuring a System
10********************
11
12.. toctree::
13
14    intro
15    general
16    classic-api
17    classic-init-task
18    posix-api
19    posix-init-thread
20    task-stack-alloc
21    msg-queue-buffer
22
23Filesystem Configuration
24========================
25
26By default, the In-Memory Filesystem (IMFS) is used as the base filesystem (also
27known as root filesystem).  In order to save some memory for your application,
28you can disable the filesystem support with the
29:ref:`CONFIGURE_APPLICATION_DISABLE_FILESYSTEM` configuration option.
30Alternatively, you can strip down the features of the base filesystem with the
31:ref:`CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM` and
32:ref:`CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM` configuration options.  These
33three configuration options are mutually exclusive.  They are intended for an
34advanced application configuration.
35
36Features of the IMFS can be disabled and enabled with the following
37configuration options:
38
39* :ref:`CONFIGURE_IMFS_DISABLE_CHMOD`
40
41* :ref:`CONFIGURE_IMFS_DISABLE_CHOWN`
42
43* :ref:`CONFIGURE_IMFS_DISABLE_LINK`
44
45* :ref:`CONFIGURE_IMFS_DISABLE_MKNOD`
46
47* :ref:`CONFIGURE_IMFS_DISABLE_MKNOD_FILE`
48
49* :ref:`CONFIGURE_IMFS_DISABLE_MOUNT`
50
51* :ref:`CONFIGURE_IMFS_DISABLE_READDIR`
52
53* :ref:`CONFIGURE_IMFS_DISABLE_READLINK`
54
55* :ref:`CONFIGURE_IMFS_DISABLE_RENAME`
56
57* :ref:`CONFIGURE_IMFS_DISABLE_RMNOD`
58
59* :ref:`CONFIGURE_IMFS_DISABLE_SYMLINK`
60
61* :ref:`CONFIGURE_IMFS_DISABLE_UNMOUNT`
62
63* :ref:`CONFIGURE_IMFS_DISABLE_UTIME`
64
65* :ref:`CONFIGURE_IMFS_ENABLE_MKFIFO`
66
67.. index:: CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
68
69.. _CONFIGURE_APPLICATION_DISABLE_FILESYSTEM:
70
71CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
72----------------------------------------
73
74CONSTANT:
75    ``CONFIGURE_APPLICATION_DISABLE_FILESYSTEM``
76
77DATA TYPE:
78    Boolean feature macro.
79
80RANGE:
81    Defined or undefined.
82
83DEFAULT VALUE:
84    This is not defined by default. If no other root file system configuration
85    parameters are specified, the IMFS will be used as the root file system.
86
87DESCRIPTION:
88    This configuration parameter is defined if the application dose not intend
89    to use any kind of filesystem support. This include the device
90    infrastructure necessary to support ``printf()``.
91
92NOTES:
93    None.
94
95.. index:: CONFIGURE_IMFS_ENABLE_MKFIFO
96
97.. _CONFIGURE_IMFS_ENABLE_MKFIFO:
98
99CONFIGURE_IMFS_ENABLE_MKFIFO
100----------------------------
101
102CONSTANT:
103    ``CONFIGURE_IMFS_ENABLE_MKFIFO``
104
105DATA TYPE:
106    Boolean feature macro.
107
108RANGE:
109    Defined or undefined.
110
111DEFAULT VALUE:
112    This is not defined by default.
113
114DESCRIPTION:
115    In case this configuration option is defined, then the support to make FIFOs
116    is enabled in the root IMFS.
117
118.. index:: CONFIGURE_IMFS_DISABLE_CHMOD
119
120.. _CONFIGURE_IMFS_DISABLE_CHMOD:
121
122CONFIGURE_IMFS_DISABLE_CHMOD
123----------------------------
124
125CONSTANT:
126    ``CONFIGURE_IMFS_DISABLE_CHMOD``
127
128DATA TYPE:
129    Boolean feature macro.
130
131RANGE:
132    Defined or undefined.
133
134DEFAULT VALUE:
135    This is not defined by default.
136
137DESCRIPTION:
138    In case this configuration option is defined, then the support to change
139    the mode is disabled in the root IMFS.
140
141.. index:: CONFIGURE_IMFS_DISABLE_CHOWN
142
143.. _CONFIGURE_IMFS_DISABLE_CHOWN:
144
145CONFIGURE_IMFS_DISABLE_CHOWN
146----------------------------
147
148CONSTANT:
149    ``CONFIGURE_IMFS_DISABLE_CHOWN``
150
151DATA TYPE:
152    Boolean feature macro.
153
154RANGE:
155    Defined or undefined.
156
157DEFAULT VALUE:
158    This is not defined by default.
159
160DESCRIPTION:
161    In case this configuration option is defined, then the support to change
162    the owner is disabled in the root IMFS.
163
164.. index:: CONFIGURE_IMFS_DISABLE_LINK
165
166.. _CONFIGURE_IMFS_DISABLE_LINK:
167
168CONFIGURE_IMFS_DISABLE_LINK
169---------------------------
170
171CONSTANT:
172    ``CONFIGURE_IMFS_DISABLE_LINK``
173
174DATA TYPE:
175    Boolean feature macro.
176
177RANGE:
178    Defined or undefined.
179
180DEFAULT VALUE:
181    This is not defined by default.
182
183DESCRIPTION:
184    In case this configuration option is defined, then the support to create
185    hard links is disabled in the root IMFS.
186
187.. index:: CONFIGURE_IMFS_DISABLE_MKNOD
188
189.. _CONFIGURE_IMFS_DISABLE_MKNOD:
190
191CONFIGURE_IMFS_DISABLE_MKNOD
192----------------------------
193
194CONSTANT:
195    ``CONFIGURE_IMFS_DISABLE_MKNOD``
196
197DATA TYPE:
198    Boolean feature macro.
199
200RANGE:
201    Defined or undefined.
202
203DEFAULT VALUE:
204    This is not defined by default.
205
206DESCRIPTION:
207    In case this configuration option is defined, then the support to make
208    directories, devices, regular files and FIFOs is disabled in the root IMFS.
209
210.. index:: CONFIGURE_IMFS_DISABLE_MKNOD_FILE
211
212.. _CONFIGURE_IMFS_DISABLE_MKNOD_FILE:
213
214CONFIGURE_IMFS_DISABLE_MKNOD_FILE
215---------------------------------
216
217CONSTANT:
218    ``CONFIGURE_IMFS_DISABLE_MKNOD_FILE``
219
220DATA TYPE:
221    Boolean feature macro.
222
223RANGE:
224    Defined or undefined.
225
226DEFAULT VALUE:
227    This is not defined by default.
228
229DESCRIPTION:
230    In case this configuration option is defined, then the support to make
231    regular files is disabled in the root IMFS.
232
233.. index:: CONFIGURE_IMFS_DISABLE_MOUNT
234
235.. _CONFIGURE_IMFS_DISABLE_MOUNT:
236
237CONFIGURE_IMFS_DISABLE_MOUNT
238----------------------------
239
240CONSTANT:
241    ``CONFIGURE_IMFS_DISABLE_MOUNT``
242
243DATA TYPE:
244    Boolean feature macro.
245
246RANGE:
247    Defined or undefined.
248
249DEFAULT VALUE:
250    This is not defined by default.
251
252DESCRIPTION:
253    In case this configuration option is defined, then the support to mount
254    other file systems is disabled in the root IMFS.
255
256.. index:: CONFIGURE_IMFS_DISABLE_READDIR
257
258.. _CONFIGURE_IMFS_DISABLE_READDIR:
259
260CONFIGURE_IMFS_DISABLE_READDIR
261------------------------------
262
263CONSTANT:
264    ``CONFIGURE_IMFS_DISABLE_READDIR``
265
266DATA TYPE:
267    Boolean feature macro.
268
269RANGE:
270    Defined or undefined.
271
272DEFAULT VALUE:
273    This is not defined by default.
274
275DESCRIPTION:
276    In case this configuration option is defined, then the support to read a
277    directory is disabled in the root IMFS.  It is still possible to open nodes
278    in a directory.
279
280.. index:: CONFIGURE_IMFS_DISABLE_READLINK
281
282.. _CONFIGURE_IMFS_DISABLE_READLINK:
283
284CONFIGURE_IMFS_DISABLE_READLINK
285-------------------------------
286
287CONSTANT:
288    ``CONFIGURE_IMFS_DISABLE_READLINK``
289
290DATA TYPE:
291    Boolean feature macro.
292
293RANGE:
294    Defined or undefined.
295
296DEFAULT VALUE:
297    This is not defined by default.
298
299DESCRIPTION:
300    In case this configuration option is defined, then the support to read
301    symbolic links is disabled in the root IMFS.
302
303.. index:: CONFIGURE_IMFS_DISABLE_RENAME
304
305.. _CONFIGURE_IMFS_DISABLE_RENAME:
306
307CONFIGURE_IMFS_DISABLE_RENAME
308-----------------------------
309
310CONSTANT:
311    ``CONFIGURE_IMFS_DISABLE_RENAME``
312
313DATA TYPE:
314    Boolean feature macro.
315
316RANGE:
317    Defined or undefined.
318
319DEFAULT VALUE:
320    This is not defined by default.
321
322DESCRIPTION:
323    In case this configuration option is defined, then the support to rename
324    nodes is disabled in the root IMFS.
325
326.. index:: CONFIGURE_IMFS_DISABLE_RMNOD
327
328.. _CONFIGURE_IMFS_DISABLE_RMNOD:
329
330CONFIGURE_IMFS_DISABLE_RMNOD
331----------------------------
332
333CONSTANT:
334    ``CONFIGURE_IMFS_DISABLE_RMNOD``
335
336DATA TYPE:
337    Boolean feature macro.
338
339RANGE:
340    Defined or undefined.
341
342DEFAULT VALUE:
343    This is not defined by default.
344
345DESCRIPTION:
346    In case this configuration option is defined, then the support to remove
347    nodes is disabled in the root IMFS.
348
349.. index:: CONFIGURE_IMFS_DISABLE_SYMLINK
350
351.. _CONFIGURE_IMFS_DISABLE_SYMLINK:
352
353CONFIGURE_IMFS_DISABLE_SYMLINK
354------------------------------
355
356CONSTANT:
357    ``CONFIGURE_IMFS_DISABLE_SYMLINK``
358
359DATA TYPE:
360    Boolean feature macro.
361
362RANGE:
363    Defined or undefined.
364
365DEFAULT VALUE:
366    This is not defined by default.
367
368DESCRIPTION:
369    In case this configuration option is defined, then the support to create
370    symbolic links is disabled in the root IMFS.
371
372.. index:: CONFIGURE_IMFS_DISABLE_UNMOUNT
373
374.. _CONFIGURE_IMFS_DISABLE_UNMOUNT:
375
376CONFIGURE_IMFS_DISABLE_UNMOUNT
377------------------------------
378
379CONSTANT:
380    ``CONFIGURE_IMFS_DISABLE_UNMOUNT``
381
382DATA TYPE:
383    Boolean feature macro.
384
385RANGE:
386    Defined or undefined.
387
388DEFAULT VALUE:
389    This is not defined by default.
390
391DESCRIPTION:
392    In case this configuration option is defined, then the support to unmount
393    file systems is disabled in the root IMFS.
394
395.. index:: CONFIGURE_IMFS_DISABLE_UTIME
396
397.. _CONFIGURE_IMFS_DISABLE_UTIME:
398
399CONFIGURE_IMFS_DISABLE_UTIME
400----------------------------
401
402CONSTANT:
403    ``CONFIGURE_IMFS_DISABLE_UTIME``
404
405DATA TYPE:
406    Boolean feature macro.
407
408RANGE:
409    Defined or undefined.
410
411DEFAULT VALUE:
412    This is not defined by default.
413
414DESCRIPTION:
415    In case this configuration option is defined, then the support to change
416    times is disabled in the root IMFS.
417
418.. index:: CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK
419
420.. _CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK:
421
422CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK
423--------------------------------------
424
425CONSTANT:
426    ``CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK``
427
428DATA TYPE:
429    Boolean feature macro.
430
431RANGE:
432    Valid values for this configuration parameter are a power of two (2)
433    between 16 and 512 inclusive.  In other words, valid values are 16, 32, 64,
434    128, 256,and 512.
435
436DEFAULT VALUE:
437    The default IMFS block size is 128 bytes.
438
439DESCRIPTION:
440    This configuration parameter specifies the block size for in-memory files
441    managed by the IMFS. The configured block size has two impacts. The first
442    is the average amount of unused memory in the last block of each file. For
443    example, when the block size is 512, on average one-half of the last block
444    of each file will remain unused and the memory is wasted. In contrast, when
445    the block size is 16, the average unused memory per file is only 8
446    bytes. However, it requires more allocations for the same size file and
447    thus more overhead per block for the dynamic memory management.
448
449    Second, the block size has an impact on the maximum size file that can be
450    stored in the IMFS. With smaller block size, the maximum file size is
451    correspondingly smaller. The following shows the maximum file size possible
452    based on the configured block size:
453
454    - when the block size is 16 bytes, the maximum file size is 1,328 bytes.
455
456    - when the block size is 32 bytes, the maximum file size is 18,656 bytes.
457
458    - when the block size is 64 bytes, the maximum file size is 279,488 bytes.
459
460    - when the block size is 128 bytes, the maximum file size is 4,329,344 bytes.
461
462    - when the block size is 256 bytes, the maximum file size is 68,173,568 bytes.
463
464    - when the block size is 512 bytes, the maximum file size is 1,082,195,456
465      bytes.
466
467.. index:: CONFIGURE_MAXIMUM_DEVICES
468
469.. _CONFIGURE_MAXIMUM_DEVICES:
470
471CONFIGURE_MAXIMUM_DEVICES
472-------------------------
473
474CONSTANT:
475    ``CONFIGURE_MAXIMUM_DEVICES``
476
477DATA TYPE:
478    Unsigned integer (``uint32_t``).
479
480RANGE:
481    Positive.
482
483DEFAULT VALUE:
484    If ``BSP_MAXIMUM_DEVICES`` is defined, then the default value is
485    ``BSP_MAXIMUM_DEVICES``, otherwise the default value is 4.
486
487DESCRIPTION:
488    ``CONFIGURE_MAXIMUM_DEVICES`` is defined to the number of individual
489    devices that may be registered in the device file system (devFS).
490
491NOTES:
492    This option is specific to the device file system (devFS) and should not be
493    confused with the ``CONFIGURE_MAXIMUM_DRIVERS`` option.  This parameter
494    only impacts the devFS and thus is only used by ``<rtems/confdefs.h>`` when
495    ``CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM`` is specified.
496
497.. index:: CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM
498
499.. _CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM:
500
501CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM
502--------------------------------------
503
504CONSTANT:
505    ``CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM``
506
507DATA TYPE:
508    Boolean feature macro.
509
510RANGE:
511    Defined or undefined.
512
513DEFAULT VALUE:
514    This is not defined by default. If no other root file system configuration
515    parameters are specified, the IMFS will be used as the root file system.
516
517DESCRIPTION:
518    This configuration parameter is defined if the application wishes to use
519    the device-only filesytem as the root file system.
520
521NOTES:
522    The device-only filesystem supports only device nodes and is smaller in
523    executable code size than the full IMFS and miniIMFS.
524
525    The devFS is comparable in functionality to the pseudo-filesystem name
526    space provided before RTEMS release 4.5.0.
527
528.. index:: CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
529
530.. _CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM:
531
532CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
533-----------------------------------------
534
535CONSTANT:
536    ``CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM``
537
538DATA TYPE:
539    Boolean feature macro.
540
541RANGE:
542    Defined or undefined.
543
544DEFAULT VALUE:
545    This is not defined by default.
546
547DESCRIPTION:
548    In case this configuration option is defined, then the following
549    configuration options will be defined as well
550
551    - ``CONFIGURE_IMFS_DISABLE_CHMOD``,
552
553    - ``CONFIGURE_IMFS_DISABLE_CHOWN``,
554
555    - ``CONFIGURE_IMFS_DISABLE_UTIME``,
556
557    - ``CONFIGURE_IMFS_DISABLE_LINK``,
558
559    - ``CONFIGURE_IMFS_DISABLE_SYMLINK``,
560
561    - ``CONFIGURE_IMFS_DISABLE_READLINK``,
562
563    - ``CONFIGURE_IMFS_DISABLE_RENAME``, and
564
565    - ``CONFIGURE_IMFS_DISABLE_UNMOUNT``.
566
567Block Device Cache Configuration
568================================
569
570This section defines Block Device Cache (bdbuf) related configuration
571parameters.
572
573.. index:: CONFIGURE_APPLICATION_NEEDS_LIBBLOCK
574
575.. _CONFIGURE_APPLICATION_NEEDS_LIBBLOCK:
576
577CONFIGURE_APPLICATION_NEEDS_LIBBLOCK
578------------------------------------
579
580CONSTANT:
581    ``CONFIGURE_APPLICATION_NEEDS_LIBBLOCK``
582
583DATA TYPE:
584    Boolean feature macro.
585
586RANGE:
587    Defined or undefined.
588
589DEFAULT VALUE:
590    This is not defined by default.
591
592DESCRIPTION:
593    Provides a Block Device Cache configuration.
594
595NOTES:
596    Each option of the Block Device Cache configuration can be explicitly set
597    by the user with the configuration options below.  The Block Device Cache
598    is used for example by the RFS and DOSFS file systems.
599
600.. index:: CONFIGURE_BDBUF_CACHE_MEMORY_SIZE
601
602.. _CONFIGURE_BDBUF_CACHE_MEMORY_SIZE:
603
604CONFIGURE_BDBUF_CACHE_MEMORY_SIZE
605---------------------------------
606
607CONSTANT:
608    ``CONFIGURE_BDBUF_CACHE_MEMORY_SIZE``
609
610DATA TYPE:
611    Unsigned integer (``size_t``).
612
613RANGE:
614    Positive.
615
616DEFAULT VALUE:
617    The default value is 32768 bytes.
618
619DESCRIPTION:
620    Size of the cache memory in bytes.
621
622NOTES:
623    None.
624
625.. index:: CONFIGURE_BDBUF_BUFFER_MAX_SIZE
626
627.. _CONFIGURE_BDBUF_BUFFER_MAX_SIZE:
628
629CONFIGURE_BDBUF_BUFFER_MAX_SIZE
630-------------------------------
631
632CONSTANT:
633    ``CONFIGURE_BDBUF_BUFFER_MAX_SIZE``
634
635DATA TYPE:
636    Unsigned integer (``uint32_t``).
637
638RANGE:
639    It must be positive and an integral multiple of the buffer minimum size.
640
641DEFAULT VALUE:
642    The default value is 4096 bytes.
643
644DESCRIPTION:
645    Defines the maximum size of a buffer in bytes.
646
647NOTES:
648    None.
649
650.. index:: CONFIGURE_BDBUF_BUFFER_MIN_SIZE
651
652.. _CONFIGURE_BDBUF_BUFFER_MIN_SIZE:
653
654CONFIGURE_BDBUF_BUFFER_MIN_SIZE
655-------------------------------
656
657CONSTANT:
658    ``CONFIGURE_BDBUF_BUFFER_MIN_SIZE``
659
660DATA TYPE:
661    Unsigned integer (``uint32_t``).
662
663RANGE:
664    Positive.
665
666DEFAULT VALUE:
667    The default value is 512 bytes.
668
669DESCRIPTION:
670    Defines the minimum size of a buffer in bytes.
671
672NOTES:
673    None.
674
675.. index:: CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS
676
677.. _CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS:
678
679CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS
680-------------------------------------
681
682CONSTANT:
683    ``CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS``
684
685DATA TYPE:
686    Unsigned integer (``uint32_t``).
687
688RANGE:
689    Positive.
690
691DEFAULT VALUE:
692    The default value is 0.
693
694DESCRIPTION:
695    Defines the maximum blocks per read-ahead request.
696
697NOTES:
698    A value of 0 disables the read-ahead task (default).  The read-ahead task
699    will issue speculative read transfers if a sequential access pattern is
700    detected.  This can improve the performance on some systems.
701
702.. index:: CONFIGURE_BDBUF_MAX_WRITE_BLOCKS
703
704.. _CONFIGURE_BDBUF_MAX_WRITE_BLOCKS:
705
706CONFIGURE_BDBUF_MAX_WRITE_BLOCKS
707--------------------------------
708
709CONSTANT:
710    ``CONFIGURE_BDBUF_MAX_WRITE_BLOCKS``
711
712DATA TYPE:
713    Unsigned integer (``uint32_t``).
714
715RANGE:
716    Positive.
717
718DEFAULT VALUE:
719    The default value is 16.
720
721DESCRIPTION:
722    Defines the maximum blocks per write request.
723
724NOTES:
725    None.
726
727.. index:: CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY
728
729.. _CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY:
730
731CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY
732----------------------------------------
733
734CONSTANT:
735    ``CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY``
736
737DATA TYPE:
738    Task priority (``rtems_task_priority``).
739
740RANGE:
741    Valid task priority.
742
743DEFAULT VALUE:
744    The default value is 15.
745
746DESCRIPTION:
747    Defines the read-ahead task priority.
748
749NOTES:
750    None.
751
752.. index:: CONFIGURE_BDBUF_TASK_STACK_SIZE
753
754.. _CONFIGURE_BDBUF_TASK_STACK_SIZE:
755
756CONFIGURE_BDBUF_TASK_STACK_SIZE
757-------------------------------
758
759CONSTANT:
760    ``CONFIGURE_BDBUF_TASK_STACK_SIZE``
761
762DATA TYPE:
763    Unsigned integer (``size_t``).
764
765RANGE:
766    Zero or positive.
767
768DEFAULT VALUE:
769    The default value is RTEMS_MINIMUM_STACK_SIZE.
770
771DESCRIPTION:
772    Defines the task stack size of the Block Device Cache tasks in bytes.
773
774NOTES:
775    None.
776
777.. index:: CONFIGURE_SWAPOUT_BLOCK_HOLD
778
779.. _CONFIGURE_SWAPOUT_BLOCK_HOLD:
780
781CONFIGURE_SWAPOUT_BLOCK_HOLD
782----------------------------
783
784CONSTANT:
785    ``CONFIGURE_SWAPOUT_BLOCK_HOLD``
786
787DATA TYPE:
788    Unsigned integer (``uint32_t``).
789
790RANGE:
791    Positive.
792
793DEFAULT VALUE:
794    The default value is 1000 milliseconds.
795
796DESCRIPTION:
797    Defines the swapout task maximum block hold time in milliseconds.
798
799NOTES:
800    None.
801
802.. index:: CONFIGURE_SWAPOUT_SWAP_PERIOD
803
804.. _CONFIGURE_SWAPOUT_SWAP_PERIOD:
805
806CONFIGURE_SWAPOUT_SWAP_PERIOD
807-----------------------------
808
809CONSTANT:
810    ``CONFIGURE_SWAPOUT_SWAP_PERIOD``
811
812DATA TYPE:
813    Unsigned integer (``uint32_t``).
814
815RANGE:
816    Positive.
817
818DEFAULT VALUE:
819    The default value is 250 milliseconds.
820
821DESCRIPTION:
822    Defines the swapout task swap period in milliseconds.
823
824NOTES:
825    None.
826
827.. index:: CONFIGURE_SWAPOUT_TASK_PRIORITY
828
829.. _CONFIGURE_SWAPOUT_TASK_PRIORITY:
830
831CONFIGURE_SWAPOUT_TASK_PRIORITY
832-------------------------------
833
834CONSTANT:
835    ``CONFIGURE_SWAPOUT_TASK_PRIORITY``
836
837DATA TYPE:
838    Task priority (``rtems_task_priority``).
839
840RANGE:
841    Valid task priority.
842
843DEFAULT VALUE:
844    The default value is 15.
845
846DESCRIPTION:
847    Defines the swapout task priority.
848
849NOTES:
850    None.
851
852.. index:: CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY
853
854.. _CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY:
855
856CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY
857--------------------------------------
858
859CONSTANT:
860    ``CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY``
861
862DATA TYPE:
863    Task priority (``rtems_task_priority``).
864
865RANGE:
866    Valid task priority.
867
868DEFAULT VALUE:
869    The default value is 15.
870
871DESCRIPTION:
872    Defines the swapout worker task priority.
873
874NOTES:
875    None.
876
877.. index:: CONFIGURE_SWAPOUT_WORKER_TASKS
878
879.. _CONFIGURE_SWAPOUT_WORKER_TASKS:
880
881CONFIGURE_SWAPOUT_WORKER_TASKS
882------------------------------
883
884CONSTANT:
885    ``CONFIGURE_SWAPOUT_WORKER_TASKS``
886
887DATA TYPE:
888    Unsigned integer (``size_t``).
889
890RANGE:
891    Zero or positive.
892
893DEFAULT VALUE:
894    The default value is 0.
895
896DESCRIPTION:
897    Defines the swapout worker task count.
898
899NOTES:
900    None.
901
902BSP Related Configuration Options
903=================================
904
905This section describes configuration options related to the BSP.  Some
906configuration options may have a BSP-specific setting which is defined by
907``<bsp.h>``.  The BSP-specific settings can be disabled by the
908:ref:`CONFIGURE_DISABLE_BSP_SETTINGS` configuration option.
909
910.. index:: BSP_IDLE_TASK_BODY
911
912.. _BSP_IDLE_TASK_BODY:
913
914BSP_IDLE_TASK_BODY
915------------------
916
917CONSTANT:
918    ``BSP_IDLE_TASK_BODY``
919
920DATA TYPE:
921    Function pointer.
922
923RANGE:
924    Undefined or valid function pointer.
925
926DEFAULT VALUE:
927    This option is BSP specific.
928
929DESCRIPTION:
930    If ``BSP_IDLE_TASK_BODY`` is defined by the BSP and
931    ``CONFIGURE_IDLE_TASK_BODY`` is not defined by the application, then this
932    BSP specific idle task body will be used.
933
934NOTES:
935    As it has knowledge of the specific CPU model, system controller logic, and
936    peripheral buses, a BSP specific IDLE task may be capable of turning
937    components off to save power during extended periods of no task activity
938
939.. index:: BSP_IDLE_TASK_STACK_SIZE
940
941.. _BSP_IDLE_TASK_STACK_SIZE:
942
943BSP_IDLE_TASK_STACK_SIZE
944------------------------
945
946CONSTANT:
947    ``BSP_IDLE_TASK_STACK_SIZE``
948
949DATA TYPE:
950    Unsigned integer (``size_t``).
951
952RANGE:
953    Undefined or positive.
954
955DEFAULT VALUE:
956    This option is BSP specific.
957
958DESCRIPTION:
959    If ``BSP_IDLE_TASK_STACK_SIZE`` is defined by the BSP and
960    ``CONFIGURE_IDLE_TASK_STACK_SIZE`` is not defined by the application, then
961    this BSP suggested idle task stack size will be used.
962
963NOTES:
964    The order of precedence for configuring the IDLE task stack size is:
965
966    - RTEMS default minimum stack size.
967
968    - If defined, then ``CONFIGURE_MINIMUM_TASK_STACK_SIZE``.
969
970    - If defined, then the BSP specific ``BSP_IDLE_TASK_SIZE``.
971
972    - If defined, then the application specified ``CONFIGURE_IDLE_TASK_SIZE``.
973
974.. index:: BSP_INITIAL_EXTENSION
975
976.. _BSP_INITIAL_EXTENSION:
977
978BSP_INITIAL_EXTENSION
979---------------------
980
981CONSTANT:
982    ``BSP_INITIAL_EXTENSION``
983
984DATA TYPE:
985    List of user extension initializers (``rtems_extensions_table``).
986
987RANGE:
988    Undefined or a list of user extension initializers.
989
990DEFAULT VALUE:
991    This option is BSP specific.
992
993DESCRIPTION:
994    If ``BSP_INITIAL_EXTENSION`` is defined by the BSP, then this BSP specific
995    initial extension will be placed as the last entry in the initial extension
996    table.
997
998NOTES:
999    None.
1000
1001.. index:: BSP_INTERRUPT_STACK_SIZE
1002
1003.. _BSP_INTERRUPT_STACK_SIZE:
1004
1005BSP_INTERRUPT_STACK_SIZE
1006------------------------
1007
1008CONSTANT:
1009    ``BSP_INTERRUPT_STACK_SIZE``
1010
1011DATA TYPE:
1012    Unsigned integer (``size_t``).
1013
1014RANGE:
1015    Undefined or positive.
1016
1017DEFAULT VALUE:
1018    This option is BSP specific.
1019
1020DESCRIPTION:
1021    If ``BSP_INTERRUPT_STACK_SIZE`` is defined by the BSP and
1022    ``CONFIGURE_INTERRUPT_STACK_SIZE`` is not defined by the application, then
1023    this BSP specific interrupt stack size will be used.
1024
1025NOTES:
1026    None.
1027
1028.. index:: BSP_MAXIMUM_DEVICES
1029
1030.. _BSP_MAXIMUM_DEVICES:
1031
1032BSP_MAXIMUM_DEVICES
1033-------------------
1034
1035CONSTANT:
1036    ``BSP_MAXIMUM_DEVICES``
1037
1038DATA TYPE:
1039    Unsigned integer (``size_t``).
1040
1041RANGE:
1042    Undefined or positive.
1043
1044DEFAULT VALUE:
1045    This option is BSP specific.
1046
1047DESCRIPTION:
1048    If ``BSP_MAXIMUM_DEVICES`` is defined by the BSP and
1049    ``CONFIGURE_MAXIMUM_DEVICES`` is not defined by the application, then this
1050    BSP specific maximum device count will be used.
1051
1052NOTES:
1053    This option is specific to the device file system (devFS) and should not be
1054    confused with the ``CONFIGURE_MAXIMUM_DRIVERS`` option.  This parameter
1055    only impacts the devFS and thus is only used by ``<rtems/confdefs.h>`` when
1056    ``CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM`` is specified.
1057
1058.. index:: CONFIGURE_BSP_PREREQUISITE_DRIVERS
1059
1060.. _CONFIGURE_BSP_PREREQUISITE_DRIVERS:
1061
1062CONFIGURE_BSP_PREREQUISITE_DRIVERS
1063----------------------------------
1064
1065CONSTANT:
1066    ``CONFIGURE_BSP_PREREQUISITE_DRIVERS``
1067
1068DATA TYPE:
1069    List of device driver initializers (``rtems_driver_address_table``).
1070
1071RANGE:
1072    Undefined or array of device drivers.
1073
1074DEFAULT VALUE:
1075    This option is BSP specific.
1076
1077DESCRIPTION:
1078    ``CONFIGURE_BSP_PREREQUISITE_DRIVERS`` is defined if the BSP has device
1079    drivers it needs to include in the Device Driver Table.  This should be
1080    defined to the set of device driver entries that will be placed in the
1081    table at the *FRONT* of the Device Driver Table and initialized before any
1082    other drivers *INCLUDING* any application prerequisite drivers.
1083
1084NOTES:
1085    ``CONFIGURE_BSP_PREREQUISITE_DRIVERS`` is typically used by BSPs to
1086    configure common infrastructure such as bus controllers or probe for
1087    devices.
1088
1089.. index:: CONFIGURE_DISABLE_BSP_SETTINGS
1090
1091.. _CONFIGURE_DISABLE_BSP_SETTINGS:
1092
1093CONFIGURE_DISABLE_BSP_SETTINGS
1094------------------------------
1095
1096CONSTANT:
1097    ``CONFIGURE_DISABLE_BSP_SETTINGS``
1098
1099DATA TYPE:
1100    Boolean feature macro.
1101
1102RANGE:
1103    Defined or undefined.
1104
1105DEFAULT VALUE:
1106    This is not defined by default.
1107
1108DESCRIPTION:
1109    All BSP specific configuration settings can be disabled by the application
1110    with the ``CONFIGURE_DISABLE_BSP_SETTINGS`` option.
1111
1112NOTES:
1113    None.
1114
1115.. index:: CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK
1116
1117.. _CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK:
1118
1119CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK
1120----------------------------------
1121
1122CONSTANT:
1123    ``CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK``
1124
1125DATA TYPE:
1126    Boolean feature macro.
1127
1128RANGE:
1129    Defined or undefined.
1130
1131DEFAULT VALUE:
1132    This option is BSP specific.
1133
1134DESCRIPTION:
1135    This configuration parameter is defined by a BSP to indicate that it does
1136    not allocate all available memory to the C Program Heap used by the Malloc
1137    Family of routines.
1138
1139    If defined, when ``malloc()`` is unable to allocate memory, it will call
1140    the BSP supplied ``sbrk()`` to obtain more memory.
1141
1142NOTES:
1143    This parameter should not be defined by the application. Only the BSP knows
1144    how it allocates memory to the C Program Heap.
1145
1146Idle Task Configuration
1147=======================
1148
1149This section defines the IDLE task related configuration parameters supported
1150by ``<rtems/confdefs.h>``.
1151
1152.. index:: CONFIGURE_IDLE_TASK_BODY
1153
1154.. _CONFIGURE_IDLE_TASK_BODY:
1155
1156CONFIGURE_IDLE_TASK_BODY
1157------------------------
1158
1159CONSTANT:
1160    ``CONFIGURE_IDLE_TASK_BODY``
1161
1162DATA TYPE:
1163    Function pointer.
1164
1165RANGE:
1166    Undefined or valid function pointer.
1167
1168DEFAULT VALUE:
1169    This is not defined by default.
1170
1171DESCRIPTION:
1172    ``CONFIGURE_IDLE_TASK_BODY`` is set to the function name corresponding to
1173    the application specific IDLE thread body.  If not specified, the BSP or
1174    RTEMS default IDLE thread body will be used.
1175
1176NOTES:
1177    None.
1178
1179.. index:: CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
1180
1181.. _CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION:
1182
1183CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
1184-------------------------------------------
1185
1186CONSTANT:
1187    ``CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION``
1188
1189DATA TYPE:
1190    Boolean feature macro.
1191
1192RANGE:
1193    Defined or undefined.
1194
1195DEFAULT VALUE:
1196    This is not defined by default, the user is assumed to provide one or more
1197    initialization tasks.
1198
1199DESCRIPTION:
1200    ``CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION`` is set to indicate that the
1201    user has configured *NO* user initialization tasks or threads and that the
1202    user provided IDLE task will perform application initialization and then
1203    transform itself into an IDLE task.
1204
1205NOTES:
1206    If you use this option be careful, the user IDLE task *CANNOT* block at all
1207    during the initialization sequence.  Further, once application
1208    initialization is complete, it must make itself preemptible and enter an
1209    IDLE body loop.
1210
1211    The IDLE task must run at the lowest priority of all tasks in the system.
1212
1213.. index:: CONFIGURE_IDLE_TASK_STACK_SIZE
1214
1215.. _CONFIGURE_IDLE_TASK_STACK_SIZE:
1216
1217CONFIGURE_IDLE_TASK_STACK_SIZE
1218------------------------------
1219
1220CONSTANT:
1221    ``CONFIGURE_IDLE_TASK_STACK_SIZE``
1222
1223DATA TYPE:
1224    Unsigned integer (``size_t``).
1225
1226RANGE:
1227    Undefined or positive.
1228
1229DEFAULT VALUE:
1230    The default value is RTEMS_MINIMUM_STACK_SIZE.
1231
1232DESCRIPTION:
1233    ``CONFIGURE_IDLE_TASK_STACK_SIZE`` is set to the desired stack size for the
1234    IDLE task.
1235
1236NOTES:
1237    None.
1238
1239General Scheduler Configuration
1240===============================
1241
1242This section defines the configuration parameters related to selecting a
1243scheduling algorithm for an application.  A scheduler configuration is optional
1244and only necessary in very specific circumstances.  A normal application
1245configuration does not need any of the configuration options described in this
1246section.  By default, the :ref:`Deterministic Priority Scheduler
1247<SchedulerPriority>` algorithm is used in uniprocessor configurations.  In case
1248SMP is enabled and the configured maximum processors
1249(:ref:`CONFIGURE_MAXIMUM_PROCESSORS <CONFIGURE_MAXIMUM_PROCESSORS>`) is greater
1250than one, then the :ref:`Earliest Deadline First (EDF) SMP Scheduler
1251<SchedulerSMPEDF>` is selected as the default scheduler algorithm.
1252
1253For the :ref:`schedulers built into
1254RTEMS <SchedulingConcepts>`, the configuration is straightforward.  All that is
1255required is to define the configuration macro which specifies which scheduler
1256you want for in your application.
1257
1258The pluggable scheduler interface also enables the user to provide their own
1259scheduling algorithm.  If you choose to do this, you must define multiple
1260configuration macros.
1261
1262.. index:: CONFIGURE_SCHEDULER_CBS
1263
1264.. _CONFIGURE_SCHEDULER_CBS:
1265
1266CONFIGURE_SCHEDULER_CBS
1267-----------------------
1268
1269CONSTANT:
1270    ``CONFIGURE_SCHEDULER_CBS``
1271
1272DATA TYPE:
1273    Boolean feature macro.
1274
1275RANGE:
1276    Defined or undefined.
1277
1278DEFAULT VALUE:
1279    This is not defined by default.
1280
1281DESCRIPTION:
1282    If defined, then the :ref:`Constant Bandwidth Server (CBS) Scheduler
1283    <SchedulerCBS>` algorithm is made available to the application.
1284
1285NOTES:
1286    This scheduler configuration option is an advanced configuration option.
1287    Think twice before you use it.
1288
1289    In case no explicit :ref:`clustered scheduler configuration
1290    <ConfigurationSchedulersClustered>` is present, then it is used as the
1291    scheduler for exactly one processor.
1292
1293.. index:: CONFIGURE_SCHEDULER_EDF
1294
1295.. _CONFIGURE_SCHEDULER_EDF:
1296
1297CONFIGURE_SCHEDULER_EDF
1298-----------------------
1299
1300CONSTANT:
1301    ``CONFIGURE_SCHEDULER_EDF``
1302
1303DATA TYPE:
1304    Boolean feature macro.
1305
1306RANGE:
1307    Defined or undefined.
1308
1309DEFAULT VALUE:
1310    This is not defined by default.
1311
1312DESCRIPTION:
1313    If defined, then the :ref:`Earliest Deadline First (EDF) Scheduler
1314    <SchedulerEDF>` algorithm is made available to the application.
1315
1316NOTES:
1317    This scheduler configuration option is an advanced configuration option.
1318    Think twice before you use it.
1319
1320    In case no explicit :ref:`clustered scheduler configuration
1321    <ConfigurationSchedulersClustered>` is present, then it is used as the
1322    scheduler for exactly one processor.
1323
1324.. index:: CONFIGURE_SCHEDULER_EDF_SMP
1325
1326.. _CONFIGURE_SCHEDULER_EDF_SMP:
1327
1328CONFIGURE_SCHEDULER_EDF_SMP
1329---------------------------
1330
1331CONSTANT:
1332    ``CONFIGURE_SCHEDULER_EDF_SMP``
1333
1334DATA TYPE:
1335    Boolean feature macro.
1336
1337RANGE:
1338    Defined or undefined.
1339
1340DEFAULT VALUE:
1341    This is not defined by default.
1342
1343DESCRIPTION:
1344    If defined, then the :ref:`Earliest Deadline First (EDF) SMP Scheduler
1345    <SchedulerSMPEDF>` algorithm is made available to the application.
1346
1347NOTES:
1348    This scheduler configuration option is an advanced configuration option.
1349    Think twice before you use it.
1350
1351    This scheduler algorithm is only available when RTEMS is built with SMP
1352    support enabled.
1353
1354    In case no explicit :ref:`clustered scheduler configuration
1355    <ConfigurationSchedulersClustered>` is present, then it is used as the
1356    scheduler for up to 32 processors.
1357
1358    This scheduler algorithm is the default in SMP configurations if
1359    :ref:`CONFIGURE_MAXIMUM_PROCESSORS <CONFIGURE_MAXIMUM_PROCESSORS>` is
1360    greater than one.
1361
1362.. index:: CONFIGURE_SCHEDULER_NAME
1363
1364.. _CONFIGURE_SCHEDULER_NAME:
1365
1366CONFIGURE_SCHEDULER_NAME
1367------------------------
1368
1369CONSTANT:
1370    ``CONFIGURE_SCHEDULER_NAME``
1371
1372DATA TYPE:
1373    RTEMS Name (``rtems_name``).
1374
1375RANGE:
1376    Any value.
1377
1378DEFAULT VALUE:
1379    The default name is
1380
1381      - ``"MEDF"`` for the :ref:`EDF SMP Scheduler <SchedulerSMPEDF>`,
1382      - ``"MPA "`` for the :ref:`Arbitrary Processor Affinity Priority SMP Scheduler <SchedulerSMPPriorityAffinity>`,
1383      - ``"MPD "`` for the :ref:`Deterministic Priority SMP Scheduler <SchedulerSMPPriority>`,
1384      - ``"MPS "`` for the :ref:`Simple Priority SMP Scheduler <SchedulerSMPPrioritySimple>`,
1385      - ``"UCBS"`` for the :ref:`Uniprocessor CBS Scheduler <SchedulerCBS>`,
1386      - ``"UEDF"`` for the :ref:`Uniprocessor EDF Scheduler <SchedulerEDF>`,
1387      - ``"UPD "`` for the :ref:`Uniprocessor Deterministic Priority Scheduler <SchedulerPriority>`, and
1388      - ``"UPS "`` for the :ref:`Uniprocessor Simple Priority Scheduler <SchedulerPrioritySimple>`.
1389
1390DESCRIPTION:
1391    Schedulers can be identified via ``rtems_scheduler_ident``.  The name of
1392    the scheduler is determined by the configuration.
1393
1394NOTES:
1395    This scheduler configuration option is an advanced configuration option.
1396    Think twice before you use it.
1397
1398.. index:: CONFIGURE_SCHEDULER_PRIORITY
1399
1400.. _CONFIGURE_SCHEDULER_PRIORITY:
1401
1402CONFIGURE_SCHEDULER_PRIORITY
1403----------------------------
1404
1405CONSTANT:
1406    ``CONFIGURE_SCHEDULER_PRIORITY``
1407
1408DATA TYPE:
1409    Boolean feature macro.
1410
1411RANGE:
1412    Defined or undefined.
1413
1414DEFAULT VALUE:
1415    This is defined by default.  This is the default scheduler and specifying
1416    this configuration parameter is redundant.
1417
1418DESCRIPTION:
1419    If defined, then the :ref:`Deterministic Priority Scheduler
1420    <SchedulerPriority>` algorithm is made available to the application.
1421
1422NOTES:
1423    This scheduler configuration option is an advanced configuration option.
1424    Think twice before you use it.
1425
1426    In case no explicit :ref:`clustered scheduler configuration
1427    <ConfigurationSchedulersClustered>` is present, then it is used as the
1428    scheduler for exactly one processor.
1429
1430    This scheduler algorithm is the default when
1431    :ref:`CONFIGURE_MAXIMUM_PROCESSORS <CONFIGURE_MAXIMUM_PROCESSORS>` is
1432    exactly one.
1433
1434    The memory allocated for this scheduler depends on the
1435    :ref:`CONFIGURE_MAXIMUM_PRIORITY` configuration option.
1436
1437.. index:: CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP
1438
1439.. _CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP:
1440
1441CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP
1442-----------------------------------------
1443
1444CONSTANT:
1445    ``CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP``
1446
1447DATA TYPE:
1448    Boolean feature macro.
1449
1450RANGE:
1451    Defined or undefined.
1452
1453DEFAULT VALUE:
1454    This is not defined by default.
1455
1456DESCRIPTION:
1457    If defined, then the :ref:`Arbitrary Processor Affinity SMP Scheduler
1458    <SchedulerSMPPriorityAffinity>` algorithm is made available to the
1459    application.
1460
1461NOTES:
1462    This scheduler configuration option is an advanced configuration option.
1463    Think twice before you use it.
1464
1465    This scheduler algorithm is only available when RTEMS is built with SMP
1466    support enabled.
1467
1468    In case no explicit :ref:`clustered scheduler configuration
1469    <ConfigurationSchedulersClustered>` is present, then it is used as the
1470    scheduler for up to 32 processors.
1471
1472    The memory allocated for this scheduler depends on the
1473    :ref:`CONFIGURE_MAXIMUM_PRIORITY` configuration option.
1474
1475.. index:: CONFIGURE_SCHEDULER_PRIORITY_SMP
1476
1477.. _CONFIGURE_SCHEDULER_PRIORITY_SMP:
1478
1479CONFIGURE_SCHEDULER_PRIORITY_SMP
1480--------------------------------
1481
1482CONSTANT:
1483    ``CONFIGURE_SCHEDULER_PRIORITY_SMP``
1484
1485DATA TYPE:
1486    Boolean feature macro.
1487
1488RANGE:
1489    Defined or undefined.
1490
1491DEFAULT VALUE:
1492    This is not defined by default.
1493
1494DESCRIPTION:
1495    If defined, then the :ref:`Deterministic Priority SMP Scheduler
1496    <SchedulerSMPPriority>` algorithm is made available to the application.
1497
1498NOTES:
1499    This scheduler configuration option is an advanced configuration option.
1500    Think twice before you use it.
1501
1502    This scheduler algorithm is only available when RTEMS is built with SMP
1503    support enabled.
1504
1505    In case no explicit :ref:`clustered scheduler configuration
1506    <ConfigurationSchedulersClustered>` is present, then it is used as the
1507    scheduler for up to 32 processors.
1508
1509    The memory allocated for this scheduler depends on the
1510    :ref:`CONFIGURE_MAXIMUM_PRIORITY` configuration option.
1511
1512.. index:: CONFIGURE_SCHEDULER_SIMPLE
1513
1514.. _CONFIGURE_SCHEDULER_SIMPLE:
1515
1516CONFIGURE_SCHEDULER_SIMPLE
1517--------------------------
1518
1519CONSTANT:
1520    ``CONFIGURE_SCHEDULER_SIMPLE``
1521
1522DATA TYPE:
1523    Boolean feature macro.
1524
1525RANGE:
1526    Defined or undefined.
1527
1528DEFAULT VALUE:
1529    This is not defined by default.
1530
1531DESCRIPTION:
1532    If defined, then the :ref:`Simple Priority Scheduler
1533    <SchedulerPrioritySimple>` algorithm is made available to the application.
1534
1535NOTES:
1536    This scheduler configuration option is an advanced configuration option.
1537    Think twice before you use it.
1538
1539    In case no explicit :ref:`clustered scheduler configuration
1540    <ConfigurationSchedulersClustered>` is present, then it is used as the
1541    scheduler for exactly one processor.
1542
1543.. index:: CONFIGURE_SCHEDULER_SIMPLE_SMP
1544
1545.. _CONFIGURE_SCHEDULER_SIMPLE_SMP:
1546
1547CONFIGURE_SCHEDULER_SIMPLE_SMP
1548------------------------------
1549
1550CONSTANT:
1551    ``CONFIGURE_SCHEDULER_SIMPLE_SMP``
1552
1553DATA TYPE:
1554    Boolean feature macro.
1555
1556RANGE:
1557    Defined or undefined.
1558
1559DEFAULT VALUE:
1560    This is not defined by default.
1561
1562DESCRIPTION:
1563    If defined, then the :ref:`Simple Priority SMP Scheduler
1564    <SchedulerSMPPrioritySimple>` algorithm is made available to the
1565    application.
1566
1567NOTES:
1568    This scheduler configuration option is an advanced configuration option.
1569    Think twice before you use it.
1570
1571    This scheduler algorithm is only available when RTEMS is built with SMP
1572    support enabled.
1573
1574    In case no explicit :ref:`clustered scheduler configuration
1575    <ConfigurationSchedulersClustered>` is present, then it is used as the
1576    scheduler for up to 32 processors.
1577
1578.. index:: CONFIGURE_SCHEDULER_USER
1579
1580.. _CONFIGURE_SCHEDULER_USER:
1581
1582CONFIGURE_SCHEDULER_USER
1583------------------------
1584
1585CONSTANT:
1586    ``CONFIGURE_SCHEDULER_USER``
1587
1588DATA TYPE:
1589    Boolean feature macro.
1590
1591RANGE:
1592    Defined or undefined.
1593
1594DEFAULT VALUE:
1595    This is not defined by default.
1596
1597DESCRIPTION:
1598    RTEMS allows the application to provide its own task/thread scheduling
1599    algorithm. In order to do this, one must define
1600    ``CONFIGURE_SCHEDULER_USER`` to indicate the application provides its own
1601    scheduling algorithm. If ``CONFIGURE_SCHEDULER_USER`` is defined then the
1602    following additional macros must be defined:
1603
1604    - ``CONFIGURE_SCHEDULER`` must be defined to a static definition of
1605      the scheduler data structures of the user scheduler.
1606
1607    - ``CONFIGURE_SCHEDULER_TABLE_ENTRIES`` must be defined to a scheduler
1608      table entry initializer for the user scheduler.
1609
1610    - ``CONFIGURE_SCHEDULER_USER_PER_THREAD`` must be defined to the type of
1611      the per-thread information of the user scheduler.
1612
1613NOTES:
1614    This scheduler configuration option is an advanced configuration option.
1615    Think twice before you use it.
1616
1617    At this time, the mechanics and requirements for writing a new scheduler
1618    are evolving and not fully documented.  It is recommended that you look at
1619    the existing Deterministic Priority Scheduler in
1620    ``cpukit/score/src/schedulerpriority*.c`` for guidance.  For guidance on
1621    the configuration macros, please examine ``cpukit/sapi/include/confdefs.h``
1622    for how these are defined for the Deterministic Priority Scheduler.
1623
1624.. _ConfigurationSchedulersClustered:
1625
1626Clustered Scheduler Configuration
1627=================================
1628
1629A clustered scheduler configuration is optional.  It is an advanced
1630configuration area and only necessary in specific circumstances.
1631
1632Clustered scheduling helps to control the worst-case latencies in a
1633multiprocessor system (SMP).  The goal is to reduce the amount of shared state
1634in the system and thus prevention of lock contention.  Modern multiprocessor
1635systems tend to have several layers of data and instruction caches.  With
1636clustered scheduling it is possible to honour the cache topology of a system
1637and thus avoid expensive cache synchronization traffic.
1638
1639We have clustered scheduling in case the set of processors of a system is
1640partitioned into non-empty pairwise-disjoint subsets.  These subsets are called
1641clusters.  Clusters with a cardinality of one are partitions.  Each cluster is
1642owned by exactly one scheduler.
1643
1644In order to use clustered scheduling the application designer has to answer two
1645questions.
1646
1647#. How is the set of processors partitioned into clusters?
1648
1649#. Which scheduler algorithm is used for which cluster?
1650
1651The schedulers are statically configured.
1652
1653Configuration Step 1 - Scheduler Algorithms
1654-------------------------------------------
1655
1656Firstly, the application must select which scheduling algorithms are available
1657with the following defines
1658
1659- :ref:`CONFIGURE_SCHEDULER_EDF_SMP <CONFIGURE_SCHEDULER_EDF_SMP>`,
1660
1661- :ref:`CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP <CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP>`,
1662
1663- :ref:`CONFIGURE_SCHEDULER_PRIORITY_SMP <CONFIGURE_SCHEDULER_PRIORITY_SMP>`, and
1664
1665- :ref:`CONFIGURE_SCHEDULER_SIMPLE_SMP <CONFIGURE_SCHEDULER_SIMPLE_SMP>`.
1666
1667This is necessary to calculate the per-thread overhead introduced by the
1668scheduler algorithms.  After these definitions the configuration file must
1669``#include <rtems/scheduler.h>`` to have access to scheduler-specific
1670configuration macros.
1671
1672It is possible to make more than one scheduler algorithm available to the
1673application.  For example a :ref:`Simple Priority SMP Scheduler
1674<SchedulerSMPPrioritySimple>` could be used in a partition for low latency
1675tasks in addition to an :ref:`EDF SMP Scheduler <SchedulerSMPEDF>` for a
1676general-purpose cluster.  Since the per-thread overhead depends on the
1677scheduler algorithm only the scheduler algorithms used by the application
1678should be configured.
1679
1680Configuration Step 2 - Schedulers
1681---------------------------------
1682
1683Each scheduler needs some data structures.  Use the following macros to create
1684the scheduler data structures for a particular scheduler identified in the
1685configuration by ``name``.
1686
1687- ``RTEMS_SCHEDULER_EDF_SMP(name, max_cpu_count)``,
1688
1689- ``RTEMS_SCHEDULER_PRIORITY_AFFINITY_SMP(name, prio_count)``,
1690
1691- ``RTEMS_SCHEDULER_PRIORITY_SMP(name, prio_count)``, and
1692
1693- ``RTEMS_SCHEDULER_SIMPLE_SMP(name)``.
1694
1695The ``name`` parameter is used as part of a designator for scheduler-specific
1696data structures, so the usual C/C++ designator rules apply.  This ``name`` is
1697not the scheduler object name.  Additional parameters are scheduler-specific.
1698
1699.. _ConfigurationSchedulerTable:
1700
1701Configuration Step 3 - Scheduler Table
1702--------------------------------------
1703
1704The schedulers are registered in the system via the scheduler table.  To
1705populate the scheduler table define ``CONFIGURE_SCHEDULER_TABLE_ENTRIES`` to a
1706list of the following scheduler table entry initializers
1707
1708- ``RTEMS_SCHEDULER_TABLE_EDF_SMP(name, obj_name)``,
1709
1710- ``RTEMS_SCHEDULER_TABLE_PRIORITY_AFFINITY_SMP(name, obj_name)``,
1711
1712- ``RTEMS_SCHEDULER_TABLE_PRIORITY_SMP(name, obj_name)``, and
1713
1714- ``RTEMS_SCHEDULER_TABLE_SIMPLE_SMP(name, obj_name)``.
1715
1716The ``name`` parameter must correspond to the parameter defining the scheduler
1717data structures of configuration step 2.  The ``obj_name`` determines the
1718scheduler object name and can be used in :ref:`rtems_scheduler_ident()
1719<rtems_scheduler_ident>` to get the scheduler object identifier.  The scheduler
1720index is defined by the index of the scheduler table.  It is a configuration
1721error to add a scheduler multiple times to the scheduler table.
1722
1723Configuration Step 4 - Processor to Scheduler Assignment
1724--------------------------------------------------------
1725
1726The last step is to define which processor uses which scheduler.  For this
1727purpose a scheduler assignment table must be defined.  The entry count of this
1728table must be equal to the configured maximum processors
1729(:ref:`CONFIGURE_MAXIMUM_PROCESSORS <CONFIGURE_MAXIMUM_PROCESSORS>`).  A
1730processor assignment to a scheduler can be optional or mandatory.  The boot
1731processor must have a scheduler assigned.  In case the system needs more
1732mandatory processors than available then a fatal run-time error will occur.  To
1733specify the scheduler assignments define
1734``CONFIGURE_SCHEDULER_ASSIGNMENTS`` to a list of
1735
1736- ``RTEMS_SCHEDULER_ASSIGN(scheduler_index, attr)`` and
1737
1738- ``RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER``
1739
1740macros.  The ``scheduler_index`` parameter must be a valid index into the
1741scheduler table defined by configuration step 3.  The ``attr`` parameter
1742defines the scheduler assignment attributes.  By default, a scheduler
1743assignment to a processor is optional.  For the scheduler assignment attribute
1744use one of the mutually exclusive variants
1745
1746- ``RTEMS_SCHEDULER_ASSIGN_DEFAULT``,
1747
1748- ``RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY``, and
1749
1750- ``RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL``.
1751
1752It is possible to add/remove processors to/from schedulers at run-time, see
1753:ref:`rtems_scheduler_add_processor() <rtems_scheduler_add_processor>` and
1754:ref:`rtems_scheduler_remove_processor() <rtems_scheduler_remove_processor>`.
1755
1756Configuration Example
1757---------------------
1758
1759The following example shows a scheduler configuration for a hypothetical
1760product using two chip variants.  One variant has four processors which is used
1761for the normal product line and another provides eight processors for the
1762high-performance product line.  The first processor performs hard-real time
1763control of actuators and sensors.  The second processor is not used by RTEMS at
1764all and runs a Linux instance to provide a graphical user interface.  The
1765additional processors are used for a worker thread pool to perform data
1766processing operations.
1767
1768The processors managed by RTEMS use two Deterministic Priority SMP schedulers
1769capable of dealing with 256 priority levels.  The scheduler with index zero has
1770the name ``"IO "``.  The scheduler with index one has the name ``"WORK"``.  The
1771scheduler assignments of the first, third and fourth processor are mandatory,
1772so the system must have at least four processors, otherwise a fatal run-time
1773error will occur during system startup.  The processor assignments for the
1774fifth up to the eighth processor are optional so that the same application can
1775be used for the normal and high-performance product lines.  The second
1776processor has no scheduler assigned and runs Linux.  A hypervisor will ensure
1777that the two systems cannot interfere in an undesirable way.
1778
1779.. code-block:: c
1780
1781    #define CONFIGURE_MAXIMUM_PROCESSORS 8
1782    #define CONFIGURE_MAXIMUM_PRIORITY 255
1783
1784    /* Configuration Step 1 - Scheduler Algorithms */
1785    #define CONFIGURE_SCHEDULER_PRIORITY_SMP
1786    #include <rtems/scheduler.h>
1787
1788    /* Configuration Step 2 - Schedulers */
1789    RTEMS_SCHEDULER_PRIORITY_SMP(io, CONFIGURE_MAXIMUM_PRIORITY + 1);
1790    RTEMS_SCHEDULER_PRIORITY_SMP(work, CONFIGURE_MAXIMUM_PRIORITY + 1);
1791
1792    /* Configuration Step 3 - Scheduler Table */
1793    #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \
1794      RTEMS_SCHEDULER_TABLE_PRIORITY_SMP( \
1795        io, \
1796         rtems_build_name('I', 'O', ' ', ' ') \
1797      ), \
1798      RTEMS_SCHEDULER_TABLE_PRIORITY_SMP( \
1799        work, \
1800        rtems_build_name('W', 'O', 'R', 'K') \
1801      )
1802
1803    /* Configuration Step 4 - Processor to Scheduler Assignment */
1804    #define CONFIGURE_SCHEDULER_ASSIGNMENTS \
1805      RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY), \
1806      RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \
1807      RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY), \
1808      RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY), \
1809      RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \
1810      RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \
1811      RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \
1812      RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL)
1813
1814Configuration Errors
1815--------------------
1816
1817In case one of the scheduler indices in ``CONFIGURE_SCHEDULER_ASSIGNMENTS``
1818is invalid a link-time error will occur with an undefined reference to
1819``RTEMS_SCHEDULER_INVALID_INDEX``.
1820
1821Some fatal errors may occur in case of scheduler configuration inconsistencies
1822or a lack of processors on the system.  The fatal source is
1823``RTEMS_FATAL_SOURCE_SMP``.
1824
1825- ``SMP_FATAL_BOOT_PROCESSOR_NOT_ASSIGNED_TO_SCHEDULER`` - the boot processor
1826  must have a scheduler assigned.
1827
1828- ``SMP_FATAL_MANDATORY_PROCESSOR_NOT_PRESENT`` - there exists a mandatory
1829  processor beyond the range of physically or virtually available processors.
1830  The processor demand must be reduced for this system.
1831
1832- ``SMP_FATAL_START_OF_MANDATORY_PROCESSOR_FAILED`` - the start of a mandatory
1833  processor failed during system initialization.  The system may not have this
1834  processor at all or it could be a problem with a boot loader for example.
1835  Check the ``CONFIGURE_SCHEDULER_ASSIGNMENTS`` definition.
1836
1837- ``SMP_FATAL_MULTITASKING_START_ON_UNASSIGNED_PROCESSOR`` - it is not allowed
1838  to start multitasking on a processor with no scheduler assigned.
1839
1840Device Driver Configuration
1841===========================
1842
1843This section defines the configuration parameters related to the automatic
1844generation of a Device Driver Table.  As ``<rtems/confdefs.h>`` only is aware
1845of a small set of standard device drivers, the generated Device Driver Table is
1846suitable for simple applications with no custom device drivers.
1847
1848Note that network device drivers are not configured in the Device Driver Table.
1849
1850.. index:: CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
1851
1852.. _CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER:
1853
1854CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
1855------------------------------------------------
1856
1857CONSTANT:
1858    ``CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER``
1859
1860DATA TYPE:
1861    Boolean feature macro.
1862
1863RANGE:
1864    Defined or undefined.
1865
1866DEFAULT VALUE:
1867    This is not defined by default.
1868
1869DESCRIPTION:
1870    ``CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER`` is defined when the
1871    application does *NOT* want the Clock Device Driver and is *NOT* using the
1872    Timer Driver.  The inclusion or exclusion of the Clock Driver must be
1873    explicit in user applications.
1874
1875NOTES:
1876    This configuration parameter is intended to prevent the common user error
1877    of using the Hello World example as the baseline for an application and
1878    leaving out a clock tick source.
1879
1880.. index:: CONFIGURE_APPLICATION_EXTRA_DRIVERS
1881
1882.. _CONFIGURE_APPLICATION_EXTRA_DRIVERS:
1883
1884CONFIGURE_APPLICATION_EXTRA_DRIVERS
1885-----------------------------------
1886
1887CONSTANT:
1888    ``CONFIGURE_APPLICATION_EXTRA_DRIVERS``
1889
1890DATA TYPE:
1891    device driver entry structures
1892
1893RANGE:
1894    Undefined or set of device driver entry structures
1895
1896DEFAULT VALUE:
1897    This is not defined by default.
1898
1899DESCRIPTION:
1900    ``CONFIGURE_APPLICATION_EXTRA_DRIVERS`` is defined if the application has
1901    device drivers it needs to include in the Device Driver Table.  This should
1902    be defined to the set of device driver entries that will be placed in the
1903    table at the *END* of the Device Driver Table.
1904
1905NOTES:
1906    None.
1907
1908.. index:: CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
1909
1910.. _CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER:
1911
1912CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
1913----------------------------------------
1914
1915CONSTANT:
1916    ``CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER``
1917
1918DATA TYPE:
1919    Boolean feature macro.
1920
1921RANGE:
1922    Defined or undefined.
1923
1924DEFAULT VALUE:
1925    This is not defined by default.
1926
1927DESCRIPTION:
1928    ``CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER`` is defined if the application
1929    wishes to include the Clock Device Driver.
1930
1931NOTES:
1932    This device driver is responsible for providing a regular interrupt which
1933    invokes a clock tick directive.
1934
1935    If neither the Clock Driver not Benchmark Timer is enabled and the
1936    configuration parameter
1937    ``CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER`` is not defined, then a
1938    compile time error will occur.
1939
1940.. index:: CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
1941
1942.. _CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER:
1943
1944CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
1945------------------------------------------
1946
1947CONSTANT:
1948    ``CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER``
1949
1950DATA TYPE:
1951    Boolean feature macro.
1952
1953RANGE:
1954    Defined or undefined.
1955
1956DEFAULT VALUE:
1957    This is not defined by default.
1958
1959DESCRIPTION:
1960    ``CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER`` is defined if the
1961    application wishes to include the Console Device Driver.
1962
1963NOTES:
1964    This device driver is responsible for providing the :file:`/dev/console`
1965    device file.  This device is used to initialize the standard input, output,
1966    and error file descriptors.
1967
1968    BSPs should be constructed in a manner that allows ``printk()`` to work
1969    properly without the need for the console driver to be configured.
1970
1971    The
1972
1973    * ``CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER``,
1974
1975    * ``CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER``, and
1976
1977    * ``CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER``
1978
1979    configuration options are mutually exclusive.
1980
1981.. index:: CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER
1982
1983.. _CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER:
1984
1985CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER
1986-----------------------------------------------
1987
1988CONSTANT:
1989    ``CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER``
1990
1991DATA TYPE:
1992    Boolean feature macro.
1993
1994RANGE:
1995    Defined or undefined.
1996
1997DEFAULT VALUE:
1998    This is not defined by default.
1999
2000DESCRIPTION:
2001    ``CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER`` is defined if the
2002    application wishes to include the BSP's Frame Buffer Device Driver.
2003
2004NOTES:
2005    Most BSPs do not include support for a Frame Buffer Device Driver. This is
2006    because many boards do not include the required hardware.
2007
2008    If this is defined and the BSP does not have this device driver, then the
2009    user will get a link time error for an undefined symbol.
2010
2011.. index:: CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
2012.. index:: /dev/null
2013
2014.. _CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER:
2015
2016CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
2017---------------------------------------
2018
2019CONSTANT:
2020    ``CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER``
2021
2022DATA TYPE:
2023    Boolean feature macro.
2024
2025RANGE:
2026    Defined or undefined.
2027
2028DEFAULT VALUE:
2029    This is not defined by default.
2030
2031DESCRIPTION:
2032    This configuration variable is specified to enable ``/dev/null`` device driver.
2033
2034NOTES:
2035    This device driver is supported by all BSPs.
2036
2037.. index:: CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
2038
2039.. _CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER:
2040
2041CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
2042--------------------------------------
2043
2044CONSTANT:
2045    ``CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER``
2046
2047DATA TYPE:
2048    Boolean feature macro.
2049
2050RANGE:
2051    Defined or undefined.
2052
2053DEFAULT VALUE:
2054    This is not defined by default.
2055
2056DESCRIPTION:
2057    ``CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER`` is defined if the application
2058    wishes to include the Real-Time Clock Driver.
2059
2060NOTES:
2061    Most BSPs do not include support for a real-time clock. This is because
2062    many boards do not include the required hardware.
2063
2064    If this is defined and the BSP does not have this device driver, then the
2065    user will get a link time error for an undefined symbol.
2066
2067.. index:: CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
2068
2069.. _CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER:
2070
2071CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
2072-------------------------------------------------
2073
2074CONSTANT:
2075    ``CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER``
2076
2077DATA TYPE:
2078    Boolean feature macro.
2079
2080RANGE:
2081    Defined or undefined.
2082
2083DEFAULT VALUE:
2084    This is not defined by default.
2085
2086DESCRIPTION:
2087    ``CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER`` is defined if the
2088    application wishes to include the Simple Console Device Driver.
2089
2090NOTES:
2091    This device driver is responsible for providing the :file:`/dev/console`
2092    device file.  This device is used to initialize the standard input, output,
2093    and error file descriptors.
2094
2095    This device driver reads via ``getchark()``.
2096
2097    This device driver writes via ``rtems_putc()``.
2098
2099    The Termios framework is not used.  There is no support to change device
2100    settings, e.g. baud, stop bits, parity, etc.
2101
2102    The
2103
2104    * ``CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER``,
2105
2106    * ``CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER``, and
2107
2108    * ``CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER``
2109
2110    configuration options are mutually exclusive.
2111
2112.. index:: CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER
2113
2114.. _CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER:
2115
2116CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER
2117------------------------------------------------------
2118
2119CONSTANT:
2120    ``CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER``
2121
2122DATA TYPE:
2123    Boolean feature macro.
2124
2125RANGE:
2126    Defined or undefined.
2127
2128DEFAULT VALUE:
2129    This is not defined by default.
2130
2131DESCRIPTION:
2132    ``CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER`` is defined if
2133    the application wishes to include the Simple Task Console Device Driver.
2134
2135NOTES:
2136    This device driver is responsible for providing the :file:`/dev/console`
2137    device file.  This device is used to initialize the standard input, output,
2138    and error file descriptors.
2139
2140    This device driver reads via ``getchark()``.
2141
2142    This device driver writes into a write buffer.  The count of characters
2143    written into the write buffer is returned.  It might be less than the
2144    requested count, in case the write buffer is full.  The write is
2145    non-blocking and may be called from interrupt context.  A dedicated task
2146    reads from the write buffer and outputs the characters via
2147    ``rtems_putc()``.  This task runs with the least important priority.  The
2148    write buffer size is 2047 characters and it is not configurable.
2149
2150    Use ``fsync(STDOUT_FILENO)`` or ``fdatasync(STDOUT_FILENO)`` to drain the
2151    write buffer.
2152
2153    The Termios framework is not used.  There is no support to change device
2154    settings, e.g.  baud, stop bits, parity, etc.
2155
2156    The
2157
2158    * ``CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER``,
2159
2160    * ``CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER``, and
2161
2162    * ``CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER``
2163
2164    configuration options are mutually exclusive.
2165
2166.. index:: CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
2167
2168.. _CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER:
2169
2170CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
2171---------------------------------------
2172
2173CONSTANT:
2174    ``CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER``
2175
2176DATA TYPE:
2177    Boolean feature macro.
2178
2179RANGE:
2180    Defined or undefined.
2181
2182DEFAULT VALUE:
2183    This is not defined by default.
2184
2185DESCRIPTION:
2186    ``CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER`` is defined if the application
2187    wishes to include the Stub Device Driver.
2188
2189NOTES:
2190    This device driver simply provides entry points that return successful and
2191    is primarily a test fixture. It is supported by all BSPs.
2192
2193.. index:: CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
2194
2195.. _CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER:
2196
2197CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
2198----------------------------------------
2199
2200CONSTANT:
2201    ``CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER``
2202
2203DATA TYPE:
2204    Boolean feature macro.
2205
2206RANGE:
2207    Defined or undefined.
2208
2209DEFAULT VALUE:
2210    This is not defined by default.
2211
2212DESCRIPTION:
2213    ``CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER`` is defined if the application
2214    wishes to include the Timer Driver.  This device driver is used to
2215    benchmark execution times by the RTEMS Timing Test Suites.
2216
2217NOTES:
2218    If neither the Clock Driver not Benchmark Timer is enabled and the
2219    configuration parameter
2220    ``CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER`` is not defined, then a
2221    compile time error will occur.
2222
2223.. index:: CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER
2224
2225.. _CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER:
2226
2227CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER
2228-------------------------------------------
2229
2230CONSTANT:
2231    ``CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER``
2232
2233DATA TYPE:
2234    Boolean feature macro.
2235
2236RANGE:
2237    Defined or undefined.
2238
2239DEFAULT VALUE:
2240    This is not defined by default.
2241
2242DESCRIPTION:
2243    ``CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER`` is defined if the
2244    application wishes to include the Watchdog Driver.
2245
2246NOTES:
2247    Most BSPs do not include support for a watchdog device driver. This is
2248    because many boards do not include the required hardware.
2249
2250    If this is defined and the BSP does not have this device driver, then the
2251    user will get a link time error for an undefined symbol.
2252
2253.. index:: CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER
2254.. index:: /dev/zero
2255
2256.. _CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER:
2257
2258CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER
2259---------------------------------------
2260
2261CONSTANT:
2262    ``CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER``
2263
2264DATA TYPE:
2265    Boolean feature macro.
2266
2267RANGE:
2268    Defined or undefined.
2269
2270DEFAULT VALUE:
2271    This is not defined by default.
2272
2273DESCRIPTION:
2274    This configuration variable is specified to enable ``/dev/zero`` device driver.
2275
2276NOTES:
2277    This device driver is supported by all BSPs.
2278
2279.. index:: CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS
2280
2281.. _CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS:
2282
2283CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS
2284------------------------------------------
2285
2286CONSTANT:
2287    ``CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS``
2288
2289DATA TYPE:
2290    device driver entry structures
2291
2292RANGE:
2293    Undefined or set of device driver entry structures
2294
2295DEFAULT VALUE:
2296    This is not defined by default.
2297
2298DESCRIPTION:
2299    ``CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS`` is defined if the
2300    application has device drivers it needs to include in the Device Driver
2301    Table.  This should be defined to the set of device driver entries that
2302    will be placed in the table at the *FRONT* of the Device Driver Table and
2303    initialized before any other drivers *EXCEPT* any BSP prerequisite drivers.
2304
2305NOTES:
2306    In some cases, it is used by System On Chip BSPs to support peripheral
2307    buses beyond those normally found on the System On Chip. For example, this
2308    is used by one RTEMS system which has implemented a SPARC/ERC32 based board
2309    with VMEBus. The VMEBus Controller initialization is performed by a device
2310    driver configured via this configuration parameter.
2311
2312.. index:: CONFIGURE_MAXIMUM_DRIVERS
2313
2314.. _CONFIGURE_MAXIMUM_DRIVERS:
2315
2316CONFIGURE_MAXIMUM_DRIVERS
2317-------------------------
2318
2319CONSTANT:
2320    ``CONFIGURE_MAXIMUM_DRIVERS``
2321
2322DATA TYPE:
2323    Unsigned integer (``uint32_t``).
2324
2325RANGE:
2326    Zero or positive.
2327
2328DEFAULT VALUE:
2329    This is computed by default, and is set to the number of device drivers
2330    configured using the ``CONFIGURE_APPLICATIONS_NEEDS_XXX_DRIVER``
2331    configuration parameters.
2332
2333DESCRIPTION:
2334    ``CONFIGURE_MAXIMUM_DRIVERS`` is defined as the number of device drivers
2335    per node.
2336
2337NOTES:
2338    If the application will dynamically install device drivers, then this
2339    configuration parameter must be larger than the number of statically
2340    configured device drivers. Drivers configured using the
2341    ``CONFIGURE_APPLICATIONS_NEEDS_XXX_DRIVER`` configuration parameters are
2342    statically installed.
2343
2344Multiprocessing Configuration
2345=============================
2346
2347This section defines the multiprocessing related system configuration
2348parameters supported by ``<rtems/confdefs.h>``.  They are only used if RTEMS
2349was built with the ``--enable-multiprocessing`` build configuration option.
2350The multiprocessing (MPCI) support must not be confused with the SMP support.
2351
2352Additionally, this class of Configuration Constants are only applicable if
2353``CONFIGURE_MP_APPLICATION`` is defined.
2354
2355.. index:: CONFIGURE_MP_APPLICATION
2356
2357.. _CONFIGURE_MP_APPLICATION:
2358
2359CONFIGURE_MP_APPLICATION
2360------------------------
2361
2362CONSTANT:
2363    ``CONFIGURE_MP_APPLICATION``
2364
2365DATA TYPE:
2366    Boolean feature macro.
2367
2368RANGE:
2369    Defined or undefined.
2370
2371DEFAULT VALUE:
2372    This is not defined by default.
2373
2374DESCRIPTION:
2375    This configuration parameter must be defined to indicate that the
2376    application intends to be part of a multiprocessing
2377    configuration. Additional configuration parameters are assumed to be
2378    provided.
2379
2380NOTES:
2381    This has no impact unless RTEMS was built with the
2382    ``--enable-multiprocessing`` build configuration option.
2383
2384.. index:: CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
2385
2386.. _CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS:
2387
2388CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
2389-----------------------------------
2390
2391CONSTANT:
2392    ``CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS``
2393
2394DATA TYPE:
2395    Unsigned integer (``uint32_t``).
2396
2397RANGE:
2398    Positive.
2399
2400DEFAULT VALUE:
2401    The default value is 32.
2402
2403DESCRIPTION:
2404    ``CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS`` is the maximum number of
2405    concurrently active global objects in a multiprocessor system.
2406
2407NOTES:
2408    This value corresponds to the total number of objects which can be created
2409    with the ``RTEMS_GLOBAL`` attribute.
2410
2411.. index:: CONFIGURE_MP_MAXIMUM_NODES
2412
2413.. _CONFIGURE_MP_MAXIMUM_NODES:
2414
2415CONFIGURE_MP_MAXIMUM_NODES
2416--------------------------
2417
2418CONSTANT:
2419    ``CONFIGURE_MP_MAXIMUM_NODES``
2420
2421DATA TYPE:
2422    Unsigned integer (``uint32_t``).
2423
2424RANGE:
2425    Positive.
2426
2427DEFAULT VALUE:
2428    The default value is 2.
2429
2430DESCRIPTION:
2431    ``CONFIGURE_MP_MAXIMUM_NODES`` is the maximum number of nodes in a
2432    multiprocessor system.
2433
2434NOTES:
2435    None.
2436
2437.. index:: CONFIGURE_MP_MAXIMUM_PROXIES
2438
2439.. _CONFIGURE_MP_MAXIMUM_PROXIES:
2440
2441CONFIGURE_MP_MAXIMUM_PROXIES
2442----------------------------
2443
2444CONSTANT:
2445    ``CONFIGURE_MP_MAXIMUM_PROXIES``
2446
2447DATA TYPE:
2448    Unsigned integer (``uint32_t``).
2449
2450RANGE:
2451    Undefined or positive.
2452
2453DEFAULT VALUE:
2454    The default value is 32.
2455
2456DESCRIPTION:
2457    ``CONFIGURE_MP_MAXIMUM_PROXIES`` is the maximum number of concurrently
2458    active thread/task proxies on this node in a multiprocessor system.
2459
2460NOTES:
2461    Since a proxy is used to represent a remote task/thread which is blocking
2462    on this node. This configuration parameter reflects the maximum number of
2463    remote tasks/threads which can be blocked on objects on this node.
2464
2465.. COMMENT: XXX - add xref to proxy discussion in MP chapter
2466
2467.. index:: CONFIGURE_MP_MPCI_TABLE_POINTER
2468
2469.. _CONFIGURE_MP_MPCI_TABLE_POINTER:
2470
2471CONFIGURE_MP_MPCI_TABLE_POINTER
2472-------------------------------
2473
2474CONSTANT:
2475    ``CONFIGURE_MP_MPCI_TABLE_POINTER``
2476
2477DATA TYPE:
2478    pointer to ``rtems_mpci_table``
2479
2480RANGE:
2481    undefined or valid pointer
2482
2483DEFAULT VALUE:
2484    This is not defined by default.
2485
2486DESCRIPTION:
2487    ``CONFIGURE_MP_MPCI_TABLE_POINTER`` is the pointer to the MPCI
2488    Configuration Table.  The default value of this field is``&MPCI_table``.
2489
2490NOTES:
2491    RTEMS provides a Shared Memory MPCI Device Driver which can be used on any
2492    Multiprocessor System assuming the BSP provides the proper set of
2493    supporting methods.
2494
2495.. index:: CONFIGURE_MP_NODE_NUMBER
2496
2497.. _CONFIGURE_MP_NODE_NUMBER:
2498
2499CONFIGURE_MP_NODE_NUMBER
2500------------------------
2501
2502CONSTANT:
2503    ``CONFIGURE_MP_NODE_NUMBER``
2504
2505DATA TYPE:
2506    Unsigned integer (``uint32_t``).
2507
2508RANGE:
2509    Positive.
2510
2511DEFAULT VALUE:
2512    The default value is ``NODE_NUMBER``, which is assumed to be set by the
2513    compilation environment.
2514
2515DESCRIPTION:
2516    ``CONFIGURE_MP_NODE_NUMBER`` is the node number of this node in a
2517    multiprocessor system.
2518
2519NOTES:
2520    In the RTEMS Multiprocessing Test Suite, the node number is derived from
2521    the Makefile variable ``NODE_NUMBER``. The same code is compiled with the
2522    ``NODE_NUMBER`` set to different values. The test programs behave
2523    differently based upon their node number.
2524
2525PCI Library Configuration
2526=========================
2527
2528This section defines the system configuration parameters supported by
2529``rtems/confdefs.h`` related to configuring the PCI Library for RTEMS.
2530
2531The PCI Library startup behaviour can be configured in four different ways
2532depending on how ``CONFIGURE_PCI_CONFIG_LIB`` is defined:
2533
2534.. index:: PCI_LIB_AUTO
2535
2536``PCI_LIB_AUTO``
2537  Used to enable the PCI auto configuration software. PCI will be automatically
2538  probed, PCI buses enumerated, all devices and bridges will be initialized
2539  using Plug & Play software routines. The PCI device tree will be populated
2540  based on the PCI devices found in the system, PCI devices will be configured
2541  by allocating address region resources automatically in PCI space according
2542  to the BSP or host bridge driver set up.
2543
2544.. index:: PCI_LIB_READ
2545
2546``PCI_LIB_READ``
2547  Used to enable the PCI read configuration software. The current PCI
2548  configuration is read to create the RAM representation (the PCI device tree)
2549  of the PCI devices present. PCI devices are assumed to already have been
2550  initialized and PCI buses enumerated, it is therefore required that a BIOS or
2551  a boot loader has set up configuration space prior to booting into RTEMS.
2552
2553.. index:: PCI_LIB_STATIC
2554
2555``PCI_LIB_STATIC``
2556  Used to enable the PCI static configuration software. The user provides a PCI
2557  tree with information how all PCI devices are to be configured at compile
2558  time by linking in a custom ``struct pci_bus pci_hb`` tree. The static PCI
2559  library will not probe PCI for devices, instead it will assume that all
2560  devices defined by the user are present, it will enumerate the PCI buses and
2561  configure all PCI devices in static configuration accordingly. Since probe
2562  and allocation software is not needed the startup is faster, has smaller
2563  footprint and does not require dynamic memory allocation.
2564
2565.. index:: PCI_LIB_PERIPHERAL
2566
2567``PCI_LIB_PERIPHERAL``
2568  Used to enable the PCI peripheral configuration. It is similar to
2569  ``PCI_LIB_STATIC``, but it will never write the configuration to the PCI
2570  devices since PCI peripherals are not allowed to access PCI configuration
2571  space.
2572
2573Note that selecting ``PCI_LIB_STATIC`` or ``PCI_LIB_PERIPHERAL`` but not
2574defining ``pci_hb`` will reuslt in link errors. Note also that in these modes
2575Plug & Play is not performed.
2576
2577Event Recording Configuration
2578=============================
2579
2580.. index:: CONFIGURE_RECORD_EXTENSIONS_ENABLED
2581
2582.. _CONFIGURE_RECORD_EXTENSIONS_ENABLED:
2583
2584CONFIGURE_RECORD_EXTENSIONS_ENABLED
2585-----------------------------------
2586
2587CONSTANT:
2588    ``CONFIGURE_RECORD_EXTENSIONS_ENABLED``
2589
2590DATA TYPE:
2591    Boolean feature macro.
2592
2593RANGE:
2594    Defined or undefined.
2595
2596DEFAULT VALUE:
2597    This is not defined by default.
2598
2599DESCRIPTION:
2600    If defined and :ref:`CONFIGURE_RECORD_PER_PROCESSOR_ITEMS
2601    <CONFIGURE_RECORD_PER_PROCESSOR_ITEMS>` is also defined properly, then the
2602    record extensions are enabled.
2603
2604NOTES:
2605    The record extensions capture thread create, start, restart, delete,
2606    switch, begin, exitted and terminate events.
2607
2608.. index:: CONFIGURE_RECORD_PER_PROCESSOR_ITEMS
2609
2610.. _CONFIGURE_RECORD_PER_PROCESSOR_ITEMS:
2611
2612CONFIGURE_RECORD_PER_PROCESSOR_ITEMS
2613------------------------------------
2614
2615CONSTANT:
2616    ``CONFIGURE_RECORD_PER_PROCESSOR_ITEMS``
2617
2618DATA TYPE:
2619    Unsigned integer (``unsigned int``).
2620
2621RANGE:
2622    A power of two greater than or equal to 16.
2623
2624DEFAULT VALUE:
2625    This is not defined by default.
2626
2627DESCRIPTION:
2628    If defined, then a record item buffer of the specified item count is
2629    statically allocated for each configured processor
2630    (:ref:`CONFIGURE_MAXIMUM_PROCESSORS <CONFIGURE_MAXIMUM_PROCESSORS>`).
2631
2632NOTES:
2633    None.
2634
2635.. _ConfigAda:
2636
2637Ada Configuration
2638=================
2639
2640The GNU Ada runtime library (libgnarl) uses threads, mutexes, condition
2641variables, and signals from the pthreads API.  It uses also thread-local storage
2642for the Ada Task Control Block (ATCB).  From these resources only the threads
2643need to be accounted for in the configuration.  You should include the Ada tasks
2644in your setting of the :ref:`CONFIGURE_MAXIMUM_POSIX_THREADS` configuration
2645option.
2646
2647Obsolete Configuration Options
2648==============================
2649
2650.. index:: CONFIGURE_BDBUF_BUFFER_COUNT
2651
2652CONFIGURE_BDBUF_BUFFER_COUNT
2653----------------------------
2654
2655This configuration option was introduced in RTEMS 4.7.0 and is obsolete since
2656RTEMS 4.10.0.
2657
2658.. index:: CONFIGURE_BDBUF_BUFFER_SIZE
2659
2660CONFIGURE_BDBUF_BUFFER_SIZE
2661---------------------------
2662
2663This configuration option was introduced in RTEMS 4.7.0 and is obsolete since
2664RTEMS 4.10.0.
2665
2666.. index:: CONFIGURE_DISABLE_CLASSIC_API_NOTEPADS
2667
2668CONFIGURE_DISABLE_CLASSIC_API_NOTEPADS
2669--------------------------------------
2670
2671This configuration option was introduced in RTEMS 4.9.0 and is obsolete since
2672RTEMS 5.1.
2673
2674.. index:: CONFIGURE_ENABLE_GO
2675
2676CONFIGURE_ENABLE_GO
2677-------------------
2678
2679This configuration option is obsolete since RTEMS 5.1.
2680
2681.. index:: CONFIGURE_GNAT_RTEMS
2682
2683CONFIGURE_GNAT_RTEMS
2684--------------------
2685
2686This configuration option was present in all RTEMS versions since at 1997 and is
2687obsolete since RTEMS 5.1.  See also :ref:`ConfigAda`.
2688
2689.. index:: CONFIGURE_HAS_OWN_CONFIGURATION_TABLE
2690
2691CONFIGURE_HAS_OWN_CONFIGURATION_TABLE
2692-------------------------------------
2693
2694This configuration option is obsolete since RTEMS 5.1.
2695
2696.. index:: CONFIGURE_HAS_OWN_BDBUF_TABLE
2697
2698CONFIGURE_HAS_OWN_BDBUF_TABLE
2699-----------------------------
2700
2701This configuration option was introduced in RTEMS 4.7.0 and is obsolete since
2702RTEMS 4.10.0.
2703
2704.. index:: CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE
2705
2706CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE
2707-------------------------------------
2708
2709This configuration option was present in all RTEMS versions since at least 1995
2710and is obsolete since RTEMS 5.1.
2711
2712.. index:: CONFIGURE_HAS_OWN_INIT_TASK_TABLE
2713
2714.. _CONFIGURE_HAS_OWN_INIT_TASK_TABLE:
2715
2716CONFIGURE_HAS_OWN_INIT_TASK_TABLE
2717---------------------------------
2718
2719This configuration option was present in all RTEMS versions since at least 1995
2720and is obsolete since RTEMS 5.1.  If you used this configuration option or you
2721think that there should be a way to configure more than one Classic API
2722initialization task, then please ask on the :r:list:`users`.
2723
2724.. index:: CONFIGURE_HAS_OWN_MOUNT_TABLE
2725
2726CONFIGURE_HAS_OWN_MOUNT_TABLE
2727-----------------------------
2728
2729This configuration option is obsolete since RTEMS 5.1.
2730
2731.. index:: CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE
2732
2733CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE
2734---------------------------------------
2735
2736This configuration option is obsolete since RTEMS 5.1.
2737
2738.. index:: CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS
2739
2740CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS
2741--------------------------------
2742
2743This configuration option was present in all RTEMS versions since at 1998 and is
2744obsolete since RTEMS 5.1.  See also :ref:`CONFIGURE_MAXIMUM_FILE_DESCRIPTORS`.
2745
2746.. index:: CONFIGURE_MAXIMUM_ADA_TASKS
2747
2748CONFIGURE_MAXIMUM_ADA_TASKS
2749---------------------------
2750
2751This configuration option was present in all RTEMS versions since at 1997 and is
2752obsolete since RTEMS 5.1.  See also :ref:`ConfigAda`.
2753
2754.. index:: CONFIGURE_MAXIMUM_FAKE_ADA_TASKS
2755
2756CONFIGURE_MAXIMUM_FAKE_ADA_TASKS
2757--------------------------------
2758
2759This configuration option was present in all RTEMS versions since at 1997 and is
2760obsolete since RTEMS 5.1.  See also :ref:`ConfigAda`.
2761
2762.. index:: CONFIGURE_MAXIMUM_GO_CHANNELS
2763
2764CONFIGURE_MAXIMUM_GO_CHANNELS
2765-----------------------------
2766
2767This configuration option is obsolete since RTEMS 5.1.
2768
2769.. index:: CONFIGURE_MAXIMUM_GOROUTINES
2770
2771CONFIGURE_MAXIMUM_GOROUTINES
2772----------------------------
2773
2774This configuration option is obsolete since RTEMS 5.1.
2775
2776.. index:: CONFIGURE_MAXIMUM_MRSP_SEMAPHORES
2777
2778CONFIGURE_MAXIMUM_MRSP_SEMAPHORES
2779---------------------------------
2780
2781This configuration option is obsolete since RTEMS 5.1.
2782
2783.. index:: CONFIGURE_NUMBER_OF_TERMIOS_PORTS
2784
2785CONFIGURE_NUMBER_OF_TERMIOS_PORTS
2786---------------------------------
2787
2788This configuration option is obsolete since RTEMS 5.1.
2789
2790.. index:: CONFIGURE_MAXIMUM_POSIX_BARRIERS
2791
2792CONFIGURE_MAXIMUM_POSIX_BARRIERS
2793--------------------------------
2794
2795This configuration option is obsolete since RTEMS 5.1.
2796
2797.. index:: CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES
2798
2799CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES
2800-------------------------------------------
2801
2802This configuration option is obsolete since RTEMS 5.1.
2803
2804.. index:: CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUE_DESCRIPTORS
2805
2806CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUE_DESCRIPTORS
2807-------------------------------
2808
2809This configuration option was introduced in RTEMS 4.10.0 and is obsolete since
2810RTEMS 5.1.
2811
2812.. index:: CONFIGURE_MAXIMUM_POSIX_MUTEXES
2813
2814CONFIGURE_MAXIMUM_POSIX_MUTEXES
2815-------------------------------
2816
2817This configuration option is obsolete since RTEMS 5.1.
2818
2819.. index:: CONFIGURE_MAXIMUM_POSIX_RWLOCKS
2820
2821CONFIGURE_MAXIMUM_POSIX_RWLOCKS
2822-------------------------------
2823
2824This configuration option is obsolete since RTEMS 5.1.
2825
2826.. index:: CONFIGURE_MAXIMUM_POSIX_SPINLOCKS
2827
2828CONFIGURE_MAXIMUM_POSIX_SPINLOCKS
2829---------------------------------
2830
2831This configuration option is obsolete since RTEMS 5.1.
2832
2833.. index:: CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE
2834
2835.. _CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE:
2836
2837CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE
2838-----------------------------------------
2839
2840This configuration option was present in all RTEMS versions since at least 1995
2841and is obsolete since RTEMS 5.1.  If you used this configuration option or you
2842think that there should be a way to configure more than one POSIX initialization
2843thread, then please ask on the  :r:list:`users`.
2844
2845.. index:: CONFIGURE_SMP_APPLICATION
2846
2847CONFIGURE_SMP_APPLICATION
2848-------------------------
2849
2850This configuration option was introduced in RTEMS 4.11.0 and is obsolete since
2851RTEMS 5.1.
2852
2853.. index:: CONFIGURE_SMP_MAXIMUM_PROCESSORS
2854
2855CONFIGURE_SMP_MAXIMUM_PROCESSORS
2856--------------------------------
2857
2858This configuration option was introduced in RTEMS 4.11.0 and is obsolete since
2859RTEMS 5.1.  See also :ref:`CONFIGURE_MAXIMUM_PROCESSORS`.
2860
2861.. index:: CONFIGURE_TERMIOS_DISABLED
2862
2863CONFIGURE_TERMIOS_DISABLED
2864--------------------------
2865
2866This configuration option is obsolete since RTEMS 5.1.
Note: See TracBrowser for help on using the repository browser.