summaryrefslogtreecommitdiffstats
path: root/c/src/exec/itron/src/chg_pri.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/exec/itron/src/chg_pri.c')
-rw-r--r--c/src/exec/itron/src/chg_pri.c25
1 files changed, 10 insertions, 15 deletions
diff --git a/c/src/exec/itron/src/chg_pri.c b/c/src/exec/itron/src/chg_pri.c
index 412bab054e..abbc9f274a 100644
--- a/c/src/exec/itron/src/chg_pri.c
+++ b/c/src/exec/itron/src/chg_pri.c
@@ -30,39 +30,34 @@ ER chg_pri(
Priority_Control new_priority;
the_thread = _ITRON_Task_Get( tskid, &location );
- if (!the_thread)
- _ITRON_return_errorno( _ITRON_Task_Clarify_get_id_error( tskid ) );
-
- if (_States_Is_dormant( the_thread->current_state ))
- return -1;
-
- if (( tskpri <= 0 ) || ( tskpri >= 256 ))
- _ITRON_return_errorno( E_PAR );
-
switch ( location ) {
case OBJECTS_REMOTE:
case OBJECTS_ERROR:
_ITRON_return_errorno( _ITRON_Task_Clarify_get_id_error( tskid ));
case OBJECTS_LOCAL:
+ if (_States_Is_dormant( the_thread->current_state ))
+ _ITRON_return_errorno( E_OBJ );
+
+ if (( tskpri <= 0 ) || ( tskpri >= 256 ))
+ _ITRON_return_errorno( E_PAR );
+
new_priority = _ITRON_Task_Priority_to_Core( tskpri );
the_thread->real_priority = new_priority;
/*
- * XXX This is from the rtems side and I'm not sure what this is for.
- * XXX Is this check right or should change priority be called
- * regardless?
+ * The priority should not be changed until later if priority
+ * inheratance has occured.
*/
if ( the_thread->resource_count == 0 ||
the_thread->current_priority > new_priority )
_Thread_Change_priority( the_thread, new_priority, FALSE );
- _Thread_Enable_dispatch();
- return E_OK;
+ _ITRON_return_errorno( E_OK );
}
- return E_OBJ; /* XXX - Should never get here */
+ _ITRON_return_errorno( E_OBJ ); /* XXX - Should never get here */
}