diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-07-01 14:47:07 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-07-01 14:47:07 +0200 |
commit | df2177ab5ea1c5b183513cdcac729af9c4040110 (patch) | |
tree | c313d341042ae07b605a08055e1cd447619f38d0 /cpukit/score/src/threadinitialize.c | |
parent | score: Fix MPCI message layout (diff) | |
download | rtems-df2177ab5ea1c5b183513cdcac729af9c4040110.tar.bz2 |
score: Change scheduler node init and destroy
Provide the scheduler node to initialize or destroy to the corresponding
operations. This makes it possible to have more than one scheduler node
per thread.
Diffstat (limited to 'cpukit/score/src/threadinitialize.c')
-rw-r--r-- | cpukit/score/src/threadinitialize.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/cpukit/score/src/threadinitialize.c b/cpukit/score/src/threadinitialize.c index 7237cfeb75..940537f135 100644 --- a/cpukit/score/src/threadinitialize.c +++ b/cpukit/score/src/threadinitialize.c @@ -52,6 +52,7 @@ bool _Thread_Initialize( #endif bool extension_status; size_t i; + Scheduler_Node *scheduler_node; bool scheduler_node_initialized = false; Per_CPU_Control *cpu = _Per_CPU_Get_by_index( 0 ); @@ -173,11 +174,13 @@ bool _Thread_Initialize( #endif } + scheduler_node = the_thread->Scheduler.node; + #if defined(RTEMS_SMP) RTEMS_STATIC_ASSERT( THREAD_SCHEDULER_BLOCKED == 0, Scheduler_state ); the_thread->Scheduler.own_control = scheduler; the_thread->Scheduler.control = scheduler; - the_thread->Scheduler.own_node = the_thread->Scheduler.node; + the_thread->Scheduler.own_node = scheduler_node; _Resource_Node_initialize( &the_thread->Resource_node ); _Atomic_Store_uintptr( &the_thread->Lock.current.atomic, @@ -204,7 +207,7 @@ bool _Thread_Initialize( RTEMS_STATIC_ASSERT( THREAD_WAIT_FLAGS_INITIAL == 0, Wait_flags ); - _Scheduler_Node_initialize( scheduler, the_thread, priority ); + _Scheduler_Node_initialize( scheduler, scheduler_node, the_thread, priority ); scheduler_node_initialized = true; /* POSIX Keys */ @@ -232,7 +235,7 @@ bool _Thread_Initialize( failed: if ( scheduler_node_initialized ) { - _Scheduler_Node_destroy( scheduler, the_thread ); + _Scheduler_Node_destroy( scheduler, scheduler_node ); } _Workspace_Free( the_thread->Start.tls_area ); |