summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-05-14 11:11:05 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-05-14 16:49:27 +0200
commitc21c5912a86e752dc3a65101385838291d8e0536 (patch)
treea5f840d68e780eae82f5797c0e8f194251b52503
parentscore: Typo (diff)
downloadrtems-c21c5912a86e752dc3a65101385838291d8e0536.tar.bz2
score: Add STATES_RESTARTING
Use separate state for thread restart.
-rw-r--r--cpukit/libmisc/monitor/mon-prmisc.c1
-rw-r--r--cpukit/score/include/rtems/score/statesimpl.h2
-rw-r--r--cpukit/score/src/threadrestart.c2
3 files changed, 4 insertions, 1 deletions
diff --git a/cpukit/libmisc/monitor/mon-prmisc.c b/cpukit/libmisc/monitor/mon-prmisc.c
index 65abb1473c..9126767b48 100644
--- a/cpukit/libmisc/monitor/mon-prmisc.c
+++ b/cpukit/libmisc/monitor/mon-prmisc.c
@@ -138,6 +138,7 @@ static const rtems_assoc_t rtems_monitor_state_assoc[] = {
{ "Wterm", STATES_WAITING_FOR_TERMINATION, 0 },
{ "ZOMBI", STATES_ZOMBIE, 0 },
{ "MIGRA", STATES_MIGRATING, 0 },
+ { "RESTA", STATES_RESTARTING, 0 },
{ 0, 0, 0 },
};
diff --git a/cpukit/score/include/rtems/score/statesimpl.h b/cpukit/score/include/rtems/score/statesimpl.h
index b7dfd7ad93..00d1092dfb 100644
--- a/cpukit/score/include/rtems/score/statesimpl.h
+++ b/cpukit/score/include/rtems/score/statesimpl.h
@@ -84,6 +84,8 @@ extern "C" {
#define STATES_ZOMBIE 0x200000
/** This macro corresponds to a task migrating to another scheduler. */
#define STATES_MIGRATING 0x400000
+/** This macro corresponds to a task restarting. */
+#define STATES_RESTARTING 0x800000
/** This macro corresponds to a task which is in an interruptible
* blocking state.
diff --git a/cpukit/score/src/threadrestart.c b/cpukit/score/src/threadrestart.c
index 9cf2a85165..b483298647 100644
--- a/cpukit/score/src/threadrestart.c
+++ b/cpukit/score/src/threadrestart.c
@@ -224,7 +224,7 @@ static void _Thread_Start_life_change(
the_thread->budget_callout = the_thread->Start.budget_callout;
the_thread->real_priority = priority;
- _Thread_Set_transient( the_thread );
+ _Thread_Set_state( the_thread, STATES_RESTARTING );
_Thread_queue_Extract_with_proxy( the_thread );
_Watchdog_Remove( &the_thread->Timer );
_Scheduler_Set_priority_if_higher( scheduler, the_thread, priority );