Changeset e239760 in rtems
- Timestamp:
- 04/29/14 14:09:35 (9 years ago)
- Branches:
- 4.11, 5, master
- Children:
- 145becf
- Parents:
- d20b029
- git-author:
- Sebastian Huber <sebastian.huber@…> (04/29/14 14:09:35)
- git-committer:
- Sebastian Huber <sebastian.huber@…> (05/05/14 06:26:27)
- Files:
-
- 4 deleted
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
cpukit/rtems/include/rtems/rtems/tasks.h
rd20b029 re239760 598 598 * @retval RTEMS_INVALID_ADDRESS The @a id parameter is @c NULL. 599 599 * @retval RTEMS_INVALID_NAME Invalid scheduler name. 600 * @retval RTEMS_UNSATISFIED A scheduler with this name exists, but the 601 * processor set of this scheduler is empty. 600 602 */ 601 603 rtems_status_code rtems_scheduler_ident( -
cpukit/rtems/src/schedulerident.c
rd20b029 re239760 34 34 35 35 for ( i = 0 ; i < n && sc == RTEMS_INVALID_NAME ; ++i ) { 36 if ( _Scheduler_Table[ i ].name == name ) { 37 *id = _Scheduler_Build_id( i ); 38 sc = RTEMS_SUCCESSFUL; 36 const Scheduler_Control *scheduler = &_Scheduler_Table[ i ]; 37 38 if ( scheduler->name == name ) { 39 if ( _Scheduler_Get_processor_count( scheduler ) > 0 ) { 40 *id = _Scheduler_Build_id( i ); 41 sc = RTEMS_SUCCESSFUL; 42 } else { 43 sc = RTEMS_UNSATISFIED; 44 } 39 45 } 40 46 } -
cpukit/score/include/rtems/score/schedulerimpl.h
rd20b029 re239760 572 572 } 573 573 574 RTEMS_INLINE_ROUTINE uint32_t _Scheduler_Get_processor_count( 575 const Scheduler_Control *scheduler 576 ) 577 { 578 #if defined(RTEMS_SMP) 579 return scheduler->context->processor_count; 580 #else 581 (void) scheduler; 582 583 return 1; 584 #endif 585 } 586 574 587 RTEMS_INLINE_ROUTINE Objects_Id _Scheduler_Build_id( uint32_t scheduler_index ) 575 588 { … … 584 597 RTEMS_INLINE_ROUTINE bool _Scheduler_Get_by_id( 585 598 Objects_Id id, 586 const Scheduler_Control **scheduler 599 const Scheduler_Control **scheduler_p 587 600 ) 588 601 { 589 602 uint32_t minimum_id = _Scheduler_Build_id( 0 ); 590 603 uint32_t index = id - minimum_id; 591 592 *scheduler = &_Scheduler_Table[ index ]; 593 594 return index < _Scheduler_Count; 604 const Scheduler_Control *scheduler = &_Scheduler_Table[ index ]; 605 606 *scheduler_p = scheduler; 607 608 return index < _Scheduler_Count 609 && _Scheduler_Get_processor_count( scheduler ) > 0; 595 610 } 596 611 -
cpukit/score/include/rtems/score/smpimpl.h
rd20b029 re239760 53 53 SMP_FATAL_MANDATORY_PROCESSOR_NOT_PRESENT, 54 54 SMP_FATAL_MULTITASKING_START_ON_UNASSIGNED_PROCESSOR, 55 SMP_FATAL_SCHEDULER_WITHOUT_PROCESSORS,56 55 SMP_FATAL_START_OF_MANDATORY_PROCESSOR_FAILED 57 56 } SMP_Fatal_code; -
cpukit/score/src/smp.c
rd20b029 re239760 25 25 #include <rtems/score/threadimpl.h> 26 26 #include <rtems/config.h> 27 28 static void _SMP_Check_scheduler_configuration( void )29 {30 size_t n = _Scheduler_Count;31 size_t i;32 33 for ( i = 0 ; i < n ; ++i ) {34 const Scheduler_Control *scheduler = &_Scheduler_Table[ i ];35 36 if ( scheduler->context->processor_count == 0 ) {37 _SMP_Fatal( SMP_FATAL_SCHEDULER_WITHOUT_PROCESSORS );38 }39 }40 }41 27 42 28 static void _SMP_Start_processors( uint32_t cpu_count ) … … 76 62 } 77 63 } 78 79 _SMP_Check_scheduler_configuration();80 64 } 81 65 -
doc/user/conf.t
rd20b029 re239760 3932 3932 have this processor at all or it could be a problem with a boot loader for 3933 3933 example. Check the @code{CONFIGURE_SMP_SCHEDULER_ASSIGNMENTS} definition. 3934 @item @code{SMP_FATAL_SCHEDULER_WITHOUT_PROCESSORS} - it is prohibited to have3935 a scheduler managing the empty processor set.3936 3934 @item @code{SMP_FATAL_MULTITASKING_START_ON_UNASSIGNED_PROCESSOR} - it is not 3937 3935 allowed to start multitasking on a processor with no scheduler assigned. -
doc/user/smp.t
rd20b029 re239760 447 447 @code{@value{RPREFIX}SUCCESSFUL} - successful operation@* 448 448 @code{@value{RPREFIX}INVALID_ADDRESS} - @code{id} is NULL@* 449 @code{@value{RPREFIX}INVALID_NAME} - invalid scheduler name 449 @code{@value{RPREFIX}INVALID_NAME} - invalid scheduler name@* 450 @code{@value{RPREFIX}UNSATISFIED} - - a scheduler with this name exists, but 451 the processor set of this scheduler is empty 450 452 451 453 @subheading DESCRIPTION: -
testsuites/smptests/Makefile.am
rd20b029 re239760 17 17 SUBDIRS += smpfatal04 18 18 SUBDIRS += smpfatal05 19 SUBDIRS += smpfatal0620 19 SUBDIRS += smpfatal07 21 20 SUBDIRS += smpfatal08 -
testsuites/smptests/configure.ac
rd20b029 re239760 72 72 smpfatal04/Makefile 73 73 smpfatal05/Makefile 74 smpfatal06/Makefile75 74 smpfatal07/Makefile 76 75 smpfatal08/Makefile -
testsuites/smptests/smpscheduler02/init.c
rd20b029 re239760 26 26 #if defined(__RTEMS_HAVE_SYS_CPUSET_H__) 27 27 28 #define CPU_COUNT 229 30 28 #define SCHED_A rtems_build_name(' ', ' ', ' ', 'A') 31 29 32 30 #define SCHED_B rtems_build_name(' ', ' ', ' ', 'B') 31 32 #define SCHED_C rtems_build_name(' ', ' ', ' ', 'C') 33 33 34 34 static rtems_id main_task_id; … … 57 57 rtems_id scheduler_a_id; 58 58 rtems_id scheduler_b_id; 59 rtems_id scheduler_c_id; 59 60 cpu_set_t cpuset; 60 61 cpu_set_t first_cpu; … … 82 83 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 83 84 rtems_test_assert(scheduler_a_id != scheduler_b_id); 85 86 sc = rtems_scheduler_ident(SCHED_C, &scheduler_c_id); 87 rtems_test_assert(sc == RTEMS_UNSATISFIED); 84 88 85 89 CPU_ZERO(&cpuset); … … 123 127 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 124 128 129 sc = rtems_task_set_scheduler(task_id, scheduler_b_id + 1); 130 rtems_test_assert(sc == RTEMS_INVALID_ID); 131 125 132 sc = rtems_task_get_scheduler(task_id, &scheduler_id); 126 133 rtems_test_assert(sc == RTEMS_SUCCESSFUL); … … 192 199 #define CONFIGURE_SMP_APPLICATION 193 200 194 #define CONFIGURE_SMP_MAXIMUM_PROCESSORS CPU_COUNT 201 /* Lets see when the first RTEMS system hits this limit */ 202 #define CONFIGURE_SMP_MAXIMUM_PROCESSORS 64 195 203 196 204 #define CONFIGURE_MAXIMUM_PRIORITY 255 197 205 198 206 #define CONFIGURE_SCHEDULER_PRIORITY_SMP 207 #define CONFIGURE_SCHEDULER_SIMPLE_SMP 199 208 200 209 #include <rtems/scheduler.h> … … 203 212 204 213 RTEMS_SCHEDULER_CONTEXT_PRIORITY_SMP(b, CONFIGURE_MAXIMUM_PRIORITY + 1); 214 215 RTEMS_SCHEDULER_CONTEXT_SIMPLE_SMP(c); 205 216 206 217 #define CONFIGURE_SCHEDULER_CONTROLS \ 207 218 RTEMS_SCHEDULER_CONTROL_PRIORITY_SMP(a, SCHED_A), \ 208 RTEMS_SCHEDULER_CONTROL_PRIORITY_SMP(b, SCHED_B) 219 RTEMS_SCHEDULER_CONTROL_PRIORITY_SMP(b, SCHED_B), \ 220 RTEMS_SCHEDULER_CONTROL_SIMPLE_SMP(c, SCHED_C) 209 221 210 222 #define CONFIGURE_SMP_SCHEDULER_ASSIGNMENTS \ 211 223 RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY), \ 212 RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY) 213 214 #define CONFIGURE_MAXIMUM_TASKS CPU_COUNT 224 RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY), \ 225 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 226 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 227 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 228 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 229 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 230 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 231 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 232 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 233 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 234 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 235 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 236 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 237 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 238 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 239 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 240 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 241 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 242 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 243 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 244 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 245 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 246 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 247 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 248 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 249 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 250 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 251 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 252 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 253 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 254 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 255 RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ 256 RTEMS_SCHEDULER_ASSIGN(2, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL) 257 258 #define CONFIGURE_MAXIMUM_TASKS 2 215 259 216 260 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
Note: See TracChangeset
for help on using the changeset viewer.