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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [tests/] [tmtests/] [tm15/] [task1.c] - Blame information for rev 173

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 30 unneback
/*
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
 *  $Id: task1.c,v 1.2 2001-09-27 12:02:42 chris Exp $
11
 */
12
 
13
#define TEST_INIT
14
#include "system.h"
15
 
16
rtems_unsigned32 time_set, eventout;
17
 
18
rtems_task High_tasks(
19
  rtems_task_argument argument
20
);
21
 
22
rtems_task Low_task(
23
  rtems_task_argument argument
24
);
25
 
26
void test_init();
27
 
28
rtems_task Init(
29
  rtems_task_argument argument
30
)
31
{
32
  rtems_status_code status;
33
 
34
  Print_Warning();
35
 
36
  puts( "\n\n*** TIME TEST 15 ***" );
37
 
38
  test_init();
39
 
40
  status = rtems_task_delete( RTEMS_SELF );
41
  directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
42
}
43
 
44
void test_init()
45
{
46
  rtems_id          id;
47
  rtems_unsigned32  index;
48
  rtems_event_set   event_out;
49
  rtems_status_code status;
50
 
51
  time_set = FALSE;
52
 
53
  status = rtems_task_create(
54
    rtems_build_name( 'L', 'O', 'W', ' ' ),
55
    10,
56
    RTEMS_MINIMUM_STACK_SIZE,
57
    RTEMS_NO_PREEMPT,
58
    RTEMS_DEFAULT_ATTRIBUTES,
59
    &id
60
  );
61
  directive_failed( status, "rtems_task_create LOW" );
62
 
63
  status = rtems_task_start( id, Low_task, 0 );
64
  directive_failed( status, "rtems_task_start LOW" );
65
 
66
  for ( index = 1 ; index <= OPERATION_COUNT ; index++ ) {
67
    status = rtems_task_create(
68
      rtems_build_name( 'H', 'I', 'G', 'H' ),
69
      5,
70
      RTEMS_MINIMUM_STACK_SIZE,
71
      RTEMS_DEFAULT_MODES,
72
      RTEMS_DEFAULT_ATTRIBUTES,
73
      &Task_id[ index ]
74
    );
75
    directive_failed( status, "rtems_task_create LOOP" );
76
 
77
    status = rtems_task_start( Task_id[ index ], High_tasks, 0 );
78
    directive_failed( status, "rtems_task_start LOOP" );
79
  }
80
 
81
  Timer_initialize();
82
    for ( index=1 ; index <= OPERATION_COUNT ; index++ )
83
      (void) Empty_function();
84
  overhead = Read_timer();
85
 
86
  Timer_initialize();
87
    for ( index=1 ; index <= OPERATION_COUNT ; index++ )
88
    {
89
        (void) rtems_event_receive(
90
                 RTEMS_PENDING_EVENTS,
91
                 RTEMS_DEFAULT_OPTIONS,
92
                 RTEMS_NO_TIMEOUT,
93
                 &event_out
94
               );
95
    }
96
 
97
  end_time = Read_timer();
98
 
99
  put_time(
100
    "rtems_event_receive: obtain current events",
101
    end_time,
102
    OPERATION_COUNT,
103
    overhead,
104
    CALLING_OVERHEAD_EVENT_RECEIVE
105
  );
106
 
107
 
108
  Timer_initialize();
109
    for ( index=1 ; index <= OPERATION_COUNT ; index++ )
110
    {
111
      (void) rtems_event_receive(
112
               RTEMS_ALL_EVENTS,
113
               RTEMS_NO_WAIT,
114
               RTEMS_NO_TIMEOUT,
115
               &event_out
116
             );
117
    }
118
  end_time = Read_timer();
119
 
120
  put_time(
121
    "rtems_event_receive: not available -- NO_WAIT",
122
    end_time,
123
    OPERATION_COUNT,
124
    overhead,
125
    CALLING_OVERHEAD_EVENT_RECEIVE
126
  );
127
}
128
 
129
rtems_task Low_task(
130
  rtems_task_argument argument
131
)
132
{
133
  rtems_unsigned32  index;
134
  rtems_event_set   event_out;
135
 
136
  end_time = Read_timer();
137
 
138
  put_time(
139
    "rtems_event_receive: not available -- caller blocks",
140
    end_time,
141
    OPERATION_COUNT,
142
    0,
143
    CALLING_OVERHEAD_EVENT_RECEIVE
144
  );
145
 
146
  Timer_initialize();
147
    for ( index=1 ; index <= OPERATION_COUNT ; index++ )
148
      (void) Empty_function();
149
  overhead = Read_timer();
150
 
151
  Timer_initialize();
152
    for ( index=1 ; index <= OPERATION_COUNT ; index++ )
153
      (void) rtems_event_send( RTEMS_SELF, RTEMS_EVENT_16 );
154
  end_time = Read_timer();
155
 
156
  put_time(
157
    "rtems_event_send: no task readied",
158
    end_time,
159
    OPERATION_COUNT,
160
    overhead,
161
    CALLING_OVERHEAD_EVENT_SEND
162
  );
163
 
164
  Timer_initialize();
165
    (void) rtems_event_receive(
166
             RTEMS_EVENT_16,
167
             RTEMS_DEFAULT_OPTIONS,
168
             RTEMS_NO_TIMEOUT,
169
             &event_out
170
           );
171
  end_time = Read_timer();
172
 
173
  put_time(
174
    "rtems_event_receive: available",
175
    end_time,
176
    1,
177
    0,
178
    CALLING_OVERHEAD_EVENT_RECEIVE
179
  );
180
 
181
  Timer_initialize();
182
    for ( index=1 ; index <= OPERATION_COUNT ; index++ )
183
      (void) rtems_event_send( Task_id[ index ], RTEMS_EVENT_16 );
184
  end_time = Read_timer();
185
 
186
  put_time(
187
    "rtems_event_send: task readied -- returns to caller",
188
    end_time,
189
    OPERATION_COUNT,
190
    overhead,
191
    CALLING_OVERHEAD_EVENT_SEND
192
  );
193
 
194
  puts( "*** END OF TEST 15 ***" );
195
  exit( 0 );
196
}
197
 
198
rtems_task High_tasks(
199
  rtems_task_argument argument
200
)
201
{
202
  rtems_status_code status;
203
 
204
  if ( time_set )
205
    status = rtems_event_receive(
206
      RTEMS_EVENT_16,
207
      RTEMS_DEFAULT_OPTIONS,
208
      RTEMS_NO_TIMEOUT,
209
      &eventout
210
    );
211
  else {
212
    time_set = 1;
213
    Timer_initialize();            /* start blocking rtems_event_receive time */
214
    status = rtems_event_receive(
215
      RTEMS_EVENT_16,
216
      RTEMS_DEFAULT_OPTIONS,
217
      RTEMS_NO_TIMEOUT,
218
      &eventout
219
    );
220
  }
221
}

powered by: WebSVN 2.1.0

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