Mercurial > flash_v2
annotate packages/hal/sparclite/sleb/current/tests/slebtime.cxx @ 130:eb9fd8c04db3 ecos-sw-2000-10-23
Merge from eCos master repository on 2000-10-23-17:01:37-BST
| author | jlarmour |
|---|---|
| date | Mon, 23 Oct 2000 17:10:57 +0000 |
| parents | bf00f99aec69 |
| children | e0c0827131d1 |
| rev | line source |
|---|---|
| 2 | 1 /*================================================================= |
| 2 // | |
| 3 // slebtime.cxx | |
| 4 // | |
| 5 // SPARClite HAL timing tests | |
| 6 // | |
| 7 //========================================================================== | |
| 8 //####COPYRIGHTBEGIN#### | |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
9 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
10 // ------------------------------------------- |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
11 // The contents of this file are subject to the Red Hat eCos Public License |
|
66
bf00f99aec69
Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents:
64
diff
changeset
|
12 // Version 1.1 (the "License"); you may not use this file except in |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
13 // compliance with the License. You may obtain a copy of the License at |
|
66
bf00f99aec69
Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents:
64
diff
changeset
|
14 // http://www.redhat.com/ |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
15 // |
|
66
bf00f99aec69
Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents:
64
diff
changeset
|
16 // Software distributed under the License is distributed on an "AS IS" |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
18 // License for the specific language governing rights and limitations under |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
19 // the License. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
20 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
21 // The Original Code is eCos - Embedded Configurable Operating System, |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
22 // released September 30, 1998. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
23 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
24 // The Initial Developer of the Original Code is Red Hat. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
25 // Portions created by Red Hat are |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
26 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
27 // All Rights Reserved. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
28 // ------------------------------------------- |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
16
diff
changeset
|
29 // |
| 2 | 30 //####COPYRIGHTEND#### |
| 31 //========================================================================== | |
| 32 //#####DESCRIPTIONBEGIN#### | |
| 33 // | |
| 34 // Author(s): dsm | |
| 35 // Contributors: dsm, nickg | |
| 36 // Date: 1998-06-18 | |
| 37 //####DESCRIPTIONEND#### | |
| 38 */ | |
| 39 | |
| 40 #include <pkgconf/system.h> | |
| 41 #include <pkgconf/hal.h> | |
| 42 | |
| 43 #include <cyg/infra/cyg_type.h> | |
| 44 #include <cyg/infra/cyg_ass.h> | |
| 45 #include <cyg/infra/testcase.h> | |
| 46 | |
| 47 #ifdef CYGPKG_KERNEL | |
| 48 | |
| 49 #include <pkgconf/kernel.h> | |
| 50 | |
| 51 #ifdef CYGVAR_KERNEL_COUNTERS_CLOCK | |
| 52 | |
| 53 #include <cyg/hal/hal_arch.h> | |
| 54 #include <cyg/hal/hal_intr.h> | |
| 55 #include <cyg/hal/hal_diag.h> | |
| 56 #include <cyg/hal/hal_clock.h> | |
| 57 | |
| 58 #include <pkgconf/infra.h> | |
| 59 | |
| 60 #include <cyg/infra/diag.h> | |
| 61 | |
| 62 #include <cyg/kernel/thread.hxx> | |
| 63 #include <cyg/kernel/thread.inl> | |
| 64 #include <cyg/kernel/sched.hxx> | |
| 65 #include <cyg/kernel/sched.inl> | |
| 66 | |
| 67 // ------------------------------------------------------------------------- | |
| 68 | |
| 69 static void entry1( CYG_ADDRWORD arg ) | |
| 70 { | |
| 71 int i; | |
| 72 char *s = "tick 00"; | |
| 73 extern Cyg_Thread thread2; | |
| 74 CYG_TEST_INFO( "Starting measured seconds..." ); | |
| 75 for ( i = 0; i < 20 ; i++ ) { | |
| 76 Cyg_Thread::self()->delay( 100 ); // units should be centiSeconds | |
| 77 if ( '9' == s[ 6 ]++ ) { | |
| 78 s[ 6 ] = '0'; | |
| 79 s[ 5 ] ++; | |
| 80 } | |
| 81 CYG_TEST_INFO( s ); | |
| 82 } | |
| 83 CYG_TEST_PASS( "Done measured seconds..." ); | |
| 84 thread2.resume(); | |
| 85 } | |
| 86 | |
| 87 static void entry2( CYG_ADDRWORD arg ) | |
| 88 { | |
| 89 #define LOOPS 30 | |
| 90 int i, t1, t2, a; | |
| 91 int loops[ LOOPS ] = { 0,0,0,0,0 , 0,0,0,0,0 , | |
| 92 0,0,0,0,0 , 0,0,0,0,0 , | |
| 93 0,0,0,0,0 , 0,0,0,0,0 }; | |
| 94 | |
| 95 char s[] = "0 count 00 loops 00000"; | |
| 96 | |
| 97 for ( a = 0; a < 10; a++, (*s)++ ) { | |
| 98 CYG_TEST_INFO( "------------------------------------------" ); | |
| 99 HAL_CLOCK_READ( &t1 ); | |
| 100 do { | |
| 101 t2 = t1; | |
| 102 HAL_CLOCK_READ( &t1 ); | |
| 103 } while ( t1 >= t2 ); | |
| 104 | |
| 105 for ( i = 0; i < LOOPS; i++ ) { | |
| 106 register int z = 0; | |
| 107 while ( t1 <= i ) { | |
| 108 z++; | |
| 109 HAL_CLOCK_READ( &t1 ); | |
| 110 } | |
| 111 loops[ i ] = z; | |
| 112 } | |
| 113 | |
| 114 s[9] = '0'; | |
| 115 s[8] = '0'; | |
| 116 for ( i = 0; i < LOOPS; i++ ) { | |
|
16
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
117 s[ sizeof( s ) - 2 ] = '0' + loops[ i ] / 1 % 10; |
|
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
118 s[ sizeof( s ) - 3 ] = '0' + loops[ i ] / 10 % 10; |
|
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
119 s[ sizeof( s ) - 4 ] = '0' + loops[ i ] / 100 % 10; |
|
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
120 s[ sizeof( s ) - 5 ] = '0' + loops[ i ] / 1000 % 10; |
|
4f2df4ab82c8
Merge from eCos master repository on 1999-06-18-15:25:04-BST
jlarmour
parents:
2
diff
changeset
|
121 s[ sizeof( s ) - 6 ] = '0' + loops[ i ] / 10000 % 10; |
| 2 | 122 CYG_TEST_INFO( s ); |
| 123 if ( '9' == s[9]++ ) { | |
| 124 s[9] = '0'; | |
| 125 s[8]++; | |
| 126 } | |
| 127 } | |
| 128 } | |
| 129 CYG_TEST_PASS( "Counted loops per timer tick" ); | |
| 130 CYG_TEST_EXIT( "All done" ); | |
| 131 } | |
| 132 | |
| 133 // ------------------------------------------------------------------------- | |
| 134 | |
| 135 static char stack1[ CYGNUM_HAL_STACK_SIZE_TYPICAL ]; | |
| 136 static char stack2[ CYGNUM_HAL_STACK_SIZE_TYPICAL ]; | |
| 137 | |
| 138 static Cyg_Thread thread1 CYG_INIT_PRIORITY( APPLICATION ) | |
| 139 = Cyg_Thread( 2u, entry1, 0u, "timed minute thread", | |
| 140 (CYG_ADDRWORD)stack1, | |
| 141 (CYG_ADDRWORD)CYGNUM_HAL_STACK_SIZE_TYPICAL ); | |
| 142 | |
| 143 static Cyg_Thread thread2 CYG_INIT_PRIORITY( APPLICATION ) | |
| 144 = Cyg_Thread( 4u, entry2, 0u, "uS clock loops timing thread", | |
| 145 (CYG_ADDRWORD)stack2, | |
| 146 (CYG_ADDRWORD)CYGNUM_HAL_STACK_SIZE_TYPICAL ); | |
| 147 | |
| 148 // ------------------------------------------------------------------------- | |
| 149 | |
|
130
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
66
diff
changeset
|
150 #ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG |
|
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
66
diff
changeset
|
151 externC void |
|
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
66
diff
changeset
|
152 cyg_hal_invoke_constructors(); |
|
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
66
diff
changeset
|
153 #endif |
|
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
66
diff
changeset
|
154 |
| 2 | 155 externC void |
| 156 cyg_user_start( void ) | |
| 157 { | |
|
130
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
66
diff
changeset
|
158 #ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG |
|
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
66
diff
changeset
|
159 cyg_hal_invoke_constructors(); |
|
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
66
diff
changeset
|
160 #endif |
| 2 | 161 CYG_TEST_INIT(); |
| 162 CYG_TEST_INFO( "cyg_user_start()" ); | |
| 163 thread1.resume(); | |
| 164 } | |
| 165 | |
| 166 // ------------------------------------------------------------------------- | |
| 167 | |
| 168 #else // ! CYGVAR_KERNEL_COUNTERS_CLOCK | |
| 169 #define N_A_MSG "no kernel clock" | |
| 170 #endif // CYGVAR_KERNEL_COUNTERS_CLOCK | |
| 171 #else // ! CYGPKG_KERNEL | |
| 172 #define N_A_MSG "no kernel" | |
| 173 #endif // CYGPKG_KERNEL | |
| 174 | |
| 175 #ifdef N_A_MSG | |
| 176 externC void | |
| 177 cyg_start( void ) | |
| 178 { | |
| 179 CYG_TEST_INIT(); | |
| 180 CYG_TEST_NA( N_A_MSG ); | |
| 181 } | |
| 182 #endif // N_A_MSG defined ie. we are N/A. | |
| 183 | |
| 184 /* EOF slebtime.cxx */ |
