source: rtems/cpukit/itron/src/chg_pri.c @ 2183b65

4.104.114.84.95
Last change on this file since 2183b65 was 2183b65, checked in by Joel Sherrill <joel.sherrill@…>, on 11/12/99 at 21:13:52

+ Modified correct return path to call _ITRON_return_errorno( E_OK ) instead

of enabling dispatching and returning E_OK.

+ Changed validation of the_thread to validation of location.
+ Set correct error code when dormant state.
+ Fixed comment.

  • Property mode set to 100644
File size: 1.5 KB
Line 
1/*
2 *  The license and distribution terms for this file may be
3 *  found in the file LICENSE in this distribution or at
4 *  http://www.OARcorp.com/rtems/license.html.
5 *
6 *  $Id$
7 */
8
9#include <itron.h>
10
11#include <rtems/score/thread.h>
12#include <rtems/score/userext.h>
13#include <rtems/score/wkspace.h>
14#include <rtems/score/apiext.h>
15#include <rtems/score/sysstate.h>
16
17#include <rtems/itron/task.h>
18
19/*
20 *  chg_pri - Change Task Priority
21 */
22
23ER chg_pri(
24  ID  tskid,
25  PRI tskpri
26)
27{
28  register Thread_Control *the_thread;
29  Objects_Locations        location;
30  Priority_Control         new_priority; 
31
32  the_thread = _ITRON_Task_Get( tskid, &location );
33  switch ( location ) {
34    case OBJECTS_REMOTE:
35    case OBJECTS_ERROR:
36      _ITRON_return_errorno( _ITRON_Task_Clarify_get_id_error( tskid ));
37
38    case OBJECTS_LOCAL:
39      if (_States_Is_dormant( the_thread->current_state ))
40        _ITRON_return_errorno( E_OBJ );
41
42      if (( tskpri <= 0 ) || ( tskpri >= 256 ))
43        _ITRON_return_errorno( E_PAR );
44
45      new_priority = _ITRON_Task_Priority_to_Core( tskpri );
46      the_thread->real_priority = new_priority;
47
48      /*
49       * The priority should not be changed until later if priority
50       * inheratance has occured.
51       */
52
53      if ( the_thread->resource_count == 0 ||
54           the_thread->current_priority > new_priority )
55        _Thread_Change_priority( the_thread, new_priority, FALSE );
56
57       _ITRON_return_errorno( E_OK );
58  }
59
60  _ITRON_return_errorno( E_OBJ );  /* XXX - Should never get here */
61}
62
63
Note: See TracBrowser for help on using the repository browser.