OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rtems-20020807/] [c/] [src/] [tests/] [tmtests/] [tm05/] [task1.c] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1026 ivang
/*
2
 *
3
 *  COPYRIGHT (c) 1989-1999.
4
 *  On-Line Applications Research Corporation (OAR).
5
 *
6
 *  The license and distribution terms for this file may be
7
 *  found in the file LICENSE in this distribution or at
8
 *  http://www.OARcorp.com/rtems/license.html.
9
 *
10
 *  task1.c,v 1.11 2002/08/02 00:52:36 joel Exp
11
 */
12
 
13
#define TEST_INIT
14
#include "system.h"
15
 
16
rtems_id         Task_id[OPERATION_COUNT+1];
17
rtems_unsigned32 Task_index;
18
 
19
rtems_task High_task(
20
  rtems_task_argument argument
21
);
22
 
23
rtems_task Middle_tasks(
24
  rtems_task_argument argument
25
);
26
 
27
rtems_task Low_task(
28
  rtems_task_argument argument
29
);
30
 
31
void test_init();
32
 
33
rtems_task Init(
34
  rtems_task_argument argument
35
)
36
{
37
  rtems_status_code status;
38
 
39
  Print_Warning();
40
 
41
  puts( "\n\n*** TIME TEST 5 ***" );
42
 
43
  test_init();
44
 
45
  status = rtems_task_delete( RTEMS_SELF );
46
  directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
47
}
48
 
49
void test_init()
50
{
51
  rtems_status_code   status;
52
  rtems_task_entry    task_entry;
53
  rtems_task_priority priority;
54
  rtems_unsigned32    index;
55
 
56
  priority = 250;
57
 
58
  for( index = 0; index <= OPERATION_COUNT ; index++ ) {
59
 
60
    status = rtems_task_create(
61
      rtems_build_name( 'T', 'I', 'M', 'E' ),
62
      priority,
63
      RTEMS_MINIMUM_STACK_SIZE,
64
      RTEMS_DEFAULT_MODES,
65
      RTEMS_DEFAULT_ATTRIBUTES,
66
      &Task_id[ index ]
67
    );
68
    directive_failed( status, "rtems_task_create loop" );
69
 
70
    priority--;
71
 
72
    if ( index==0 )                    task_entry = Low_task;
73
    else if ( index==OPERATION_COUNT ) task_entry = High_task;
74
    else                               task_entry = Middle_tasks;
75
 
76
    status = rtems_task_start( Task_id[ index ], task_entry, 0 );
77
    directive_failed( status, "rtems_task_start loop" );
78
  }
79
}
80
 
81
rtems_task High_task(
82
  rtems_task_argument argument
83
)
84
{
85
  Timer_initialize();
86
 
87
  (void) rtems_task_suspend( RTEMS_SELF );
88
 
89
  end_time = Read_timer();
90
 
91
  put_time(
92
    "rtems_task_resume: task readied -- preempts caller",
93
    end_time,
94
    OPERATION_COUNT,
95
    0,
96
    CALLING_OVERHEAD_TASK_RESUME
97
  );
98
 
99
  puts( "*** END OF TEST 5 ***" );
100
  rtems_test_exit( 0 );
101
}
102
 
103
rtems_task Middle_tasks(
104
  rtems_task_argument argument
105
)
106
{
107
  (void) rtems_task_suspend( RTEMS_SELF );
108
 
109
  Task_index++;
110
  (void) rtems_task_resume( Task_id[ Task_index ] );
111
}
112
 
113
rtems_task Low_task(
114
  rtems_task_argument argument
115
)
116
{
117
 
118
  end_time = Read_timer();
119
 
120
  put_time(
121
    "rtems_task_suspend: calling task",
122
    end_time,
123
    OPERATION_COUNT,
124
    0,
125
    CALLING_OVERHEAD_TASK_SUSPEND
126
  );
127
 
128
  Task_index = 1;
129
  Timer_initialize();
130
  (void) rtems_task_resume( Task_id[ Task_index ] );
131
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.