22 #ifndef __CONFIGURATION_TEMPLATE_h 23 #define __CONFIGURATION_TEMPLATE_h 31 #include <rtems/sysinit.h> 55 #ifdef CONFIGURE_DISABLE_BSP_SETTINGS 56 #undef BSP_DEFAULT_UNIFIED_WORK_AREAS 57 #undef BSP_IDLE_TASK_BODY 58 #undef BSP_IDLE_TASK_STACK_SIZE 59 #undef BSP_INITIAL_EXTENSION 60 #undef BSP_INTERRUPT_STACK_SIZE 61 #undef BSP_MAXIMUM_DEVICES 62 #undef BSP_ZERO_WORKSPACE_AUTOMATICALLY 63 #undef CONFIGURE_BSP_PREREQUISITE_DRIVERS 64 #undef CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK 70 #include <sys/reent.h> 111 #if defined(RTEMS_MULTIPROCESSING) 115 extern rtems_multiprocessing_table Multiprocessing_configuration;
122 #ifdef RTEMS_SCHEDSIM 126 #if (defined(RTEMS_NEWLIB) && !defined(CONFIGURE_DISABLE_NEWLIB_REENTRANCY)) 127 #define _CONFIGURE_NEWLIB_EXTENSION 1 129 #define _CONFIGURE_NEWLIB_EXTENSION 0 132 #ifndef RTEMS_SCHEDSIM 135 #ifdef CONFIGURE_INIT 136 #ifndef CONFIGURE_APPLICATION_DISABLE_FILESYSTEM 139 RTEMS_SYSINIT_ROOT_FILESYSTEM,
140 RTEMS_SYSINIT_ORDER_MIDDLE
151 #ifndef CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 152 #define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 3 158 #define _CONFIGURE_LIBIO_POSIX_KEYS 1 160 #ifdef CONFIGURE_INIT 167 const uint32_t rtems_libio_number_iops = RTEMS_ARRAY_SIZE(rtems_libio_iops);
170 #ifdef CONFIGURE_SMP_MAXIMUM_PROCESSORS 171 #warning "CONFIGURE_SMP_MAXIMUM_PROCESSORS has been renamed to CONFIGURE_MAXIMUM_PROCESSORS since RTEMS 5.1" 172 #define CONFIGURE_MAXIMUM_PROCESSORS CONFIGURE_SMP_MAXIMUM_PROCESSORS 176 #if defined(CONFIGURE_MAXIMUM_PROCESSORS) && defined(RTEMS_SMP) 177 #define _CONFIGURE_MAXIMUM_PROCESSORS CONFIGURE_MAXIMUM_PROCESSORS 179 #define _CONFIGURE_MAXIMUM_PROCESSORS 1 187 #if !defined(CONFIGURE_DISABLE_SMP_CONFIGURATION) 188 #define _CONFIGURE_SMP_APPLICATION 189 #elif _CONFIGURE_MAXIMUM_PROCESSORS > 1 190 #error "CONFIGURE_DISABLE_SMP_CONFIGURATION and CONFIGURE_MAXIMUM_PROCESSORS > 1 makes no sense" 194 #ifdef CONFIGURE_SMP_APPLICATION 195 #warning "CONFIGURE_SMP_APPLICATION is obsolete since RTEMS 5.1" 205 #if !defined(CONFIGURE_MAXIMUM_FIFOS) 206 #define CONFIGURE_MAXIMUM_FIFOS 0 212 #if !defined(CONFIGURE_MAXIMUM_PIPES) 213 #define CONFIGURE_MAXIMUM_PIPES 0 220 #if CONFIGURE_MAXIMUM_FIFOS > 0 || CONFIGURE_MAXIMUM_PIPES > 0 221 #define _CONFIGURE_BARRIERS_FOR_FIFOS \ 222 (2 * (CONFIGURE_MAXIMUM_FIFOS + CONFIGURE_MAXIMUM_PIPES)) 224 #define _CONFIGURE_BARRIERS_FOR_FIFOS 0 266 #ifdef CONFIGURE_INIT 272 #ifdef CONFIGURE_FILESYSTEM_ALL 273 #define CONFIGURE_FILESYSTEM_IMFS 274 #define CONFIGURE_FILESYSTEM_DEVFS 275 #define CONFIGURE_FILESYSTEM_TFTPFS 276 #define CONFIGURE_FILESYSTEM_FTPFS 277 #define CONFIGURE_FILESYSTEM_NFS 278 #define CONFIGURE_FILESYSTEM_DOSFS 279 #define CONFIGURE_FILESYSTEM_RFS 280 #define CONFIGURE_FILESYSTEM_JFFS2 287 #if defined(CONFIGURE_APPLICATION_DISABLE_FILESYSTEM) 288 #if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM) 289 #error "Filesystem disabled and a base filesystem configured." 292 #if defined(CONFIGURE_FILESYSTEM_IMFS) || \ 293 defined(CONFIGURE_FILESYSTEM_DEVFS) || \ 294 defined(CONFIGURE_FILESYSTEM_TFTPFS) || \ 295 defined(CONFIGURE_FILESYSTEM_FTPFS) || \ 296 defined(CONFIGURE_FILESYSTEM_NFS) || \ 297 defined(CONFIGURE_FILESYSTEM_DOSFS) || \ 298 defined(CONFIGURE_FILESYSTEM_RFS) || \ 299 defined(CONFIGURE_FILESYSTEM_JFFS2) 300 #error "Filesystem disabled and a filesystem configured." 308 #if !defined(CONFIGURE_APPLICATION_DISABLE_FILESYSTEM) 309 #if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM) 310 #define CONFIGURE_FILESYSTEM_DEVFS 316 #ifndef RTEMS_SCHEDSIM 328 #ifndef CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK 329 #define CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK \ 330 IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK 336 #if !defined(CONFIGURE_FILESYSTEM_ENTRY_IMFS) && \ 337 defined(CONFIGURE_FILESYSTEM_IMFS) 338 #define CONFIGURE_FILESYSTEM_ENTRY_IMFS \ 339 { RTEMS_FILESYSTEM_TYPE_IMFS, IMFS_initialize } 343 #ifdef CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM 344 #define CONFIGURE_IMFS_DISABLE_CHMOD 345 #define CONFIGURE_IMFS_DISABLE_CHOWN 346 #define CONFIGURE_IMFS_DISABLE_UTIME 347 #define CONFIGURE_IMFS_DISABLE_LINK 348 #define CONFIGURE_IMFS_DISABLE_SYMLINK 349 #define CONFIGURE_IMFS_DISABLE_READLINK 350 #define CONFIGURE_IMFS_DISABLE_RENAME 351 #define CONFIGURE_IMFS_DISABLE_UNMOUNT 357 #if !defined(CONFIGURE_FILESYSTEM_ENTRY_DEVFS) && \ 358 defined(CONFIGURE_FILESYSTEM_DEVFS) 360 #define CONFIGURE_FILESYSTEM_ENTRY_DEVFS \ 361 { RTEMS_FILESYSTEM_TYPE_DEVFS, devFS_initialize } 367 #if !defined(CONFIGURE_FILESYSTEM_ENTRY_FTPFS) && \ 368 defined(CONFIGURE_FILESYSTEM_FTPFS) 370 #define CONFIGURE_FILESYSTEM_ENTRY_FTPFS \ 371 { RTEMS_FILESYSTEM_TYPE_FTPFS, rtems_ftpfs_initialize } 377 #if !defined(CONFIGURE_FILESYSTEM_ENTRY_TFTPFS) && \ 378 defined(CONFIGURE_FILESYSTEM_TFTPFS) 379 #include <rtems/tftp.h> 380 #define CONFIGURE_FILESYSTEM_ENTRY_TFTPFS \ 381 { RTEMS_FILESYSTEM_TYPE_TFTPFS, rtems_tftpfs_initialize } 387 #if !defined(CONFIGURE_FILESYSTEM_ENTRY_NFS) && \ 388 defined(CONFIGURE_FILESYSTEM_NFS) 389 #include <librtemsNfs.h> 390 #define CONFIGURE_FILESYSTEM_ENTRY_NFS \ 391 { RTEMS_FILESYSTEM_TYPE_NFS, rtems_nfs_initialize } 397 #if !defined(CONFIGURE_FILESYSTEM_ENTRY_DOSFS) && \ 398 defined(CONFIGURE_FILESYSTEM_DOSFS) 400 #define CONFIGURE_FILESYSTEM_ENTRY_DOSFS \ 401 { RTEMS_FILESYSTEM_TYPE_DOSFS, rtems_dosfs_initialize } 407 #if !defined(CONFIGURE_FILESYSTEM_ENTRY_RFS) && \ 408 defined(CONFIGURE_FILESYSTEM_RFS) 410 #define CONFIGURE_FILESYSTEM_ENTRY_RFS \ 411 { RTEMS_FILESYSTEM_TYPE_RFS, rtems_rfs_rtems_initialise } 417 #if !defined(CONFIGURE_FILESYSTEM_ENTRY_JFFS2) && \ 418 defined(CONFIGURE_FILESYSTEM_JFFS2) 419 #include <rtems/jffs2.h> 420 #define CONFIGURE_FILESYSTEM_ENTRY_JFFS2 \ 421 { RTEMS_FILESYSTEM_TYPE_JFFS2, rtems_jffs2_initialize } 424 #ifdef CONFIGURE_INIT 435 #ifdef CONFIGURE_FILESYSTEM_DEVFS 436 #ifndef CONFIGURE_MAXIMUM_DEVICES 437 #if defined(BSP_MAXIMUM_DEVICES) 438 #define CONFIGURE_MAXIMUM_DEVICES BSP_MAXIMUM_DEVICES 440 #define CONFIGURE_MAXIMUM_DEVICES 4 449 #define CONFIGURE_FILESYSTEM_NULL { NULL, NULL } 451 #ifndef RTEMS_SCHEDSIM 452 #if !defined(CONFIGURE_APPLICATION_DISABLE_FILESYSTEM) && \ 453 !defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM) 454 int imfs_rq_memfile_bytes_per_block =
462 #ifndef CONFIGURE_APPLICATION_DISABLE_FILESYSTEM 464 #if !defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM) 465 {
"/", IMFS_initialize_support },
467 #if defined(CONFIGURE_FILESYSTEM_IMFS) && \ 468 defined(CONFIGURE_FILESYSTEM_ENTRY_IMFS) 469 CONFIGURE_FILESYSTEM_ENTRY_IMFS,
471 #if defined(CONFIGURE_FILESYSTEM_DEVFS) && \ 472 defined(CONFIGURE_FILESYSTEM_ENTRY_DEVFS) 473 CONFIGURE_FILESYSTEM_ENTRY_DEVFS,
475 #if defined(CONFIGURE_FILESYSTEM_TFTPFS) && \ 476 defined(CONFIGURE_FILESYSTEM_ENTRY_TFTPFS) 477 CONFIGURE_FILESYSTEM_ENTRY_TFTPFS,
479 #if defined(CONFIGURE_FILESYSTEM_FTPFS) && \ 480 defined(CONFIGURE_FILESYSTEM_ENTRY_FTPFS) 481 CONFIGURE_FILESYSTEM_ENTRY_FTPFS,
483 #if defined(CONFIGURE_FILESYSTEM_NFS) && \ 484 defined(CONFIGURE_FILESYSTEM_ENTRY_NFS) 485 CONFIGURE_FILESYSTEM_ENTRY_NFS,
487 #if defined(CONFIGURE_FILESYSTEM_DOSFS) && \ 488 defined(CONFIGURE_FILESYSTEM_ENTRY_DOSFS) 489 CONFIGURE_FILESYSTEM_ENTRY_DOSFS,
491 #if defined(CONFIGURE_FILESYSTEM_RFS) && \ 492 defined(CONFIGURE_FILESYSTEM_ENTRY_RFS) 493 CONFIGURE_FILESYSTEM_ENTRY_RFS,
495 #if defined(CONFIGURE_FILESYSTEM_JFFS2) && \ 496 defined(CONFIGURE_FILESYSTEM_ENTRY_JFFS2) 497 CONFIGURE_FILESYSTEM_ENTRY_JFFS2,
499 CONFIGURE_FILESYSTEM_NULL
502 #if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM) 503 static devFS_node devFS_root_filesystem_nodes [CONFIGURE_MAXIMUM_DEVICES];
504 static const devFS_data devFS_root_filesystem_data = {
505 devFS_root_filesystem_nodes,
506 CONFIGURE_MAXIMUM_DEVICES
515 #ifdef CONFIGURE_IMFS_DISABLE_LINK 521 #ifdef CONFIGURE_IMFS_DISABLE_MKNOD 526 #ifdef CONFIGURE_IMFS_DISABLE_RMNOD 531 #ifdef CONFIGURE_IMFS_DISABLE_CHMOD 536 #ifdef CONFIGURE_IMFS_DISABLE_CHOWN 543 #ifdef CONFIGURE_IMFS_DISABLE_MOUNT 548 #ifdef CONFIGURE_IMFS_DISABLE_UNMOUNT 554 #ifdef CONFIGURE_IMFS_DISABLE_UTIME 559 #ifdef CONFIGURE_IMFS_DISABLE_SYMLINK 564 #ifdef CONFIGURE_IMFS_DISABLE_READLINK 569 #ifdef CONFIGURE_IMFS_DISABLE_RENAME 578 #ifdef CONFIGURE_IMFS_DISABLE_READDIR 579 &IMFS_mknod_control_dir_minimal,
581 &IMFS_mknod_control_dir_default,
583 &IMFS_mknod_control_device,
584 #ifdef CONFIGURE_IMFS_DISABLE_MKNOD_FILE 585 &IMFS_mknod_control_enosys,
587 &IMFS_mknod_control_memfile,
589 #if CONFIGURE_MAXIMUM_FIFOS > 0 || CONFIGURE_MAXIMUM_PIPES > 0 590 &IMFS_mknod_control_fifo
592 &IMFS_mknod_control_enosys
597 &_Configure_IMFS_fs_info,
598 &_Configure_IMFS_ops,
599 &_Configure_IMFS_mknod_controls
604 rtems_filesystem_root_configuration = {
607 #if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM) 608 RTEMS_FILESYSTEM_TYPE_DEVFS,
612 RTEMS_FILESYSTEM_READ_WRITE,
613 #if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM) 614 &devFS_root_filesystem_data
616 &_Configure_IMFS_mount_data
628 #if defined(STACK_CHECKER_ON) 629 #define CONFIGURE_STACK_CHECKER_ENABLED 630 #warning "STACK_CHECKER_ON deprecated -- use CONFIGURE_STACK_CHECKER_ENABLED" 636 #ifdef CONFIGURE_STACK_CHECKER_ENABLED 637 #define _CONFIGURE_STACK_CHECKER_EXTENSION 1 639 #define _CONFIGURE_STACK_CHECKER_EXTENSION 0 672 #ifndef CONFIGURE_MAXIMUM_PRIORITY 673 #define CONFIGURE_MAXIMUM_PRIORITY PRIORITY_DEFAULT_MAXIMUM 710 #ifdef CONFIGURE_SCHEDULER_CONTEXT 711 #warning "CONFIGURE_SCHEDULER_CONTEXT has been renamed to CONFIGURE_SCHEDULER since RTEMS 5.1" 712 #define CONFIGURE_SCHEDULER CONFIGURE_SCHEDULER_CONTEXT 715 #ifdef CONFIGURE_SCHEDULER_CONTROLS 716 #warning "CONFIGURE_SCHEDULER_CONTROLS has been renamed to CONFIGURE_SCHEDULER_TABLE_ENTRIES since RTEMS 5.1" 717 #define CONFIGURE_SCHEDULER_TABLE_ENTRIES CONFIGURE_SCHEDULER_CONTROLS 720 #ifdef CONFIGURE_SMP_SCHEDULER_ASSIGNMENTS 721 #warning "CONFIGURE_SMP_SCHEDULER_ASSIGNMENTS has been renamed to CONFIGURE_SCHEDULER_ASSIGNMENTS since RTEMS 5.1" 722 #define CONFIGURE_SCHEDULER_ASSIGNMENTS CONFIGURE_SMP_SCHEDULER_ASSIGNMENTS 725 #if !defined(CONFIGURE_SCHEDULER_USER) && \ 726 !defined(CONFIGURE_SCHEDULER_PRIORITY) && \ 727 !defined(CONFIGURE_SCHEDULER_PRIORITY_SMP) && \ 728 !defined(CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP) && \ 729 !defined(CONFIGURE_SCHEDULER_STRONG_APA) && \ 730 !defined(CONFIGURE_SCHEDULER_SIMPLE) && \ 731 !defined(CONFIGURE_SCHEDULER_SIMPLE_SMP) && \ 732 !defined(CONFIGURE_SCHEDULER_EDF) && \ 733 !defined(CONFIGURE_SCHEDULER_EDF_SMP) && \ 734 !defined(CONFIGURE_SCHEDULER_CBS) 735 #if defined(RTEMS_SMP) && _CONFIGURE_MAXIMUM_PROCESSORS > 1 740 #define CONFIGURE_SCHEDULER_EDF_SMP 746 #define CONFIGURE_SCHEDULER_PRIORITY 755 #if defined(CONFIGURE_SCHEDULER_PRIORITY) 756 #if !defined(CONFIGURE_SCHEDULER_NAME) 758 #define CONFIGURE_SCHEDULER_NAME rtems_build_name('U', 'P', 'D', ' ') 761 #if !defined(CONFIGURE_SCHEDULER_TABLE_ENTRIES) 763 #define CONFIGURE_SCHEDULER \ 764 RTEMS_SCHEDULER_PRIORITY( \ 766 CONFIGURE_MAXIMUM_PRIORITY + 1 \ 770 #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \ 771 RTEMS_SCHEDULER_TABLE_PRIORITY(dflt, CONFIGURE_SCHEDULER_NAME) 779 #if defined(CONFIGURE_SCHEDULER_PRIORITY_SMP) 780 #if !defined(CONFIGURE_SCHEDULER_NAME) 782 #define CONFIGURE_SCHEDULER_NAME rtems_build_name('M', 'P', 'D', ' ') 785 #if !defined(CONFIGURE_SCHEDULER_TABLE_ENTRIES) 787 #define CONFIGURE_SCHEDULER \ 788 RTEMS_SCHEDULER_PRIORITY_SMP( \ 790 CONFIGURE_MAXIMUM_PRIORITY + 1 \ 794 #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \ 795 RTEMS_SCHEDULER_TABLE_PRIORITY_SMP(dflt, CONFIGURE_SCHEDULER_NAME) 803 #if defined(CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP) 804 #if !defined(CONFIGURE_SCHEDULER_NAME) 806 #define CONFIGURE_SCHEDULER_NAME rtems_build_name('M', 'P', 'A', ' ') 809 #if !defined(CONFIGURE_SCHEDULER_TABLE_ENTRIES) 811 #define CONFIGURE_SCHEDULER \ 812 RTEMS_SCHEDULER_PRIORITY_AFFINITY_SMP( \ 814 CONFIGURE_MAXIMUM_PRIORITY + 1 \ 818 #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \ 819 RTEMS_SCHEDULER_TABLE_PRIORITY_AFFINITY_SMP( \ 821 CONFIGURE_SCHEDULER_NAME \ 830 #if defined(CONFIGURE_SCHEDULER_STRONG_APA) 831 #if !defined(CONFIGURE_SCHEDULER_NAME) 833 #define CONFIGURE_SCHEDULER_NAME rtems_build_name('M', 'A', 'P', 'A') 836 #if !defined(CONFIGURE_SCHEDULER_TABLE_ENTRIES) 838 #define CONFIGURE_SCHEDULER \ 839 RTEMS_SCHEDULER_STRONG_APA( \ 841 CONFIGURE_MAXIMUM_PRIORITY + 1 \ 845 #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \ 846 RTEMS_SCHEDULER_TABLE_STRONG_APA(dflt, CONFIGURE_SCHEDULER_NAME) 853 #if defined(CONFIGURE_SCHEDULER_SIMPLE) 854 #if !defined(CONFIGURE_SCHEDULER_NAME) 856 #define CONFIGURE_SCHEDULER_NAME rtems_build_name('U', 'P', 'S', ' ') 859 #if !defined(CONFIGURE_SCHEDULER_TABLE_ENTRIES) 861 #define CONFIGURE_SCHEDULER RTEMS_SCHEDULER_SIMPLE(dflt) 864 #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \ 865 RTEMS_SCHEDULER_TABLE_SIMPLE(dflt, CONFIGURE_SCHEDULER_NAME) 872 #if defined(CONFIGURE_SCHEDULER_SIMPLE_SMP) 873 #if !defined(CONFIGURE_SCHEDULER_NAME) 875 #define CONFIGURE_SCHEDULER_NAME rtems_build_name('M', 'P', 'S', ' ') 878 #if !defined(CONFIGURE_SCHEDULER_TABLE_ENTRIES) 880 #define CONFIGURE_SCHEDULER \ 881 RTEMS_SCHEDULER_SIMPLE_SMP(dflt) 884 #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \ 885 RTEMS_SCHEDULER_TABLE_SIMPLE_SMP(dflt, CONFIGURE_SCHEDULER_NAME) 892 #if defined(CONFIGURE_SCHEDULER_EDF) 893 #if !defined(CONFIGURE_SCHEDULER_NAME) 895 #define CONFIGURE_SCHEDULER_NAME rtems_build_name('U', 'E', 'D', 'F') 898 #if !defined(CONFIGURE_SCHEDULER_TABLE_ENTRIES) 900 #define CONFIGURE_SCHEDULER RTEMS_SCHEDULER_EDF(dflt) 903 #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \ 904 RTEMS_SCHEDULER_TABLE_EDF(dflt, CONFIGURE_SCHEDULER_NAME) 911 #if defined(CONFIGURE_SCHEDULER_EDF_SMP) 912 #if !defined(CONFIGURE_SCHEDULER_NAME) 914 #define CONFIGURE_SCHEDULER_NAME rtems_build_name('M', 'E', 'D', 'F') 917 #if !defined(CONFIGURE_SCHEDULER_TABLE_ENTRIES) 919 #define CONFIGURE_SCHEDULER \ 920 RTEMS_SCHEDULER_EDF_SMP(dflt, _CONFIGURE_MAXIMUM_PROCESSORS) 923 #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \ 924 RTEMS_SCHEDULER_TABLE_EDF_SMP(dflt, CONFIGURE_SCHEDULER_NAME) 931 #if defined(CONFIGURE_SCHEDULER_CBS) 932 #if !defined(CONFIGURE_SCHEDULER_NAME) 934 #define CONFIGURE_SCHEDULER_NAME rtems_build_name('U', 'C', 'B', 'S') 937 #if !defined(CONFIGURE_SCHEDULER_TABLE_ENTRIES) 939 #define CONFIGURE_SCHEDULER RTEMS_SCHEDULER_CBS(dflt) 942 #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \ 943 RTEMS_SCHEDULER_TABLE_CBS(dflt, CONFIGURE_SCHEDULER_NAME) 946 #ifndef CONFIGURE_CBS_MAXIMUM_SERVERS 947 #define CONFIGURE_CBS_MAXIMUM_SERVERS CONFIGURE_MAXIMUM_TASKS 950 #ifdef CONFIGURE_INIT 952 CONFIGURE_CBS_MAXIMUM_SERVERS;
963 #ifdef CONFIGURE_INIT 964 #if defined(CONFIGURE_SCHEDULER) 972 #define _CONFIGURE_SCHEDULER_COUNT RTEMS_ARRAY_SIZE( _Scheduler_Table ) 974 #if defined(RTEMS_SMP) 977 const Scheduler_Assignment _Scheduler_Initial_assignments[] = {
978 #if defined(CONFIGURE_SCHEDULER_ASSIGNMENTS) 979 CONFIGURE_SCHEDULER_ASSIGNMENTS
981 #define _CONFIGURE_SCHEDULER_ASSIGN \ 982 RTEMS_SCHEDULER_ASSIGN( \ 984 RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL \ 986 _CONFIGURE_SCHEDULER_ASSIGN
987 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 2 988 , _CONFIGURE_SCHEDULER_ASSIGN
990 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 3 991 , _CONFIGURE_SCHEDULER_ASSIGN
993 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 4 994 , _CONFIGURE_SCHEDULER_ASSIGN
996 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 5 997 , _CONFIGURE_SCHEDULER_ASSIGN
999 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 6 1000 , _CONFIGURE_SCHEDULER_ASSIGN
1002 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 7 1003 , _CONFIGURE_SCHEDULER_ASSIGN
1005 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 8 1006 , _CONFIGURE_SCHEDULER_ASSIGN
1008 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 9 1009 , _CONFIGURE_SCHEDULER_ASSIGN
1011 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 10 1012 , _CONFIGURE_SCHEDULER_ASSIGN
1014 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 11 1015 , _CONFIGURE_SCHEDULER_ASSIGN
1017 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 12 1018 , _CONFIGURE_SCHEDULER_ASSIGN
1020 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 13 1021 , _CONFIGURE_SCHEDULER_ASSIGN
1023 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 14 1024 , _CONFIGURE_SCHEDULER_ASSIGN
1026 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 15 1027 , _CONFIGURE_SCHEDULER_ASSIGN
1029 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 16 1030 , _CONFIGURE_SCHEDULER_ASSIGN
1032 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 17 1033 , _CONFIGURE_SCHEDULER_ASSIGN
1035 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 18 1036 , _CONFIGURE_SCHEDULER_ASSIGN
1038 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 19 1039 , _CONFIGURE_SCHEDULER_ASSIGN
1041 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 20 1042 , _CONFIGURE_SCHEDULER_ASSIGN
1044 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 21 1045 , _CONFIGURE_SCHEDULER_ASSIGN
1047 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 22 1048 , _CONFIGURE_SCHEDULER_ASSIGN
1050 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 23 1051 , _CONFIGURE_SCHEDULER_ASSIGN
1053 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 24 1054 , _CONFIGURE_SCHEDULER_ASSIGN
1056 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 25 1057 , _CONFIGURE_SCHEDULER_ASSIGN
1059 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 26 1060 , _CONFIGURE_SCHEDULER_ASSIGN
1062 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 27 1063 , _CONFIGURE_SCHEDULER_ASSIGN
1065 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 28 1066 , _CONFIGURE_SCHEDULER_ASSIGN
1068 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 29 1069 , _CONFIGURE_SCHEDULER_ASSIGN
1071 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 30 1072 , _CONFIGURE_SCHEDULER_ASSIGN
1074 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 31 1075 , _CONFIGURE_SCHEDULER_ASSIGN
1077 #if _CONFIGURE_MAXIMUM_PROCESSORS >= 32 1078 , _CONFIGURE_SCHEDULER_ASSIGN
1080 #undef _CONFIGURE_SCHEDULER_ASSIGN 1084 RTEMS_STATIC_ASSERT(
1085 _CONFIGURE_MAXIMUM_PROCESSORS
1086 == RTEMS_ARRAY_SIZE( _Scheduler_Initial_assignments ),
1087 _Scheduler_Initial_assignments
1107 #if (defined(CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION) && \ 1108 !defined(CONFIGURE_IDLE_TASK_BODY)) 1109 #error "CONFIGURE_ERROR: You did not override the IDLE task body." 1120 #ifndef CONFIGURE_IDLE_TASK_BODY 1121 #if defined(BSP_IDLE_TASK_BODY) 1122 #define CONFIGURE_IDLE_TASK_BODY BSP_IDLE_TASK_BODY 1124 #define CONFIGURE_IDLE_TASK_BODY _CPU_Thread_Idle_body 1140 #ifndef CONFIGURE_MINIMUM_TASK_STACK_SIZE 1141 #define CONFIGURE_MINIMUM_TASK_STACK_SIZE CPU_STACK_MINIMUM_SIZE 1148 #ifndef CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE 1149 #define CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE \ 1150 (2 * CONFIGURE_MINIMUM_TASK_STACK_SIZE) 1159 #ifndef CONFIGURE_IDLE_TASK_STACK_SIZE 1160 #ifdef BSP_IDLE_TASK_STACK_SIZE 1161 #define CONFIGURE_IDLE_TASK_STACK_SIZE BSP_IDLE_TASK_STACK_SIZE 1163 #define CONFIGURE_IDLE_TASK_STACK_SIZE CONFIGURE_MINIMUM_TASK_STACK_SIZE 1166 #if CONFIGURE_IDLE_TASK_STACK_SIZE < CONFIGURE_MINIMUM_TASK_STACK_SIZE 1167 #error "CONFIGURE_IDLE_TASK_STACK_SIZE less than CONFIGURE_MINIMUM_TASK_STACK_SIZE" 1177 #ifndef CONFIGURE_INTERRUPT_STACK_SIZE 1178 #ifdef BSP_INTERRUPT_STACK_SIZE 1179 #define CONFIGURE_INTERRUPT_STACK_SIZE BSP_INTERRUPT_STACK_SIZE 1181 #define CONFIGURE_INTERRUPT_STACK_SIZE CPU_STACK_MINIMUM_SIZE 1185 #if CONFIGURE_INTERRUPT_STACK_SIZE % CPU_INTERRUPT_STACK_ALIGNMENT != 0 1186 #error "CONFIGURE_INTERRUPT_STACK_SIZE fails to meet the CPU port interrupt stack alignment" 1189 #ifdef CONFIGURE_INIT 1192 CONFIGURE_INTERRUPT_STACK_SIZE
1196 _CONFIGURE_MAXIMUM_PROCESSORS * CONFIGURE_INTERRUPT_STACK_SIZE
1207 #ifndef CONFIGURE_TASK_STACK_ALLOCATOR_INIT 1208 #define CONFIGURE_TASK_STACK_ALLOCATOR_INIT NULL 1214 #if !defined(CONFIGURE_TASK_STACK_ALLOCATOR) \ 1215 && !defined(CONFIGURE_TASK_STACK_DEALLOCATOR) 1219 #define CONFIGURE_TASK_STACK_ALLOCATOR _Workspace_Allocate 1223 #define CONFIGURE_TASK_STACK_DEALLOCATOR _Workspace_Free 1224 #elif (defined(CONFIGURE_TASK_STACK_ALLOCATOR) \ 1225 && !defined(CONFIGURE_TASK_STACK_DEALLOCATOR)) \ 1226 || (!defined(CONFIGURE_TASK_STACK_ALLOCATOR) \ 1227 && defined(CONFIGURE_TASK_STACK_DEALLOCATOR)) 1228 #error "CONFIGURE_TASK_STACK_ALLOCATOR and CONFIGURE_TASK_STACK_DEALLOCATOR must be both defined or both undefined" 1241 #ifndef CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY 1242 #ifdef BSP_ZERO_WORKSPACE_AUTOMATICALLY 1243 #define CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY \ 1244 BSP_ZERO_WORKSPACE_AUTOMATICALLY 1246 #define CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY FALSE 1260 #ifdef CONFIGURE_INIT 1267 #ifdef CONFIGURE_UNIFIED_WORK_AREAS 1275 #ifdef CONFIGURE_INIT 1282 const rtems_heap_extend_handler rtems_malloc_extend_handler =
1283 #ifdef CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK 1286 rtems_heap_null_extend;
1290 #ifdef CONFIGURE_INIT 1296 rtems_malloc_dirtier_t rtems_malloc_dirty_helper =
1297 #if defined(CONFIGURE_MALLOC_DIRTY) 1318 #define _Configure_Zero_or_One(_number) ((_number) != 0 ? 1 : 0) 1323 #define _Configure_Align_up(_val, _align) \ 1324 (((_val) + (_align) - 1) - ((_val) + (_align) - 1) % (_align)) 1326 #define _CONFIGURE_HEAP_MIN_BLOCK_SIZE \ 1327 _Configure_Align_up(sizeof(Heap_Block), CPU_HEAP_ALIGNMENT) 1335 #define _Configure_From_workspace(_size) \ 1336 (ssize_t) (_Configure_Zero_or_One(_size) * \ 1337 _Configure_Align_up(_size + HEAP_BLOCK_HEADER_SIZE, \ 1338 _CONFIGURE_HEAP_MIN_BLOCK_SIZE)) 1345 #ifdef CONFIGURE_TASK_STACK_FROM_ALLOCATOR 1346 #define _Configure_From_stackspace(_stack_size) \ 1347 CONFIGURE_TASK_STACK_FROM_ALLOCATOR(_stack_size) 1349 #define _Configure_From_stackspace(_stack_size) \ 1350 _Configure_From_workspace(_stack_size) 1357 #define _Configure_Max_Objects(_max) \ 1358 (_Configure_Zero_or_One(_max) * rtems_resource_maximum_per_allocation(_max)) 1376 #if defined(CONFIGURE_RTEMS_INIT_TASKS_TABLE) && \ 1377 !defined(CONFIGURE_HAS_OWN_INIT_TASK_TABLE) 1383 #ifndef CONFIGURE_INIT_TASK_NAME 1384 #define CONFIGURE_INIT_TASK_NAME rtems_build_name('U', 'I', '1', ' ') 1391 #ifndef CONFIGURE_INIT_TASK_STACK_SIZE 1392 #define CONFIGURE_INIT_TASK_STACK_SIZE CONFIGURE_MINIMUM_TASK_STACK_SIZE 1399 #ifndef CONFIGURE_INIT_TASK_PRIORITY 1400 #define CONFIGURE_INIT_TASK_PRIORITY 1 1407 #ifndef CONFIGURE_INIT_TASK_ATTRIBUTES 1408 #define CONFIGURE_INIT_TASK_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES 1415 #ifndef CONFIGURE_INIT_TASK_ENTRY_POINT 1423 #define CONFIGURE_INIT_TASK_ENTRY_POINT Init 1425 #define CONFIGURE_INIT_TASK_ARGUMENTS ((rtems_task_argument) &bsp_boot_cmdline) 1432 #ifndef CONFIGURE_INIT_TASK_INITIAL_MODES 1433 #ifdef _CONFIGURE_SMP_APPLICATION 1434 #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES 1436 #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_NO_PREEMPT 1444 #ifndef CONFIGURE_INIT_TASK_ARGUMENTS 1445 #define CONFIGURE_INIT_TASK_ARGUMENTS 0 1448 #ifdef CONFIGURE_INIT 1450 { CONFIGURE_INIT_TASK_NAME,
1451 CONFIGURE_INIT_TASK_STACK_SIZE,
1452 CONFIGURE_INIT_TASK_PRIORITY,
1453 CONFIGURE_INIT_TASK_ATTRIBUTES,
1454 CONFIGURE_INIT_TASK_ENTRY_POINT,
1455 CONFIGURE_INIT_TASK_INITIAL_MODES,
1456 CONFIGURE_INIT_TASK_ARGUMENTS
1464 #define CONFIGURE_INIT_TASK_TABLE Initialization_tasks 1469 #define CONFIGURE_INIT_TASK_TABLE_SIZE \ 1470 RTEMS_ARRAY_SIZE(CONFIGURE_INIT_TASK_TABLE) 1473 #ifdef CONFIGURE_HAS_OWN_INIT_TASK_TABLE 1484 #define CONFIGURE_INIT_TASK_TABLE NULL 1489 #define CONFIGURE_INIT_TASK_TABLE_SIZE 0 1494 #define CONFIGURE_INIT_TASK_STACK_SIZE 0 1517 #define NULL_DRIVER_TABLE_ENTRY \ 1518 { NULL, NULL, NULL, NULL, NULL, NULL } 1520 #if (defined(CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER) && \ 1521 defined(CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER)) || \ 1522 (defined(CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER) && \ 1523 defined(CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER)) || \ 1524 (defined(CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER) && \ 1525 defined(CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER)) 1526 #error "CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER, CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER, and CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER are mutually exclusive" 1529 #ifdef CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER 1533 #ifdef CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER 1536 #ifdef CONFIGURE_INIT 1539 RTEMS_SYSINIT_DEVICE_DRIVERS,
1540 RTEMS_SYSINIT_ORDER_SECOND
1545 #ifdef CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER 1548 #ifdef CONFIGURE_INIT 1551 RTEMS_SYSINIT_DEVICE_DRIVERS,
1552 RTEMS_SYSINIT_ORDER_SECOND
1557 #ifdef CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER 1561 #ifdef CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER 1565 #ifdef CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER 1569 #ifdef CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER 1573 #ifdef CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER 1577 #ifdef CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER 1581 #ifdef CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER 1585 #ifdef CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER 1587 #ifndef CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER 1588 #define CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER 1590 #include <libchip/ide_ctrl.h> 1593 #ifdef CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER 1594 #include <libchip/ata.h> 1597 #ifndef CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE 1604 #ifndef CONFIGURE_MAXIMUM_DRIVERS 1605 #define CONFIGURE_MAXIMUM_DRIVERS 1608 #ifdef CONFIGURE_INIT 1611 #ifdef CONFIGURE_BSP_PREREQUISITE_DRIVERS 1612 CONFIGURE_BSP_PREREQUISITE_DRIVERS,
1614 #ifdef CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS 1615 CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS,
1617 #ifdef CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER 1620 #ifdef CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER 1621 CLOCK_DRIVER_TABLE_ENTRY,
1623 #ifdef CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER 1626 #ifdef CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER 1629 #ifdef CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER 1630 DEVNULL_DRIVER_TABLE_ENTRY,
1632 #ifdef CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER 1633 DEVZERO_DRIVER_TABLE_ENTRY,
1635 #ifdef CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER 1636 IDE_CONTROLLER_DRIVER_TABLE_ENTRY,
1638 #ifdef CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER 1639 ATA_DRIVER_TABLE_ENTRY,
1641 #ifdef CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER 1644 #ifdef CONFIGURE_APPLICATION_EXTRA_DRIVERS 1645 CONFIGURE_APPLICATION_EXTRA_DRIVERS,
1647 #ifdef CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER 1649 #elif !defined(CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER) && \ 1650 !defined(CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER) && \ 1651 !defined(CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER) && \ 1652 !defined(CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER) && \ 1653 !defined(CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER) && \ 1654 !defined(CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER) && \ 1655 !defined(CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER) && \ 1656 !defined(CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER) && \ 1657 !defined(CONFIGURE_APPLICATION_EXTRA_DRIVERS) 1662 const size_t _IO_Number_of_drivers =
1663 RTEMS_ARRAY_SIZE( _IO_Driver_address_table );
1668 #ifdef CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER 1672 #ifndef CONFIGURE_ATA_DRIVER_TASK_PRIORITY 1673 #define CONFIGURE_ATA_DRIVER_TASK_PRIORITY ATA_DRIVER_TASK_DEFAULT_PRIORITY 1675 #ifdef CONFIGURE_INIT 1677 = CONFIGURE_ATA_DRIVER_TASK_PRIORITY;
1692 #ifdef CONFIGURE_APPLICATION_NEEDS_LIBBLOCK 1697 #ifndef CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS 1698 #define CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS \ 1699 RTEMS_BDBUF_MAX_READ_AHEAD_BLOCKS_DEFAULT 1701 #ifndef CONFIGURE_BDBUF_MAX_WRITE_BLOCKS 1702 #define CONFIGURE_BDBUF_MAX_WRITE_BLOCKS \ 1703 RTEMS_BDBUF_MAX_WRITE_BLOCKS_DEFAULT 1705 #ifndef CONFIGURE_SWAPOUT_TASK_PRIORITY 1706 #define CONFIGURE_SWAPOUT_TASK_PRIORITY \ 1707 RTEMS_BDBUF_SWAPOUT_TASK_PRIORITY_DEFAULT 1709 #ifndef CONFIGURE_SWAPOUT_SWAP_PERIOD 1710 #define CONFIGURE_SWAPOUT_SWAP_PERIOD \ 1711 RTEMS_BDBUF_SWAPOUT_TASK_SWAP_PERIOD_DEFAULT 1713 #ifndef CONFIGURE_SWAPOUT_BLOCK_HOLD 1714 #define CONFIGURE_SWAPOUT_BLOCK_HOLD \ 1715 RTEMS_BDBUF_SWAPOUT_TASK_BLOCK_HOLD_DEFAULT 1717 #ifndef CONFIGURE_SWAPOUT_WORKER_TASKS 1718 #define CONFIGURE_SWAPOUT_WORKER_TASKS \ 1719 RTEMS_BDBUF_SWAPOUT_WORKER_TASKS_DEFAULT 1721 #ifndef CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY 1722 #define CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY \ 1723 RTEMS_BDBUF_SWAPOUT_WORKER_TASK_PRIORITY_DEFAULT 1725 #ifndef CONFIGURE_BDBUF_TASK_STACK_SIZE 1726 #define CONFIGURE_BDBUF_TASK_STACK_SIZE \ 1727 RTEMS_BDBUF_TASK_STACK_SIZE_DEFAULT 1729 #ifndef CONFIGURE_BDBUF_CACHE_MEMORY_SIZE 1730 #define CONFIGURE_BDBUF_CACHE_MEMORY_SIZE \ 1731 RTEMS_BDBUF_CACHE_MEMORY_SIZE_DEFAULT 1733 #ifndef CONFIGURE_BDBUF_BUFFER_MIN_SIZE 1734 #define CONFIGURE_BDBUF_BUFFER_MIN_SIZE \ 1735 RTEMS_BDBUF_BUFFER_MIN_SIZE_DEFAULT 1737 #ifndef CONFIGURE_BDBUF_BUFFER_MAX_SIZE 1738 #define CONFIGURE_BDBUF_BUFFER_MAX_SIZE \ 1739 RTEMS_BDBUF_BUFFER_MAX_SIZE_DEFAULT 1741 #ifndef CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY 1742 #define CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY \ 1743 RTEMS_BDBUF_READ_AHEAD_TASK_PRIORITY_DEFAULT 1745 #ifdef CONFIGURE_INIT 1747 CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS,
1748 CONFIGURE_BDBUF_MAX_WRITE_BLOCKS,
1749 CONFIGURE_SWAPOUT_TASK_PRIORITY,
1750 CONFIGURE_SWAPOUT_SWAP_PERIOD,
1751 CONFIGURE_SWAPOUT_BLOCK_HOLD,
1752 CONFIGURE_SWAPOUT_WORKER_TASKS,
1753 CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY,
1754 CONFIGURE_BDBUF_TASK_STACK_SIZE,
1755 CONFIGURE_BDBUF_CACHE_MEMORY_SIZE,
1756 CONFIGURE_BDBUF_BUFFER_MIN_SIZE,
1757 CONFIGURE_BDBUF_BUFFER_MAX_SIZE,
1758 CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY
1762 #define _CONFIGURE_LIBBLOCK_TASKS \ 1763 (1 + CONFIGURE_SWAPOUT_WORKER_TASKS + \ 1764 (CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS != 0)) 1766 #define _CONFIGURE_LIBBLOCK_TASK_EXTRA_STACKS \ 1767 (_CONFIGURE_LIBBLOCK_TASKS * \ 1768 (CONFIGURE_BDBUF_TASK_STACK_SIZE <= CONFIGURE_MINIMUM_TASK_STACK_SIZE ? \ 1769 0 : CONFIGURE_BDBUF_TASK_STACK_SIZE - CONFIGURE_MINIMUM_TASK_STACK_SIZE)) 1771 #if defined(CONFIGURE_HAS_OWN_BDBUF_TABLE) || \ 1772 defined(CONFIGURE_BDBUF_BUFFER_SIZE) || \ 1773 defined(CONFIGURE_BDBUF_BUFFER_COUNT) 1774 #error BDBUF Cache does not use a buffer configuration table. Please remove. 1778 #define _CONFIGURE_LIBBLOCK_TASKS 0 1780 #define _CONFIGURE_LIBBLOCK_TASK_EXTRA_STACKS 0 1802 #ifndef CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK 1803 #define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK 0 1806 #if defined(RTEMS_MULTIPROCESSING) 1813 #ifdef CONFIGURE_MP_APPLICATION 1814 #define _CONFIGURE_TIMER_FOR_SHARED_MEMORY_DRIVER 1 1816 #ifndef CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE 1818 #ifndef CONFIGURE_MP_NODE_NUMBER 1819 #define CONFIGURE_MP_NODE_NUMBER NODE_NUMBER 1822 #ifndef CONFIGURE_MP_MAXIMUM_NODES 1823 #define CONFIGURE_MP_MAXIMUM_NODES 2 1826 #ifndef CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS 1827 #define CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS 32 1829 #define _CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS(_global_objects) \ 1830 _Configure_From_workspace( \ 1831 (_global_objects) * sizeof(Objects_MP_Control) \ 1834 #ifndef CONFIGURE_MP_MAXIMUM_PROXIES 1835 #define CONFIGURE_MP_MAXIMUM_PROXIES 32 1837 #define _CONFIGURE_MEMORY_FOR_PROXIES(_proxies) \ 1838 _Configure_From_workspace((_proxies) \ 1839 * (sizeof(Thread_Proxy_control) \ 1840 + sizeof(Thread_queue_Configured_heads))) 1842 #ifndef CONFIGURE_MP_MPCI_TABLE_POINTER 1844 #define CONFIGURE_MP_MPCI_TABLE_POINTER &MPCI_table 1847 #ifdef CONFIGURE_INIT 1848 rtems_multiprocessing_table Multiprocessing_configuration = {
1849 CONFIGURE_MP_NODE_NUMBER,
1850 CONFIGURE_MP_MAXIMUM_NODES,
1851 CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS,
1852 CONFIGURE_MP_MAXIMUM_PROXIES,
1854 CONFIGURE_MP_MPCI_TABLE_POINTER
1858 #define CONFIGURE_MULTIPROCESSING_TABLE &Multiprocessing_configuration 1860 #define _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT 1 1864 #define CONFIGURE_MULTIPROCESSING_TABLE NULL 1865 #define _CONFIGURE_TIMER_FOR_SHARED_MEMORY_DRIVER 0 1866 #define _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT 0 1869 #define _CONFIGURE_TIMER_FOR_SHARED_MEMORY_DRIVER 0 1870 #define _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT 0 1878 #if defined(CONFIGURE_UNLIMITED_OBJECTS) 1879 #if !defined(CONFIGURE_UNIFIED_WORK_AREAS) && \ 1880 !defined(CONFIGURE_EXECUTIVE_RAM_SIZE) && \ 1881 !defined(CONFIGURE_MEMORY_OVERHEAD) 1882 #error "CONFIGURE_UNLIMITED_OBJECTS requires a unified work area, an executive RAM size, or a defined workspace memory overhead" 1885 #if !defined(CONFIGURE_UNLIMITED_ALLOCATION_SIZE) 1890 #define CONFIGURE_UNLIMITED_ALLOCATION_SIZE 8 1892 #if !defined(CONFIGURE_MAXIMUM_TASKS) 1893 #define CONFIGURE_MAXIMUM_TASKS \ 1894 rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE) 1896 #if !defined(CONFIGURE_MAXIMUM_TIMERS) 1897 #define CONFIGURE_MAXIMUM_TIMERS \ 1898 rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE) 1900 #if !defined(CONFIGURE_MAXIMUM_SEMAPHORES) 1901 #define CONFIGURE_MAXIMUM_SEMAPHORES \ 1902 rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE) 1904 #if !defined(CONFIGURE_MAXIMUM_MESSAGE_QUEUES) 1905 #define CONFIGURE_MAXIMUM_MESSAGE_QUEUES \ 1906 rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE) 1908 #if !defined(CONFIGURE_MAXIMUM_PARTITIONS) 1909 #define CONFIGURE_MAXIMUM_PARTITIONS \ 1910 rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE) 1912 #if !defined(CONFIGURE_MAXIMUM_REGIONS) 1913 #define CONFIGURE_MAXIMUM_REGIONS \ 1914 rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE) 1916 #if !defined(CONFIGURE_MAXIMUM_PORTS) 1917 #define CONFIGURE_MAXIMUM_PORTS \ 1918 rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE) 1920 #if !defined(CONFIGURE_MAXIMUM_PERIODS) 1921 #define CONFIGURE_MAXIMUM_PERIODS \ 1922 rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE) 1924 #if !defined(CONFIGURE_MAXIMUM_BARRIERS) 1925 #define CONFIGURE_MAXIMUM_BARRIERS \ 1926 rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE) 1928 #if !defined(CONFIGURE_MAXIMUM_POSIX_KEYS) 1929 #define CONFIGURE_MAXIMUM_POSIX_KEYS \ 1930 rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE) 1932 #if !defined(CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS) 1933 #define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS \ 1934 rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE) 1936 #if !defined(CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES) 1937 #define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES \ 1938 rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE) 1940 #if !defined(CONFIGURE_MAXIMUM_POSIX_SEMAPHORES) 1941 #define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES \ 1942 rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE) 1944 #if !defined(CONFIGURE_MAXIMUM_POSIX_SHMS) 1945 #define CONFIGURE_MAXIMUM_POSIX_SHMS \ 1946 rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE) 1948 #if !defined(CONFIGURE_MAXIMUM_POSIX_THREADS) 1949 #define CONFIGURE_MAXIMUM_POSIX_THREADS \ 1950 rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE) 1953 #ifdef RTEMS_POSIX_API 1954 #if !defined(CONFIGURE_MAXIMUM_POSIX_TIMERS) 1955 #define CONFIGURE_MAXIMUM_POSIX_TIMERS \ 1956 rtems_resource_unlimited(CONFIGURE_UNLIMITED_ALLOCATION_SIZE) 1973 #ifndef CONFIGURE_MAXIMUM_TASKS 1974 #define CONFIGURE_MAXIMUM_TASKS 0 1981 #define _CONFIGURE_TASKS \ 1982 (CONFIGURE_MAXIMUM_TASKS + _CONFIGURE_LIBBLOCK_TASKS) 1984 #ifndef CONFIGURE_MAXIMUM_TIMERS 1986 #define CONFIGURE_MAXIMUM_TIMERS 0 1989 #define _CONFIGURE_TIMERS \ 1990 (CONFIGURE_MAXIMUM_TIMERS + _CONFIGURE_TIMER_FOR_SHARED_MEMORY_DRIVER) 1992 #ifndef CONFIGURE_MAXIMUM_SEMAPHORES 1994 #define CONFIGURE_MAXIMUM_SEMAPHORES 0 2002 #if !defined(RTEMS_SMP) || \ 2003 !defined(CONFIGURE_MAXIMUM_MRSP_SEMAPHORES) 2004 #define _CONFIGURE_MEMORY_FOR_MRSP_SEMAPHORES 0 2006 #define _CONFIGURE_MEMORY_FOR_MRSP_SEMAPHORES \ 2007 CONFIGURE_MAXIMUM_MRSP_SEMAPHORES * \ 2008 _Configure_From_workspace( \ 2009 RTEMS_ARRAY_SIZE(_Scheduler_Table) * sizeof(Priority_Control) \ 2013 #ifndef CONFIGURE_MAXIMUM_MESSAGE_QUEUES 2018 #define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 0 2021 #ifndef CONFIGURE_MAXIMUM_PARTITIONS 2026 #define CONFIGURE_MAXIMUM_PARTITIONS 0 2029 #ifndef CONFIGURE_MAXIMUM_REGIONS 2034 #define CONFIGURE_MAXIMUM_REGIONS 0 2037 #ifndef CONFIGURE_MAXIMUM_PORTS 2042 #define CONFIGURE_MAXIMUM_PORTS 0 2045 #ifndef CONFIGURE_MAXIMUM_PERIODS 2050 #define CONFIGURE_MAXIMUM_PERIODS 0 2057 #ifndef CONFIGURE_MAXIMUM_BARRIERS 2058 #define CONFIGURE_MAXIMUM_BARRIERS 0 2065 #define _CONFIGURE_BARRIERS \ 2066 (CONFIGURE_MAXIMUM_BARRIERS + _CONFIGURE_BARRIERS_FOR_FIFOS) 2068 #ifndef CONFIGURE_MAXIMUM_USER_EXTENSIONS 2073 #define CONFIGURE_MAXIMUM_USER_EXTENSIONS 0 2089 #ifndef CONFIGURE_MICROSECONDS_PER_TICK 2090 #define CONFIGURE_MICROSECONDS_PER_TICK \ 2091 RTEMS_MILLISECONDS_TO_MICROSECONDS(10) 2094 #if 1000000 % CONFIGURE_MICROSECONDS_PER_TICK != 0 2095 #warning "The clock ticks per second is not an integer" 2098 #if CONFIGURE_MICROSECONDS_PER_TICK <= 0 2099 #error "The CONFIGURE_MICROSECONDS_PER_TICK must be positive" 2102 #define _CONFIGURE_TICKS_PER_SECOND (1000000 / CONFIGURE_MICROSECONDS_PER_TICK) 2105 #ifndef CONFIGURE_TICKS_PER_TIMESLICE 2106 #define CONFIGURE_TICKS_PER_TIMESLICE 50 2115 #ifdef CONFIGURE_INIT 2116 #ifdef CONFIGURE_STACK_CHECKER_ENABLED 2121 #if defined(BSP_INITIAL_EXTENSION) || \ 2122 defined(CONFIGURE_INITIAL_EXTENSIONS) || \ 2123 defined(CONFIGURE_STACK_CHECKER_ENABLED) || \ 2124 (defined(RTEMS_NEWLIB) && !defined(CONFIGURE_DISABLE_NEWLIB_REENTRANCY)) 2126 #if CONFIGURE_RECORD_PER_PROCESSOR_ITEMS > 0 && \ 2127 defined(CONFIGURE_RECORD_EXTENSIONS_ENABLED) 2130 #if !defined(CONFIGURE_DISABLE_NEWLIB_REENTRANCY) 2131 RTEMS_NEWLIB_EXTENSION,
2133 #if defined(CONFIGURE_STACK_CHECKER_ENABLED) 2136 #if defined(CONFIGURE_INITIAL_EXTENSIONS) 2137 CONFIGURE_INITIAL_EXTENSIONS,
2139 #if defined(BSP_INITIAL_EXTENSION) 2140 BSP_INITIAL_EXTENSION
2144 #define _CONFIGURE_INITIAL_EXTENSION_TABLE Configuration_Initial_Extensions 2145 #define _CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS \ 2146 RTEMS_ARRAY_SIZE(Configuration_Initial_Extensions) 2149 _User_extensions_Handler_initialization,
2150 RTEMS_SYSINIT_INITIAL_EXTENSIONS,
2151 RTEMS_SYSINIT_ORDER_MIDDLE
2154 #define _CONFIGURE_INITIAL_EXTENSION_TABLE NULL 2155 #define _CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS 0 2158 #if defined(RTEMS_NEWLIB) && !defined(CONFIGURE_DISABLE_NEWLIB_REENTRANCY) 2159 struct _reent *__getreent(
void)
2181 #ifndef CONFIGURE_MAXIMUM_POSIX_KEYS 2182 #define CONFIGURE_MAXIMUM_POSIX_KEYS 0 2189 #ifndef CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS 2190 #define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS \ 2191 (CONFIGURE_MAXIMUM_POSIX_KEYS * \ 2192 (CONFIGURE_MAXIMUM_POSIX_THREADS + CONFIGURE_MAXIMUM_TASKS)) 2200 #define _CONFIGURE_POSIX_KEYS \ 2201 (CONFIGURE_MAXIMUM_POSIX_KEYS + _CONFIGURE_LIBIO_POSIX_KEYS) 2207 #ifndef CONFIGURE_MAXIMUM_POSIX_THREADS 2208 #define CONFIGURE_MAXIMUM_POSIX_THREADS 0 2215 #define _Configure_POSIX_Named_Object_RAM(_number, _size) \ 2216 (_Configure_Max_Objects(_number) \ 2217 * _Configure_From_workspace(_POSIX_PATH_MAX + 1)) 2223 #ifndef CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES 2224 #define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES 0 2231 #define _CONFIGURE_MEMORY_FOR_POSIX_MESSAGE_QUEUES(_message_queues) \ 2232 _Configure_POSIX_Named_Object_RAM( \ 2233 _message_queues, sizeof(POSIX_Message_queue_Control) ) 2239 #ifndef CONFIGURE_MAXIMUM_POSIX_SEMAPHORES 2240 #define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES 0 2247 #define _CONFIGURE_MEMORY_FOR_POSIX_SEMAPHORES(_semaphores) \ 2248 _Configure_POSIX_Named_Object_RAM( \ 2249 _semaphores, sizeof(POSIX_Semaphore_Control) ) 2254 #ifndef CONFIGURE_MAXIMUM_POSIX_SHMS 2255 #define CONFIGURE_MAXIMUM_POSIX_SHMS 0 2262 #define _CONFIGURE_MEMORY_FOR_POSIX_SHMS(_shms) \ 2263 _Configure_POSIX_Named_Object_RAM(_shms, sizeof(POSIX_Shm_Control) ) 2269 #ifndef CONFIGURE_MAXIMUM_POSIX_TIMERS 2270 #define CONFIGURE_MAXIMUM_POSIX_TIMERS 0 2273 #if !defined(RTEMS_POSIX_API) && CONFIGURE_MAXIMUM_POSIX_TIMERS != 0 2274 #error "CONFIGURE_MAXIMUM_POSIX_TIMERS must be zero if POSIX API is disabled" 2281 #ifndef CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS 2282 #define CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS 0 2285 #if !defined(RTEMS_POSIX_API) && CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS != 0 2286 #error "CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS must be zero if POSIX API is disabled" 2289 #if CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS > 0 2290 #define _CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS \ 2291 _Configure_From_workspace( (CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS) * \ 2292 sizeof( POSIX_signals_Siginfo_node ) ) 2294 #define _CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS 0 2297 #ifdef CONFIGURE_POSIX_INIT_THREAD_TABLE 2298 #ifndef CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE 2299 #ifndef CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT 2300 #define CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT POSIX_Init 2303 #ifndef CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE 2304 #define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE \ 2305 CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE 2308 #ifdef CONFIGURE_INIT 2310 { CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT,
2315 #define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME \ 2316 POSIX_Initialization_threads 2318 #define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE \ 2319 RTEMS_ARRAY_SIZE(CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME) 2322 #define CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME NULL 2323 #define CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE 0 2330 #ifndef CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE 2331 #define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE 0 2344 #ifdef CONFIGURE_GNAT_RTEMS 2350 #ifndef CONFIGURE_MAXIMUM_ADA_TASKS 2351 #define CONFIGURE_MAXIMUM_ADA_TASKS 20 2357 #ifndef CONFIGURE_MAXIMUM_FAKE_ADA_TASKS 2358 #define CONFIGURE_MAXIMUM_FAKE_ADA_TASKS 0 2363 #define CONFIGURE_MAXIMUM_ADA_TASKS 0 2368 #define CONFIGURE_MAXIMUM_FAKE_ADA_TASKS 0 2381 #ifdef CONFIGURE_ENABLE_GO 2383 #ifndef CONFIGURE_MAXIMUM_POSIX_THREADS 2384 #define CONFIGURE_MAXIMUM_POSIX_THREADS 1 2387 #ifndef CONFIGURE_MAXIMUM_GOROUTINES 2388 #define CONFIGURE_MAXIMUM_GOROUTINES 400 2391 #ifndef CONFIGURE_MAXIMUM_GO_CHANNELS 2392 #define CONFIGURE_MAXIMUM_GO_CHANNELS 500 2397 #define CONFIGURE_MAXIMUM_GOROUTINES 0 2400 #define CONFIGURE_MAXIMUM_GO_CHANNELS 0 2408 #ifndef CONFIGURE_EXTRA_TASK_STACKS 2409 #define CONFIGURE_EXTRA_TASK_STACKS 0 2415 #define _CONFIGURE_POSIX_THREADS \ 2416 (CONFIGURE_MAXIMUM_POSIX_THREADS + \ 2417 CONFIGURE_MAXIMUM_ADA_TASKS + \ 2418 CONFIGURE_MAXIMUM_GOROUTINES) 2425 #define _CONFIGURE_HEAP_HANDLER_OVERHEAD \ 2426 _Configure_Align_up( HEAP_BLOCK_HEADER_SIZE, CPU_HEAP_ALIGNMENT ) 2432 #define _CONFIGURE_IDLE_TASKS_COUNT _CONFIGURE_MAXIMUM_PROCESSORS 2437 #ifndef CONFIGURE_EXECUTIVE_RAM_SIZE 2445 #define _CONFIGURE_MEMORY_FOR_TASKS(_tasks, _number_FP_tasks) \ 2446 (_Configure_Max_Objects(_number_FP_tasks) \ 2447 * _Configure_From_workspace(CONTEXT_FP_SIZE)) 2453 #ifdef CONFIGURE_MP_APPLICATION 2454 #define _CONFIGURE_MEMORY_FOR_MP \ 2455 (_CONFIGURE_MEMORY_FOR_PROXIES(CONFIGURE_MP_MAXIMUM_PROXIES) + \ 2456 _CONFIGURE_MEMORY_FOR_GLOBAL_OBJECTS(CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS)) 2458 #define _CONFIGURE_MEMORY_FOR_MP 0 2466 #define CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(_messages, _size) \ 2467 _Configure_From_workspace( \ 2468 (_messages) * (_Configure_Align_up(_size, sizeof(uintptr_t)) \ 2469 + sizeof(CORE_message_queue_Buffer_control))) 2476 #ifndef CONFIGURE_MESSAGE_BUFFER_MEMORY 2477 #define CONFIGURE_MESSAGE_BUFFER_MEMORY 0 2492 #ifndef CONFIGURE_MEMORY_OVERHEAD 2493 #define CONFIGURE_MEMORY_OVERHEAD 0 2500 #if CPU_IDLE_TASK_IS_FP == TRUE 2501 #define _CONFIGURE_MEMORY_FOR_INTERNAL_TASKS \ 2502 _CONFIGURE_MEMORY_FOR_TASKS( \ 2503 _CONFIGURE_IDLE_TASKS_COUNT + _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT, \ 2504 _CONFIGURE_IDLE_TASKS_COUNT + _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT \ 2507 #define _CONFIGURE_MEMORY_FOR_INTERNAL_TASKS \ 2508 _CONFIGURE_MEMORY_FOR_TASKS( \ 2509 _CONFIGURE_IDLE_TASKS_COUNT + _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT, \ 2510 _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT \ 2517 #define _CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD \ 2518 _CONFIGURE_MEMORY_FOR_INTERNAL_TASKS 2524 #define _CONFIGURE_MEMORY_FOR_STATIC_EXTENSIONS \ 2525 (_CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS == 0 ? 0 : \ 2526 _Configure_From_workspace( \ 2527 _CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS \ 2528 * sizeof(User_extensions_Switch_control) \ 2536 #define CONFIGURE_EXECUTIVE_RAM_SIZE \ 2538 _CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD + \ 2539 _CONFIGURE_MEMORY_FOR_TASKS( \ 2540 _CONFIGURE_TASKS, _CONFIGURE_TASKS) + \ 2541 _CONFIGURE_MEMORY_FOR_TASKS( \ 2542 _CONFIGURE_POSIX_THREADS, _CONFIGURE_POSIX_THREADS) + \ 2543 _CONFIGURE_MEMORY_FOR_MRSP_SEMAPHORES + \ 2544 _CONFIGURE_MEMORY_FOR_POSIX_MESSAGE_QUEUES( \ 2545 CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES) + \ 2546 _CONFIGURE_MEMORY_FOR_POSIX_SEMAPHORES( \ 2547 CONFIGURE_MAXIMUM_POSIX_SEMAPHORES) + \ 2548 _CONFIGURE_MEMORY_FOR_POSIX_SHMS( \ 2549 CONFIGURE_MAXIMUM_POSIX_SHMS) + \ 2550 _CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS + \ 2551 _CONFIGURE_MEMORY_FOR_STATIC_EXTENSIONS + \ 2552 _CONFIGURE_MEMORY_FOR_MP + \ 2553 CONFIGURE_MESSAGE_BUFFER_MEMORY + \ 2554 (CONFIGURE_MEMORY_OVERHEAD * 1024) + \ 2555 _CONFIGURE_HEAP_HANDLER_OVERHEAD \ 2567 #if (CONFIGURE_INIT_TASK_STACK_SIZE > CONFIGURE_MINIMUM_TASK_STACK_SIZE) 2568 #define _CONFIGURE_INITIALIZATION_THREADS_STACKS_CLASSIC_PART \ 2569 (CONFIGURE_INIT_TASK_STACK_SIZE - CONFIGURE_MINIMUM_TASK_STACK_SIZE) 2571 #define _CONFIGURE_INITIALIZATION_THREADS_STACKS_CLASSIC_PART 0 2578 #if (CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE > \ 2579 CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE) 2580 #define _CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART \ 2581 (CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE - \ 2582 CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE) 2584 #define _CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART 0 2591 #define _CONFIGURE_INITIALIZATION_THREADS_EXTRA_STACKS \ 2592 (_CONFIGURE_INITIALIZATION_THREADS_STACKS_CLASSIC_PART + \ 2593 _CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART) 2599 #define _CONFIGURE_IDLE_TASKS_STACK \ 2600 (_CONFIGURE_IDLE_TASKS_COUNT * \ 2601 _Configure_From_stackspace( CONFIGURE_IDLE_TASK_STACK_SIZE ) ) 2607 #define _CONFIGURE_MPCI_RECEIVE_SERVER_STACK \ 2608 (_CONFIGURE_MPCI_RECEIVE_SERVER_COUNT * \ 2609 _Configure_From_stackspace(CONFIGURE_MINIMUM_TASK_STACK_SIZE)) 2615 #define _CONFIGURE_TASKS_STACK \ 2616 (_Configure_Max_Objects( _CONFIGURE_TASKS ) * \ 2617 _Configure_From_stackspace( CONFIGURE_MINIMUM_TASK_STACK_SIZE ) ) 2623 #define _CONFIGURE_POSIX_THREADS_STACK \ 2624 (_Configure_Max_Objects( CONFIGURE_MAXIMUM_POSIX_THREADS ) * \ 2625 _Configure_From_stackspace( CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE ) ) 2631 #define _CONFIGURE_ADA_TASKS_STACK \ 2632 (_Configure_Max_Objects( CONFIGURE_MAXIMUM_ADA_TASKS ) * \ 2633 _Configure_From_stackspace( CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE ) ) 2639 #define _CONFIGURE_GOROUTINES_STACK \ 2640 (_Configure_Max_Objects( CONFIGURE_MAXIMUM_GOROUTINES ) * \ 2641 _Configure_From_stackspace( CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE ) ) 2645 #define _CONFIGURE_IDLE_TASKS_STACK 0 2646 #define _CONFIGURE_MPCI_RECEIVE_SERVER_STACK 0 2647 #define _CONFIGURE_INITIALIZATION_THREADS_EXTRA_STACKS 0 2648 #define _CONFIGURE_TASKS_STACK 0 2649 #define _CONFIGURE_POSIX_THREADS_STACK 0 2650 #define _CONFIGURE_GOROUTINES_STACK 0 2651 #define _CONFIGURE_ADA_TASKS_STACK 0 2653 #if CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK != 0 2654 #error "CONFIGURE_EXECUTIVE_RAM_SIZE defined with request for CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK" 2657 #if CONFIGURE_EXTRA_TASK_STACKS != 0 2658 #error "CONFIGURE_EXECUTIVE_RAM_SIZE defined with request for CONFIGURE_EXTRA_TASK_STACKS" 2667 #define _CONFIGURE_STACK_SPACE_SIZE \ 2669 _CONFIGURE_IDLE_TASKS_STACK + \ 2670 _CONFIGURE_MPCI_RECEIVE_SERVER_STACK + \ 2671 _CONFIGURE_INITIALIZATION_THREADS_EXTRA_STACKS + \ 2672 _CONFIGURE_TASKS_STACK + \ 2673 _CONFIGURE_POSIX_THREADS_STACK + \ 2674 _CONFIGURE_GOROUTINES_STACK + \ 2675 _CONFIGURE_ADA_TASKS_STACK + \ 2676 CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK + \ 2677 _CONFIGURE_LIBBLOCK_TASK_EXTRA_STACKS + \ 2678 CONFIGURE_EXTRA_TASK_STACKS + \ 2679 _CONFIGURE_HEAP_HANDLER_OVERHEAD \ 2682 #ifndef CONFIGURE_MAXIMUM_THREAD_NAME_SIZE 2683 #define CONFIGURE_MAXIMUM_THREAD_NAME_SIZE 16 2686 #ifdef CONFIGURE_INIT 2689 #ifdef CONFIGURE_SCHEDULER_CBS 2692 #ifdef CONFIGURE_SCHEDULER_EDF 2695 #ifdef CONFIGURE_SCHEDULER_EDF_SMP 2698 #ifdef CONFIGURE_SCHEDULER_PRIORITY 2701 #ifdef CONFIGURE_SCHEDULER_SIMPLE_SMP 2704 #ifdef CONFIGURE_SCHEDULER_PRIORITY_SMP 2707 #ifdef CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP 2710 #ifdef CONFIGURE_SCHEDULER_STRONG_APA 2713 #ifdef CONFIGURE_SCHEDULER_USER_PER_THREAD 2714 CONFIGURE_SCHEDULER_USER_PER_THREAD User;
2716 } Configuration_Scheduler_node;
2719 const size_t _Scheduler_Node_size =
sizeof( Configuration_Scheduler_node );
2726 #if CONFIGURE_MAXIMUM_USER_EXTENSIONS > 0 2729 Configuration_Scheduler_node Scheduler_nodes[ _CONFIGURE_SCHEDULER_COUNT ];
2731 #ifdef RTEMS_POSIX_API 2732 POSIX_API_Control API_POSIX;
2734 #if CONFIGURE_MAXIMUM_THREAD_NAME_SIZE > 1 2735 char name[ CONFIGURE_MAXIMUM_THREAD_NAME_SIZE ];
2737 #if !defined(RTEMS_SCHEDSIM) \ 2738 && defined(RTEMS_NEWLIB) \ 2739 && !defined(CONFIGURE_DISABLE_NEWLIB_REENTRANCY) 2740 struct _reent Newlib;
2763 #if CONFIGURE_MAXIMUM_THREAD_NAME_SIZE > 1 2767 Control.Join_queue.Queue.name
2772 #ifdef RTEMS_POSIX_API 2784 RTEMS_ARRAY_SIZE( _Thread_Control_add_ons );
2786 #if defined(RTEMS_SMP) 2802 _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT +
2803 rtems_resource_maximum_per_allocation( _CONFIGURE_TASKS ) +
2806 THREAD_INFORMATION_DEFINE(
2808 OBJECTS_INTERNAL_API,
2809 OBJECTS_INTERNAL_THREADS,
2813 #if _CONFIGURE_BARRIERS > 0 2817 #if CONFIGURE_MAXIMUM_MESSAGE_QUEUES > 0 2821 #if CONFIGURE_MAXIMUM_PARTITIONS > 0 2825 #if CONFIGURE_MAXIMUM_PERIODS > 0 2829 #if CONFIGURE_MAXIMUM_PORTS > 0 2833 #if CONFIGURE_MAXIMUM_REGIONS > 0 2837 #if CONFIGURE_MAXIMUM_SEMAPHORES > 0 2841 #if _CONFIGURE_TIMERS > 0 2845 #if _CONFIGURE_TASKS > 0 2846 THREAD_INFORMATION_DEFINE(
2848 OBJECTS_CLASSIC_API,
2849 OBJECTS_RTEMS_TASKS,
2854 #if CONFIGURE_MAXIMUM_USER_EXTENSIONS > 0 2862 CONFIGURE_INIT_TASK_TABLE_SIZE,
2863 CONFIGURE_INIT_TASK_TABLE
2866 #if CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS > 0 2868 rtems_resource_maximum_per_allocation(
2869 CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS
2874 CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS;
2877 #if _CONFIGURE_POSIX_KEYS > 0 2881 #if CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES > 0 2887 #if CONFIGURE_MAXIMUM_POSIX_SEMAPHORES > 0 2891 #if CONFIGURE_MAXIMUM_POSIX_SHMS > 0 2895 #if _CONFIGURE_POSIX_THREADS > 0 2896 THREAD_INFORMATION_DEFINE(
2899 OBJECTS_POSIX_THREADS,
2904 #ifdef RTEMS_POSIX_API 2905 #if CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS > 0 2906 const uint32_t _Configuration_POSIX_Maximum_queued_signals =
2910 #if CONFIGURE_MAXIMUM_POSIX_TIMERS > 0 2915 const size_t _Configuration_POSIX_Minimum_stack_size =
2934 _CONFIGURE_STACK_SPACE_SIZE,
2944 #ifdef CONFIGURE_UNIFIED_WORK_AREAS 2949 #ifdef CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE 2957 #ifdef _CONFIGURE_SMP_APPLICATION 2963 _CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS,
2964 _CONFIGURE_INITIAL_EXTENSION_TABLE,
2965 #if defined(RTEMS_MULTIPROCESSING) 2966 CONFIGURE_MULTIPROCESSING_TABLE,
2969 _CONFIGURE_MAXIMUM_PROCESSORS,
2973 #if CONFIGURE_RECORD_PER_PROCESSOR_ITEMS > 0 2974 #include <rtems/record.h> 2976 #if (CONFIGURE_RECORD_PER_PROCESSOR_ITEMS & (CONFIGURE_RECORD_PER_PROCESSOR_ITEMS - 1)) != 0 2977 #error "CONFIGURE_RECORD_PER_PROCESSOR_ITEMS must be a power of two" 2980 #if CONFIGURE_RECORD_PER_PROCESSOR_ITEMS < 16 2981 #error "CONFIGURE_RECORD_PER_PROCESSOR_ITEMS must be at least 16" 2984 const unsigned int _Record_Item_count = CONFIGURE_RECORD_PER_PROCESSOR_ITEMS;
2986 struct Record_Configured_control {
2988 rtems_record_item Items[ CONFIGURE_RECORD_PER_PROCESSOR_ITEMS ];
2995 RTEMS_SYSINIT_RECORD,
2996 RTEMS_SYSINIT_ORDER_MIDDLE
3001 #if defined(RTEMS_SMP) 3005 #if defined(CONFIGURE_INIT) 3015 #ifdef CONFIGURE_INIT 3016 #if defined(CONFIGURE_RTEMS_INIT_TASKS_TABLE) || \ 3017 defined(CONFIGURE_HAS_OWN_INIT_TASK_TABLE) 3020 RTEMS_SYSINIT_CLASSIC_USER_TASKS,
3021 RTEMS_SYSINIT_ORDER_MIDDLE
3030 #ifdef CONFIGURE_INIT 3031 #if defined(CONFIGURE_POSIX_INIT_THREAD_TABLE) || \ 3032 defined(CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE) 3034 _Configuration_POSIX_Initialization_threads =
3035 CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME;
3037 const size_t _Configuration_POSIX_Initialization_thread_count =
3038 CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE;
3042 RTEMS_SYSINIT_POSIX_USER_THREADS,
3043 RTEMS_SYSINIT_ORDER_MIDDLE
3051 #ifdef RTEMS_PCI_CONFIG_LIB 3052 #ifdef CONFIGURE_INIT 3053 #define PCI_LIB_NONE 0 3054 #define PCI_LIB_AUTO 1 3055 #define PCI_LIB_STATIC 2 3056 #define PCI_LIB_READ 3 3057 #define PCI_LIB_PERIPHERAL 4 3058 #if CONFIGURE_PCI_LIB == PCI_LIB_AUTO 3059 #define PCI_CFG_AUTO_LIB 3060 #include <pci/cfg.h> 3062 #define PCI_LIB_INIT pci_config_auto 3063 #define PCI_LIB_CONFIG pci_config_auto_register 3064 #elif CONFIGURE_PCI_LIB == PCI_LIB_STATIC 3065 #define PCI_CFG_STATIC_LIB 3066 #include <pci/cfg.h> 3067 #define PCI_LIB_INIT pci_config_static 3068 #define PCI_LIB_CONFIG NULL 3070 #elif CONFIGURE_PCI_LIB == PCI_LIB_READ 3071 #define PCI_CFG_READ_LIB 3072 #include <pci/cfg.h> 3073 #define PCI_LIB_INIT pci_config_read 3074 #define PCI_LIB_CONFIG NULL 3076 #elif CONFIGURE_PCI_LIB == PCI_LIB_PERIPHERAL 3077 #define PCI_LIB_INIT pci_config_peripheral 3078 #define PCI_LIB_CONFIG NULL 3080 #elif CONFIGURE_PCI_LIB == PCI_LIB_NONE 3081 #define PCI_LIB_INIT NULL 3082 #define PCI_LIB_CONFIG NULL 3085 #error NO PCI LIBRARY DEFINED 3088 const int pci_config_lib_type = CONFIGURE_PCI_LIB;
3089 int (*pci_config_lib_init)(void) = PCI_LIB_INIT;
3090 void (*pci_config_lib_register)(
void *
config) = PCI_LIB_CONFIG;
3115 #if !defined(CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION) 3116 #if (CONFIGURE_MAXIMUM_TASKS == 0) && \ 3117 (CONFIGURE_MAXIMUM_POSIX_THREADS == 0) && \ 3118 (CONFIGURE_MAXIMUM_ADA_TASKS == 0) && \ 3119 (CONFIGURE_MAXIMUM_GOROUTINES == 0) 3120 #error "CONFIGURATION ERROR: No tasks or threads configured!!" 3124 #ifndef RTEMS_SCHEDSIM 3129 #if !defined(CONFIGURE_RTEMS_INIT_TASKS_TABLE) && \ 3130 !defined(CONFIGURE_POSIX_INIT_THREAD_TABLE) && \ 3131 !defined(CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION) 3132 #error "CONFIGURATION ERROR: No initialization tasks or threads configured!!" 3140 #if defined(CONFIGURE_MP_APPLICATION) && \ 3141 !defined(RTEMS_MULTIPROCESSING) 3142 #error "CONFIGURATION ERROR: RTEMS not configured for multiprocessing!!" 3145 #if !defined(RTEMS_SCHEDSIM) 3146 #if !defined(CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE) 3157 #if !defined(CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER) && \ 3158 !defined(CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER) && \ 3159 !defined(CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER) 3160 #error "CONFIGURATION ERROR: Do you want the clock driver or not?!?" 3167 #if ((defined(CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER) + \ 3168 defined(CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER) + \ 3169 defined(CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER)) > 1) 3170 #error "CONFIGURATION ERROR: More than one clock/timer driver configuration parameter specified?!?" 3178 #if defined(CONFIGURE_TEST_NEEDS_TIMER_DRIVER) || \ 3179 defined(CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER) || \ 3180 defined(CONFIGURE_TEST_NEEDS_CLOCK_DRIVER) || \ 3181 defined(CONFIGURE_TEST_NEEDS_RTC_DRIVER) || \ 3182 defined(CONFIGURE_TEST_NEEDS_STUB_DRIVER) 3183 #error "CONFIGURATION ERROR: CONFIGURE_TEST_XXX constants are obsolete" 3189 #if ((CONFIGURE_MAXIMUM_PRIORITY != 3) && \ 3190 (CONFIGURE_MAXIMUM_PRIORITY != 7) && \ 3191 (CONFIGURE_MAXIMUM_PRIORITY != 15) && \ 3192 (CONFIGURE_MAXIMUM_PRIORITY != 31) && \ 3193 (CONFIGURE_MAXIMUM_PRIORITY != 63) && \ 3194 (CONFIGURE_MAXIMUM_PRIORITY != 127) && \ 3195 (CONFIGURE_MAXIMUM_PRIORITY != 255)) 3196 #error "Maximum priority is not 1 less than a power of 2 between 4 and 256" 3199 #if (CONFIGURE_MAXIMUM_PRIORITY > PRIORITY_DEFAULT_MAXIMUM) 3200 #error "Maximum priority configured higher than supported by target." 3203 #ifdef CONFIGURE_HAS_OWN_CONFIGURATION_TABLE 3204 #warning "The CONFIGURE_HAS_OWN_CONFIGURATION_TABLE configuration option is obsolete since RTEMS 5.1" 3207 #ifdef CONFIGURE_HAS_OWN_FILESYSTEM_TABLE 3208 #warning "The CONFIGURE_HAS_OWN_FILESYSTEM_TABLE configuration option is obsolete since RTEMS 5.1" 3211 #ifdef CONFIGURE_HAS_OWN_MOUNT_TABLE 3212 #warning "The CONFIGURE_HAS_OWN_MOUNT_TABLE configuration option is obsolete since RTEMS 5.1" 3215 #ifdef CONFIGURE_NUMBER_OF_TERMIOS_PORTS 3216 #warning "The CONFIGURE_NUMBER_OF_TERMIOS_PORTS configuration option is obsolete since RTEMS 5.1" 3219 #ifdef CONFIGURE_MAXIMUM_POSIX_BARRIERS 3220 #warning "The CONFIGURE_MAXIMUM_POSIX_BARRIERS configuration option is obsolete since RTEMS 5.1" 3223 #ifdef CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 3224 #warning "The CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES configuration option is obsolete since RTEMS 5.1" 3227 #ifdef CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUE_DESCRIPTORS 3228 #warning "The CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUE_DESCRIPTORS configuration option is obsolete since RTEMS 5.1" 3231 #ifdef CONFIGURE_MAXIMUM_POSIX_MUTEXES 3232 #warning "The CONFIGURE_MAXIMUM_POSIX_MUTEXES configuration option is obsolete since RTEMS 5.1" 3235 #ifdef CONFIGURE_MAXIMUM_POSIX_RWLOCKS 3236 #warning "The CONFIGURE_MAXIMUM_POSIX_RWLOCKS configuration option is obsolete since RTEMS 5.1" 3239 #ifdef CONFIGURE_MAXIMUM_POSIX_SPINLOCKS 3240 #warning "The CONFIGURE_MAXIMUM_POSIX_SPINLOCKS configuration option is obsolete since RTEMS 5.1" 3243 #ifdef CONFIGURE_MAXIMUM_PTYS 3244 #warning "The CONFIGURE_MAXIMUM_PTYS configuration option is obsolete since RTEMS 5.1" 3247 #ifdef CONFIGURE_TERMIOS_DISABLED 3248 #warning "The CONFIGURE_TERMIOS_DISABLED configuration option is obsolete since RTEMS 5.1" 3255 #if (CONFIGURE_MAXIMUM_POSIX_KEYS != 0) && \ 3256 (CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS != 0) 3257 #if (CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS < CONFIGURE_MAXIMUM_POSIX_KEYS) 3258 #error "Fewer POSIX Key pairs than POSIX Key!" 3266 #if ((CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 16) && \ 3267 (CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 32) && \ 3268 (CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 64) && \ 3269 (CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 128) && \ 3270 (CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 256) && \ 3271 (CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 512)) 3272 #error "IMFS Memfile block size must be a power of 2 between 16 and 512" void _Console_simple_Initialize(void)
Initializes a simple console device.
Definition: consolesimple.c:65
const uint32_t _Watchdog_Nanoseconds_per_tick
The watchdog nanoseconds per tick.
const char * bsp_boot_cmdline
Global pointer to the command line of boot_card().
Definition: bootcard.c:25
Frame Buffer Device Driver for all Boards.
const size_t _Thread_Control_add_on_count
Thread control add-on count.
void rtems_filesystem_initialize(void)
Base File System Initialization.
Definition: base_fs.c:32
int rtems_filesystem_default_utime(const rtems_filesystem_location_info_t *loc, time_t actime, time_t modtime)
Definition: default_utime.c:24
void _Console_simple_task_Initialize(void)
Initializes a simple task console device.
Definition: consolesimpletask.c:190
RFS File system InitializationRTEMS File System.
#define CONFIGURE_IDLE_TASK_BODY
Idle task body configuration.
Definition: confdefs.h:1124
bool rtems_filesystem_default_are_nodes_equal(const rtems_filesystem_location_info_t *a, const rtems_filesystem_location_info_t *b)
Tests if the node access pointer of one location is equal to the node access pointer of the other loc...
Definition: default_are_nodes_equal.c:28
int rtems_filesystem_default_link(const rtems_filesystem_location_info_t *parentloc, const rtems_filesystem_location_info_t *targetloc, const char *name, size_t namelen)
Definition: default_link.c:23
#define POSIX_SHM_INFORMATION_DEFINE(max)
Macro to define the objects information for the POSIX Shared Memory objects.
Definition: shm.h:143
#define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
Definition: confdefs.h:2240
#define CONFIGURE_IDLE_TASK_STACK_SIZE
Idle task stack size configuration.
Definition: confdefs.h:1163
int IMFS_link(const rtems_filesystem_location_info_t *parentloc, const rtems_filesystem_location_info_t *targetloc, const char *name, size_t namelen)
Create a new IMFS link node.
Definition: imfs_link.c:25
#define _CONFIGURE_IDLE_TASKS_COUNT
Definition: confdefs.h:2432
RTEMS /dev/zero Device Driver.
#define REGION_INFORMATION_DEFINE(max)
Macro to define the objects information for the Classic Region objects.
Definition: regiondata.h:63
#define CONFIGURE_MAXIMUM_PORTS
Definition: confdefs.h:2042
Definition: tasksdata.h:41
POSIX_Keys_Key_value_pair _POSIX_Keys_Key_value_pairs[]
The initial set of POSIX key and value pairs.
Definition: keyzerokvp.c:34
#define CONFIGURE_TASK_STACK_ALLOCATOR
Definition: confdefs.h:1219
const char _ISR_Stack_area_end[]
The interrupt stack area end.
Header File for the In-Memory File System.
Scheduler node specialization for EDF schedulers.
Definition: scheduleredf.h:85
const rtems_filesystem_table_t rtems_filesystem_table[]
Static table of file systems.
#define TIMER_INFORMATION_DEFINE(max)
Macro to define the objects information for the Classic Timer objects.
Definition: timerdata.h:74
int rtems_filesystem_default_unmount(rtems_filesystem_mount_table_entry_t *mt_entry)
Definition: default_unmount.c:21
Internal Support for POSIX Shared Memory.
int IMFS_mount(rtems_filesystem_mount_table_entry_t *mt_entry)
Mount an IMFS.
Definition: imfs_mount.c:26
#define CONFIGURE_MAXIMUM_REGIONS
Definition: confdefs.h:2034
#define CONFIGURE_MAXIMUM_POSIX_TIMERS
Definition: confdefs.h:2270
void rtems_task
Definition: tasks.h:100
#define CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
Definition: confdefs.h:1149
Classic Dual Ported Memory Manager Data Structures.
#define CONFIGURE_MAXIMUM_DRIVERS
Definition: confdefs.h:1605
void IMFS_node_free(const rtems_filesystem_location_info_t *loc)
Free an IMFS node.
Definition: imfs_node.c:90
Classic User Extensions Data Structures.
void rtems_filesystem_default_unlock(const rtems_filesystem_mount_table_entry_t *mt_entry)
Releases the IO library mutex.
Definition: default_lock_and_unlock.c:35
Thread priority queue.
Definition: threadq.h:319
#define CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY
Definition: confdefs.h:1246
#define CONSOLE_DRIVER_TABLE_ENTRY
Definition: console.h:38
#define CONFIGURE_EXECUTIVE_RAM_SIZE
Definition: confdefs.h:2536
Represents POSIX key and value pair.
Definition: key.h:46
Classic Semaphore Manager Data Structures.
File system table entry.
Definition: libio.h:1658
POSIX Threads Private Support.
rtems_api_configuration_table Configuration_RTEMS_API
RTEMS API Configuration Table.
ssize_t rtems_filesystem_default_readlink(const rtems_filesystem_location_info_t *loc, char *buf, size_t bufsize)
Definition: default_readlink.c:24
#define CPU_INTERRUPT_STACK_ALIGNMENT
Definition: cpu.h:597
#define DUAL_PORTED_MEMORY_INFORMATION_DEFINE(max)
Macro to define the objects information for the Classic Dual Ported Memory objects.
Definition: dpmemdata.h:63
User Extension Handler API.
int rtems_filesystem_default_fchmod(const rtems_filesystem_location_info_t *loc, mode_t mode)
Definition: default_fchmod.c:23
#define CONFIGURE_MICROSECONDS_PER_TICK
Definition: confdefs.h:2090
void * rtems_heap_extend_via_sbrk(Heap_Control *heap, size_t alloc_size)
RTEMS Extend Heap via Sbrk.
Definition: rtems_heap_extend_via_sbrk.c:34
#define RTEMS_STACK_CHECKER_EXTENSION
Stack Checker Extension Set Definition.
Definition: stackchk.h:123
const uint32_t _Scheduler_CBS_Maximum_servers
Internal Information about POSIX Signals.
#define POSIX_TIMER_INFORMATION_DEFINE(max)
Macro to define the objects information for the POSIX Timer objects.
Definition: timer.h:66
Scheduler Configuration API.
Classic Partition Manager Data Structures.
const size_t _Thread_Initial_thread_count
Count of configured threads.
Thread_queue_Heads Thread_queue_Configured_heads
The configured thread queue heads.
Definition: thread.h:958
void IMFS_eval_path(rtems_filesystem_eval_path_context_t *ctx)
IMFS evaluation node support.
Definition: imfs_eval.c:175
#define CONFIGURE_MAXIMUM_SEMAPHORES
Definition: confdefs.h:1994
struct _reent * libc_reent
Definition: thread.h:841
int IMFS_node_clone(rtems_filesystem_location_info_t *loc)
Clone an IMFS node.
Definition: imfs_node.c:74
#define NULL_DRIVER_TABLE_ENTRY
Definition: confdefs.h:1517
#define WATCHDOG_DRIVER_TABLE_ENTRY
Definition: watchdogdrv.h:30
#define CONFIGURE_SCHEDULER_TABLE_ENTRIES
Definition: confdefs.h:770
#define CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS
Definition: confdefs.h:2282
Thread queue heads.
Definition: threadq.h:355
Definition: scheduleredfsmp.h:36
#define CONFIGURE_MINIMUM_TASK_STACK_SIZE
Definition: confdefs.h:1141
void _RTEMS_tasks_Initialize_user_tasks_body(void)
_RTEMS_tasks_Initialize_user_tasks_body
Definition: taskinitusers.c:42
Classic Rate Monotonic Scheduler Data Structures.
#define POSIX_KEYS_INFORMATION_DEFINE(max)
Macro to define the objects information for the POSIX Key objects.
Definition: key.h:119
const size_t _Thread_Maximum_name_size
Maximum size of a thread name in characters (including the terminating '\0' character).
RTEMS Benchmark Timer API for all Boards.
#define RTEMS_DEFINE_GLOBAL_SYMBOL(_name, _value)
Defines a global symbol with the specified name and value.
Definition: basedefs.h:331
struct rtems_bsdnet_ifconfig * config
Network driver configuration.
void rtems_malloc_dirty_memory(void *start, size_t size)
Dirty Memory Function.
Definition: malloc_dirtier.c:28
char _ISR_Stack_area_begin[]
The interrupt stack area begin.
#define CONFIGURE_MAXIMUM_PARTITIONS
Definition: confdefs.h:2026
Information Related to the RAM Workspace.
Thread control add-on.
Definition: thread.h:887
Console Driver for all Boards.
#define CONFIGURE_MAXIMUM_USER_EXTENSIONS
Definition: confdefs.h:2073
int rtems_filesystem_default_symlink(const rtems_filesystem_location_info_t *parentloc, const char *name, size_t namelen, const char *target)
Definition: default_symlink.c:24
void _POSIX_Threads_Initialize_user_threads_body(void)
POSIX threads initialize user threads body.
Definition: pthreadinitthreads.c:34
Classic Input/Output Manager Implementation API.
#define RTEMS_SECTION(_section)
Instructs the compiler to place a specific variable or function in the specified section.
Definition: basedefs.h:142
int IMFS_mknod(const rtems_filesystem_location_info_t *parentloc, const char *name, size_t namelen, mode_t mode, dev_t dev)
Create an IMFS node.
Definition: imfs_mknod.c:43
const uint32_t _Watchdog_Ticks_per_second
The watchdog ticks per second.
Heap_Control _Workspace_Area
Executive workspace control.
Definition: wkspace.c:43
int rtems_filesystem_default_rmnod(const rtems_filesystem_location_info_t *parentloc, const rtems_filesystem_location_info_t *loc)
Definition: default_rmnod.c:24
int IMFS_fchmod(const rtems_filesystem_location_info_t *loc, mode_t mode)
Change the IMFS file mode.
Definition: imfs_fchmod.c:23
Control block used to manage a heap.
Definition: heap.h:255
Scheduler node specialization for SMP schedulers.
Definition: schedulersmp.h:98
Real-Time Clock Driver Interface.
#define PER_CPU_DATA_ITEM(type, item)
Defines a per-CPU item of the specified type.
Definition: percpudata.h:59
Scheduler node specialization for Deterministic Priority schedulers.
Definition: schedulerpriority.h:96
Scheduler_CBS_Server _Scheduler_CBS_Server_list[]
POSIX Message Queues Private Private Support.
int IMFS_chown(const rtems_filesystem_location_info_t *loc, uid_t owner, gid_t group)
Change the owner of IMFS.
Definition: imfs_chown.c:27
Per Device Node Control Structure.
Definition: devfs.h:33
int IMFS_symlink(const rtems_filesystem_location_info_t *parentloc, const char *name, size_t namelen, const char *target)
Create a new IMFS symbolic link node.
Definition: imfs_symlink.c:27
uint32_t rtems_minimum_stack_size
Definition: schedulercbs.h:110
#define CONFIGURE_MAXIMUM_POSIX_THREADS
Definition: confdefs.h:2208
#define EXTENSION_INFORMATION_DEFINE(max)
Macro to define the objects information for the Classic Extensions objects.
Definition: extensiondata.h:54
Heap_Control * RTEMS_Malloc_Heap
C program heap control.
#define BARRIER_INFORMATION_DEFINE(max)
Macro to define the objects information for the Classic Barrier objects.
Definition: barrierdata.h:61
Standard C Library Support.
#define CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
Definition: confdefs.h:1803
Application Interface to FAT Filesystem.
#define CONFIGURE_TASK_STACK_DEALLOCATOR
Definition: confdefs.h:1223
int IMFS_unmount(rtems_filesystem_mount_table_entry_t *mt_entry)
Unmount an IMFS.
Definition: imfs_unmount.c:26
const rtems_bdbuf_config rtems_bdbuf_configuration
#define _Thread_queue_Heads_size
Size of the thread queue heads of a particular application.
Definition: thread.h:969
File system operations table.
Definition: libio.h:472
Private Support Information for POSIX Semaphores.
#define _CONFIGURE_POSIX_THREADS
Definition: confdefs.h:2415
LibIO Internal Interface.
int IMFS_rmnod(const rtems_filesystem_location_info_t *parentloc, const rtems_filesystem_location_info_t *loc)
IMFS node removal handler.
Definition: imfs_rmnod.c:26
Classic Message Queue Manager API.
int rtems_filesystem_default_mount(rtems_filesystem_mount_table_entry_t *mt_entry)
Definition: default_mount.c:21
ssize_t IMFS_readlink(const rtems_filesystem_location_info_t *loc, char *buf, size_t bufsize)
Put IMFS symbolic link into buffer.
Definition: imfs_symlink.c:56
#define MESSAGE_QUEUE_INFORMATION_DEFINE(max)
Macro to define the objects information for the Classic Message Queue objects.
Definition: messagedata.h:75
File Transfer Protocol file system (FTP client).
int IMFS_utime(const rtems_filesystem_location_info_t *loc, time_t actime, time_t modtime)
Set IMFS file access and modification times.
Definition: imfs_utime.c:25
#define CONFIGURE_TASK_STACK_ALLOCATOR_INIT
Definition: confdefs.h:1208
#define RATE_MONOTONIC_INFORMATION_DEFINE(max)
Macro to define the objects information for the Classic Rate Monotonic objects.
Definition: ratemondata.h:147
#define RTEMS_ALIGNED(_alignment)
Instructs the compiler to enforce the specified alignment.
Definition: basedefs.h:204
Scheduler node specialization for Strong APA schedulers.
Definition: schedulerstrongapa.h:64
void rtems_filesystem_default_fsunmount(rtems_filesystem_mount_table_entry_t *mt_entry)
Definition: default_fsunmount.c:20
struct Thread_Configured_control Thread_Configured_control
The configured thread control block.
Definition: thread.h:947
Classic Partition Manager Data Structures.
rtems_initialization_tasks_table Initialization_tasks[]
int rtems_filesystem_default_statvfs(const rtems_filesystem_location_info_t *loc, struct statvfs *buf)
Definition: default_statvfs.c:23
POSIX Timers Internal Support.
RTEMS_INLINE_ROUTINE struct _Thread_Control * _Thread_Get_executing(void)
Returns the thread control block of the executing thread.
Definition: percpu.h:784
Classic Barrier Manager Data Structures.
Scheduler control.
Definition: scheduler.h:266
Scheduler node for per-thread data.
Definition: schedulernode.h:65
Scheduler node specialization for Deterministic Priority SMP schedulers.
Definition: schedulerprioritysmp.h:64
#define CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES
Definition: confdefs.h:2224
const Scheduler_Control _Scheduler_Table[]
Registered schedulers.
#define CONFIGURE_TICKS_PER_TIMESLICE
Definition: confdefs.h:2106
#define POSIX_SEMAPHORE_INFORMATION_DEFINE(max)
Macro to define the objects information for the POSIX Semaphore objects.
Definition: semaphore.h:65
An open file data structure.
Definition: libio.h:1320
CPU_Uint32ptr rtems_task_argument
Definition: tasks.h:105
const rtems_configuration_table Configuration
Clock Driver for all Boards.
#define CONFIGURE_MAXIMUM_POSIX_SHMS
Definition: confdefs.h:2255
User extension table.
Definition: userext.h:232
int rtems_filesystem_default_rename(const rtems_filesystem_location_info_t *oldparentloc, const rtems_filesystem_location_info_t *oldloc, const rtems_filesystem_location_info_t *newparentloc, const char *name, size_t namelen)
Definition: default_rename.c:24
Classic Region Manager Data Structures.
Definition: schedulercbs.h:133
#define CONFIGURE_MAXIMUM_PERIODS
Definition: confdefs.h:2050
#define PARTITION_INFORMATION_DEFINE(max)
Macro to define the objects information for the Classic Partition objects.
Definition: partdata.h:84
#define RTC_DRIVER_TABLE_ENTRY
Definition: rtc.h:43
POSIX Key Private Support.
const uint32_t _POSIX_Keys_Key_value_pair_maximum
The POSIX key and value pairs maximum.
Definition: keyzerokvp.c:36
#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS
Definition: confdefs.h:152
int rtems_filesystem_default_mknod(const rtems_filesystem_location_info_t *parentloc, const char *name, size_t namelen, mode_t mode, dev_t dev)
Definition: default_mknod.c:24
const Thread_Control_add_on _Thread_Control_add_ons[]
Thread control add-ons.
#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
Definition: confdefs.h:2331
#define POSIX_MESSAGE_QUEUE_INFORMATION_DEFINE(max)
Macro to define the objects information for the POSIX Message Queue objects.
Definition: mqueue.h:80
RTEMS /dev/null Device Driver.
int rtems_filesystem_default_chown(const rtems_filesystem_location_info_t *loc, uid_t owner, gid_t group)
Definition: default_chown.c:23
void rtems_filesystem_default_lock(const rtems_filesystem_mount_table_entry_t *mt_entry)
Obtains the IO library mutex.
Definition: default_lock_and_unlock.c:28
#define CONFIGURE_SCHEDULER
Definition: confdefs.h:763
Scheduler node specialization for Deterministic Priority Affinity SMP schedulers. ...
Definition: schedulerpriorityaffinitysmp.h:165
#define SEMAPHORE_INFORMATION_DEFINE(max)
Macro to define the objects information for the Classic Semaphore objects.
Definition: semdata.h:123
int IMFS_rename(const rtems_filesystem_location_info_t *oldparentloc, const rtems_filesystem_location_info_t *oldloc, const rtems_filesystem_location_info_t *newparentloc, const char *name, size_t namelen)
Rename the IMFS.
Definition: imfs_rename.c:26
Block Device Buffer Management.
#define FRAME_BUFFER_DRIVER_TABLE_ENTRY
Definition: framebuffer.h:45
#define NULL
Requests a GPIO pin group configuration.
Definition: bestcomm_api.h:77
#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES
Definition: confdefs.h:2018
#define CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK
Definition: confdefs.h:329
Classic Tasks Manager Data Structures.
#define _Scheduler_Count
Count of registered schedulers.
Definition: scheduler.h:314
uint32_t rtems_task_priority
Definition: tasks.h:54