diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-12-09 14:48:34 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-02-12 09:08:36 +0100 |
commit | 01d59443b06ab351039cbc63a688cfa87f196ea0 (patch) | |
tree | 2044378caa3adc38cb494405d5618731f3686de2 /cpukit/score/src/mpci.c | |
parent | score: Add _Stack_Extend_size() (diff) | |
download | rtems-01d59443b06ab351039cbc63a688cfa87f196ea0.tar.bz2 |
score: Move thread stack allocation
Move thread stack allocation to caller side of _Thread_Initialize().
Update #3835.
Diffstat (limited to 'cpukit/score/src/mpci.c')
-rw-r--r-- | cpukit/score/src/mpci.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/cpukit/score/src/mpci.c b/cpukit/score/src/mpci.c index 32489ac0cf..1f9b838796 100644 --- a/cpukit/score/src/mpci.c +++ b/cpukit/score/src/mpci.c @@ -114,6 +114,7 @@ static void _MPCI_Create_server( void ) } }; Thread_Configuration config; + bool ok; ISR_lock_Context lock_context; @@ -129,15 +130,24 @@ static void _MPCI_Create_server( void ) memset( &config, 0, sizeof( config ) ); config.scheduler = &_Scheduler_Table[ 0 ]; - config.stack_size = _Stack_Minimum() - + CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK - + _MPCI_Configuration.extra_mpci_receive_server_stack; config.name.name_u32 = _Objects_Build_name( 'M', 'P', 'C', 'I' ); config.priority = PRIORITY_PSEUDO_ISR; config.budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; config.is_fp = CPU_ALL_TASKS_ARE_FP; - - _Thread_Initialize( &_Thread_Information, _MPCI_Receive_server_tcb, &config ); + config.stack_size = _Stack_Minimum() + + CPU_MPCI_RECEIVE_SERVER_EXTRA_STACK + + _MPCI_Configuration.extra_mpci_receive_server_stack; + config.stack_size = _Stack_Extend_size( config.stack_size, config.is_fp ); + config.stack_area = _Stack_Allocate( config.stack_size ); + _Assert( config.stack_area != NULL ); + + ok = _Thread_Initialize( + &_Thread_Information, + _MPCI_Receive_server_tcb, + &config + ); + _Assert( ok ); + (void) ok; _ISR_lock_ISR_disable( &lock_context ); _Thread_Start( _MPCI_Receive_server_tcb, &entry, &lock_context ); |