source: rtems/testsuites/sptests/sp12/pridrv.c @ c87608f

4.104.114.84.95
Last change on this file since c87608f was c87608f, checked in by Ralf Corsepius <ralf.corsepius@…>, on 03/30/04 at 11:15:35

2004-03-30 Ralf Corsepius <ralf_corsepius@…>

  • sp02/task1.c, sp04/system.h, sp04/task1.c, sp04/tswitch.c, sp05/task1.c, sp06/task1.c, sp09/screen01.c, sp09/screen07.c, sp09/screen12.c, sp09/system.h, sp09/task3.c, sp11/task1.c, sp12/pridrv.c, sp12/pritask.c, sp12/system.h, sp13/task1.c, sp13/task2.c, sp13/task3.c, sp14/system.h, sp15/system.h, sp16/system.h, sp17/system.h, sp19/first.c, sp19/fptask.c, sp19/inttest.h, sp19/system.h, sp19/task1.c, sp20/init.c, sp20/system.h, sp20/task1.c, sp23/system.h, sp24/init.c, sp25/system.h, sp30/init.c, spfatal/fatal.c, spfatal/puterr.c, spfatal/system.h, spsize/size.c: Convert to using c99 fixed size types.
  • Property mode set to 100644
File size: 3.7 KB
Line 
1/*  Priority_test_driver
2 *
3 *  This routine is the initialization task for this test program.
4 *  It is a user initialization task and has the responsibility for creating
5 *  and starting the tasks that make up the test.  If the time of day
6 *  clock is required for the test, it should also be set to a known
7 *  value by this function.
8 *
9 *  Input parameters:
10 *    priority_base - priority_base switch
11 *
12 *  Output parameters:  NONE
13 *
14 *  COPYRIGHT (c) 1989-1999.
15 *  On-Line Applications Research Corporation (OAR).
16 *
17 *  The license and distribution terms for this file may be
18 *  found in the file LICENSE in this distribution or at
19 *  http://www.rtems.com/license/LICENSE.
20 *
21 *  $Id$
22 */
23
24#include "system.h"
25
26void Priority_test_driver(
27  uint32_t   priority_base
28)
29{
30  rtems_task_priority previous_priority;
31  uint32_t      index;
32  rtems_status_code   status;
33
34  for ( index = 1 ; index <= 5 ; index++ ) {
35    switch ( index ) {
36       case 1:
37       case 2:
38       case 3:
39         Task_priority[ index ] = priority_base + index;
40         break;
41       default:
42         Task_priority[ index ] = priority_base + 3;
43         break;
44    }
45
46    status = rtems_task_create(
47      Priority_task_name[ index ],
48      Task_priority[ index ],
49      RTEMS_MINIMUM_STACK_SIZE * 2,
50      RTEMS_DEFAULT_MODES,
51      RTEMS_DEFAULT_ATTRIBUTES,
52      &Priority_task_id[ index ]
53    );
54    directive_failed( status, "rtems_task_create loop" );
55
56  }
57
58  if ( priority_base == 0 ) {
59    for ( index = 1 ; index <= 5 ; index++ ) {
60      status = rtems_task_start(
61        Priority_task_id[ index ],
62        Priority_task,
63        index
64      );
65      directive_failed( status, "rtems_task_start loop" );
66    }
67  } else {
68    for ( index = 5 ; index >= 1 ; index-- ) {
69      status = rtems_task_start(
70        Priority_task_id[ index ],
71        Priority_task,
72        index
73      );
74      directive_failed( status, "rtems_task_start loop" );
75
76      status = rtems_task_wake_after( TICKS_PER_SECOND );
77      directive_failed( status, "rtems_task_wake_after loop" );
78
79      if ( priority_base == 64 ) {
80        if ( index == 4 ) {
81          status = rtems_task_set_priority(
82            Priority_task_id[ 5 ],
83            priority_base + 4,
84            &previous_priority
85          );
86          printf( "PDRV - change priority of PRI5 from %d to %d\n",
87             previous_priority,
88             priority_base + 4
89          );
90          directive_failed( status, "PDRV rtems_task_set_priority" );
91        }
92        status = rtems_task_set_priority(
93          Priority_task_id[ 5 ],
94          RTEMS_CURRENT_PRIORITY,
95          &previous_priority
96        );
97        directive_failed( status, "PDRV rtems_task_set_priority CURRENT" );
98        printf( "PDRV - priority of PRI5 is %d\n", previous_priority );
99      }
100    }
101  }
102
103  status = rtems_task_wake_after( TICKS_PER_SECOND );
104  directive_failed( status, "rtems_task_wake_after after loop" );
105
106  if ( priority_base == 0 ) {
107    for ( index = 1 ; index <= 5 ; index++ ) {
108      status = rtems_semaphore_release( Semaphore_id[ 2 ] );
109      directive_failed( status, "rtems_semaphore_release loop" );
110    }
111  }
112
113  if ( priority_base == 64 ) {
114    puts( "PDRV - rtems_task_resume - PRI5" );
115    status = rtems_task_resume( Priority_task_id[ 5 ] );
116    directive_failed( status, "rtems_task_resume" );
117
118    status = rtems_task_wake_after( 1 * TICKS_PER_SECOND );
119    directive_failed( status, "rtems_task_wake_after so PRI5 can run" );
120
121    status = rtems_task_delete( Priority_task_id[ 5 ] );
122    directive_failed( status, "rtems_task_delete of PRI5" );
123  }
124  else {
125    for ( index = 1 ; index <= 5 ; index++ ) {
126      status = rtems_task_delete( Priority_task_id[ index ] );
127      directive_failed( status, "rtems_task_delete loop" );
128    }
129  }
130}
Note: See TracBrowser for help on using the repository browser.