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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [tests/] [tmtests/] [tmck/] [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:46 chris Exp $
11
 */
12
 
13
 
14
#define TEST_INIT
15
#include "system.h"
16
 
17
#define MAXIMUM_DISTRIBUTION 10000
18
 
19
#undef OPERATION_COUNT
20
#define OPERATION_COUNT    100000
21
 
22
int Distribution[ MAXIMUM_DISTRIBUTION + 1 ];
23
 
24
rtems_task Task_1(
25
  rtems_task_argument argument
26
);
27
 
28
void check_read_timer( void );
29
 
30
rtems_task Init(
31
  rtems_task_argument argument
32
)
33
{
34
  rtems_id          id;
35
  rtems_status_code status;
36
 
37
  /*
38
   *  Tell the Timer Driver what we are doing
39
   */
40
 
41
  Set_find_average_overhead( 1 );
42
 
43
  Print_Warning();
44
 
45
  puts( "\n\n*** TIME CHECKER ***" );
46
 
47
  Task_name[ 1 ] = rtems_build_name( 'T', 'A', '1', ' ' ),
48
 
49
  status = rtems_task_create(
50
    1,
51
    5,
52
    RTEMS_MINIMUM_STACK_SIZE,
53
    RTEMS_DEFAULT_MODES,
54
    RTEMS_DEFAULT_ATTRIBUTES,
55
    &id
56
  );
57
  directive_failed( status, "rtems_task_create of TA1" );
58
 
59
  status = rtems_task_start( id, Task_1, 0 );
60
  directive_failed( status, "rtems_task_start of TA1" );
61
 
62
  status = rtems_task_delete( RTEMS_SELF );
63
  directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
64
}
65
 
66
rtems_task Task_1(
67
  rtems_task_argument argument
68
)
69
{
70
  rtems_unsigned32 index;
71
 
72
  check_read_timer();
73
rtems_test_pause();
74
 
75
  Timer_initialize();
76
  end_time = Read_timer();
77
 
78
  put_time(
79
    "NULL timer stopped at",
80
    end_time,
81
    1,
82
    0,
83
 
84
  );
85
 
86
  Timer_initialize();
87
  for ( index = 1 ; index <= 1000 ; index++ )
88
    (void) Empty_function();
89
  end_time = Read_timer();
90
 
91
  put_time(
92
    "LOOP (1000) timer stopped at",
93
    end_time,
94
    1,
95
    0,
96
 
97
  );
98
 
99
  Timer_initialize();
100
  for ( index = 1 ; index <= 10000 ; index++ )
101
    (void) Empty_function();
102
  end_time = Read_timer();
103
 
104
  put_time(
105
    "LOOP (10000) timer stopped at",
106
    end_time,
107
    1,
108
    0,
109
 
110
  );
111
 
112
  Timer_initialize();
113
  for ( index = 1 ; index <= 50000 ; index++ )
114
    (void) Empty_function();
115
  end_time = Read_timer();
116
 
117
  put_time(
118
    "LOOP (50000) timer stopped at",
119
    end_time,
120
    1,
121
    0,
122
 
123
  );
124
 
125
  Timer_initialize();
126
  for ( index = 1 ; index <= 100000 ; index++ )
127
    (void) Empty_function();
128
  end_time = Read_timer();
129
 
130
  put_time(
131
    "LOOP (100000) timer stopped at",
132
    end_time,
133
    1,
134
    0,
135
 
136
  );
137
 
138
  puts( "*** END OF TIME CHECKER ***" );
139
  exit( 0 );
140
}
141
 
142
void check_read_timer()
143
{
144
  rtems_unsigned32 index;
145
  rtems_unsigned32 time;
146
 
147
  for ( index = 1 ; index <= MAXIMUM_DISTRIBUTION ; index++ )
148
    Distribution[ index ] = 0;
149
 
150
  for ( index = 1 ; index <= OPERATION_COUNT ; index++ ) {
151
    Timer_initialize();
152
    end_time = Read_timer();
153
    if ( end_time > MAXIMUM_DISTRIBUTION ) {
154
      /*
155
       *  Under UNIX a simple process swap takes longer than we
156
       *  consider valid for our testing purposes.
157
       */
158
      printf( "TOO LONG (%d) at index %d!!!\n", end_time, index );
159
#if defined(unix)
160
      index--;
161
      continue;
162
#else
163
      exit( 1 );
164
#endif
165
    }
166
    else
167
      Distribution[ end_time ]++;
168
  }
169
 
170
  printf( "Units may not be in microseconds for this test!!!\n" );
171
  time = 0;
172
  for ( index = 0 ; index <= MAXIMUM_DISTRIBUTION ; index++ ) {
173
    time += (Distribution[ index ] * index);
174
    if ( Distribution[ index ] != 0 )
175
      printf( "%d %d\n", index, Distribution[ index ] );
176
  }
177
  printf( "Total time = %d\n", time );
178
  printf( "Average time = %d\n", time / OPERATION_COUNT );
179
}

powered by: WebSVN 2.1.0

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