summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/mpci.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-12-09 14:48:34 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-02-12 09:08:36 +0100
commit01d59443b06ab351039cbc63a688cfa87f196ea0 (patch)
tree2044378caa3adc38cb494405d5618731f3686de2 /cpukit/score/src/mpci.c
parentscore: Add _Stack_Extend_size() (diff)
downloadrtems-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.c20
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 );