Mercurial > nand-ecoscentric
annotate packages/compat/uitron/current/tests/test4.c @ 64:c38311975d4f ecos-sw-2000-01-28
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
| author | jlarmour |
|---|---|
| date | Fri, 28 Jan 2000 04:59:39 +0000 |
| parents | 443894e2e912 |
| children | bf00f99aec69 |
| rev | line source |
|---|---|
| 0 | 1 //=========================================================================== |
| 2 // | |
| 2 | 3 // test4.c |
| 0 | 4 // |
| 2 | 5 // uITRON "C" test program four |
| 0 | 6 // |
| 7 //=========================================================================== | |
| 8 //####COPYRIGHTBEGIN#### | |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
9 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
10 // ------------------------------------------- |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
11 // The contents of this file are subject to the Red Hat eCos Public License |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
12 // Version 1.0 (the "License"); you may not use this file except in |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
13 // compliance with the License. You may obtain a copy of the License at |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
14 // http://sourceware.cygnus.com/ecos |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
15 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
16 // Software distributed under the License is distributed on an |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
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:
2
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:
2
diff
changeset
|
19 // the License. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
20 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
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:
2
diff
changeset
|
22 // released September 30, 1998. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
23 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
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:
2
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:
2
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:
2
diff
changeset
|
27 // All Rights Reserved. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
28 // ------------------------------------------- |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
2
diff
changeset
|
29 // |
| 0 | 30 //####COPYRIGHTEND#### |
| 31 //=========================================================================== | |
| 32 //#####DESCRIPTIONBEGIN#### | |
| 33 // | |
| 2 | 34 // Author(s): dsm |
| 35 // Contributors: dsm | |
| 36 // Date: 1998-06-12 | |
| 37 // Purpose: uITRON API testing | |
| 38 // Description: | |
| 0 | 39 // |
| 40 //####DESCRIPTIONEND#### | |
| 41 // | |
| 42 //=========================================================================== | |
| 43 | |
| 44 #include <pkgconf/uitron.h> // uITRON setup CYGNUM_UITRON_SEMAS | |
| 45 // CYGPKG_UITRON et al | |
| 46 #include <cyg/infra/testcase.h> // testing infrastructure | |
| 47 | |
| 48 #ifdef CYGPKG_UITRON // we DO want the uITRON package | |
| 49 | |
| 50 #ifdef CYGSEM_KERNEL_SCHED_MLQUEUE // we DO want prioritized threads | |
| 51 | |
| 52 #ifdef CYGFUN_KERNEL_THREADS_TIMER // we DO want timout-able calls | |
| 53 | |
| 54 #ifdef CYGVAR_KERNEL_COUNTERS_CLOCK // we DO want the realtime clock | |
| 55 | |
| 56 // we're OK if it's C++ or neither of those two is defined: | |
| 57 #if defined( __cplusplus ) || \ | |
| 58 (!defined( CYGIMP_UITRON_INLINE_FUNCS ) && \ | |
| 59 !defined( CYGIMP_UITRON_CPP_OUTLINE_FUNCS) ) | |
| 60 | |
| 61 // =================== TEST CONFIGURATION =================== | |
| 62 #if \ | |
| 63 /* test configuration for enough tasks */ \ | |
| 64 (CYGNUM_UITRON_TASKS >= 4) && \ | |
| 65 (CYGNUM_UITRON_TASKS < 90) && \ | |
| 66 (CYGNUM_UITRON_START_TASKS == 1) && \ | |
| 67 ( !defined(CYGPKG_UITRON_TASKS_CREATE_DELETE) || \ | |
| 68 CYGNUM_UITRON_TASKS_INITIALLY >= 4 ) && \ | |
| 69 \ | |
| 70 /* test configuration for enough cyclic handlers */ \ | |
| 71 defined( CYGPKG_UITRON_CYCLICS ) && \ | |
| 72 (CYGNUM_UITRON_CYCLICS >= 3) && \ | |
| 73 (CYGNUM_UITRON_CYCLICS < 90) && \ | |
| 74 \ | |
| 75 /* test configuration for enough alarm handlers */ \ | |
| 76 defined( CYGPKG_UITRON_ALARMS ) && \ | |
| 77 (CYGNUM_UITRON_ALARMS >= 3) && \ | |
| 78 (CYGNUM_UITRON_ALARMS < 90) && \ | |
| 79 \ | |
| 80 /* the end of the large #if statement */ \ | |
| 81 1 | |
| 82 | |
| 83 // ============================ END ============================ | |
| 84 | |
| 85 | |
| 86 | |
| 87 #include <cyg/compat/uitron/uit_func.h> // uITRON | |
| 88 | |
| 89 externC void | |
| 90 cyg_package_start( void ) | |
| 91 { | |
| 92 CYG_TEST_INIT(); | |
| 93 CYG_TEST_INFO( "Calling cyg_uitron_start()" ); | |
| 94 cyg_uitron_start(); | |
| 95 } | |
| 96 | |
| 97 volatile int intercount = 0; | |
| 98 INT scratch; | |
| 99 | |
| 100 void hand1(void) | |
| 101 { | |
| 102 CYG_TEST_INFO("Handler 1 called"); | |
| 103 intercount++; | |
| 104 } | |
| 105 | |
| 106 void hand2(void) | |
| 107 { | |
| 108 CYG_TEST_CHECK( 2 == intercount, "handler out of sync" ); | |
| 109 CYG_TEST_INFO("Handler 2 called"); | |
| 110 intercount++; | |
| 111 } | |
| 112 | |
| 113 void task1( unsigned int arg ) | |
| 114 { | |
| 115 ER ercd; | |
| 116 | |
| 117 T_DCYC dcyc; | |
| 118 T_DALM dalm; | |
| 119 T_RCYC rcyc; | |
| 120 T_RALM ralm; | |
| 121 | |
| 2 | 122 unsigned int tm; |
| 123 | |
| 0 | 124 static char foo[] = "Test message"; |
| 125 VP info = (VP)foo; | |
| 126 | |
| 2 | 127 // Increase times when running on HW since overhead of GDB packet |
| 128 // acknowledgements may cause tests of timing to fail. | |
| 129 if (cyg_test_is_simulator) | |
| 130 tm = 1; | |
| 131 else | |
| 132 tm = 4; | |
| 133 | |
| 0 | 134 CYG_TEST_INFO( "Task 1 running" ); |
| 135 ercd = get_tid( &scratch ); | |
| 136 CYG_TEST_CHECK( E_OK == ercd, "get_tid bad ercd" ); | |
| 137 CYG_TEST_CHECK( 1 == scratch, "tid not 1" ); | |
| 138 | |
| 139 dcyc.exinf = (VP)info; | |
| 140 dcyc.cycatr = TA_HLNG; | |
| 141 dcyc.cychdr = (FP)&hand1; | |
| 142 dcyc.cycact = TCY_INI; // bad | |
| 143 dcyc.cyctim = 2; | |
| 144 | |
| 145 #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS | |
| 146 ercd = def_cyc(3, &dcyc); | |
| 147 CYG_TEST_CHECK( E_PAR == ercd, "def_cyc bad ercd !E_PAR" ); | |
| 148 #endif // we can test bad param error returns | |
| 149 | |
| 150 dcyc.cycact = TCY_OFF; // make good | |
| 151 dcyc.cyctim = 0; // bad | |
| 152 | |
| 153 #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS | |
| 154 ercd = def_cyc(3, &dcyc); | |
| 155 CYG_TEST_CHECK( E_PAR == ercd, "def_cyc bad ercd !E_PAR" ); | |
| 156 #endif // we can test bad param error returns | |
| 157 | |
| 158 dcyc.cyctim = 1; // make good | |
| 159 | |
| 160 ercd = def_cyc(3, &dcyc); | |
| 161 CYG_TEST_CHECK( E_OK == ercd, "def_cyc bad ercd" ); | |
| 162 | |
| 163 #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS | |
| 164 ercd = def_cyc(-6, &dcyc); | |
| 165 CYG_TEST_CHECK( E_PAR == ercd, "def_cyc bad ercd !E_PAR" ); | |
| 166 ercd = def_cyc(99, &dcyc); | |
| 167 CYG_TEST_CHECK( E_PAR == ercd, "def_cyc bad ercd !E_PAR" ); | |
| 168 | |
| 169 ercd = act_cyc(-6, TCY_OFF); | |
| 170 CYG_TEST_CHECK( E_PAR == ercd, "act_cyc bad ercd !E_PAR" ); | |
| 171 ercd = act_cyc(99, TCY_OFF); | |
| 172 CYG_TEST_CHECK( E_PAR == ercd, "act_cyc bad ercd !E_PAR" ); | |
| 173 ercd = act_cyc( 3, ~0); | |
| 174 CYG_TEST_CHECK( E_PAR == ercd, "act_cyc bad ercd !E_PAR" ); | |
| 175 | |
| 176 ercd = ref_cyc(&rcyc, -6); | |
| 177 CYG_TEST_CHECK( E_PAR == ercd, "ref_cyc bad ercd !E_PAR" ); | |
| 178 ercd = ref_cyc(&rcyc, 99); | |
| 179 CYG_TEST_CHECK( E_PAR == ercd, "ref_cyc bad ercd !E_PAR" ); | |
| 180 #ifndef CYGSEM_UITRON_PARAMS_NULL_IS_GOOD_PTR | |
| 181 ercd = ref_cyc(NULL, 3); | |
| 182 CYG_TEST_CHECK( E_PAR == ercd, "ref_cyc bad ercd !E_PAR" ); | |
| 183 #endif | |
| 184 ercd = ref_cyc(NADR, 3); | |
| 185 CYG_TEST_CHECK( E_PAR == ercd, "ref_cyc bad ercd !E_PAR" ); | |
| 186 #endif // we can test bad param error returns | |
| 187 | |
| 188 ercd = def_cyc(3, (T_DCYC *)NADR); | |
| 189 CYG_TEST_CHECK( E_OK == ercd, "def_cyc bad ercd" ); | |
| 190 #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS | |
| 191 ercd = ref_cyc(&rcyc, 3); | |
| 192 CYG_TEST_CHECK( E_NOEXS == ercd, "ref_cyc bad ercd !E_NOEXS" ); | |
| 193 #endif // we can test bad param error returns | |
| 194 | |
| 195 CYG_TEST_PASS( "bad calls: def_cyc, act_cyc, ref_cyc" ); | |
| 196 | |
| 197 dalm.exinf = (VP)info; | |
| 198 dalm.almatr = TA_HLNG; | |
| 199 dalm.almhdr = (FP)&hand2; | |
| 200 dalm.tmmode = ~0; // bad | |
| 201 dalm.almtim = 20; | |
| 202 | |
| 203 #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS | |
| 204 ercd = def_alm(3, &dalm); | |
| 205 CYG_TEST_CHECK( E_PAR == ercd, "def_alm bad ercd !E_PAR" ); | |
| 206 #endif // we can test bad param error returns | |
| 207 | |
| 208 dalm.tmmode = TTM_REL; // make good | |
| 209 dalm.almtim = 0; // bad | |
| 210 | |
| 211 #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS | |
| 212 ercd = def_alm(3, &dalm); | |
| 213 CYG_TEST_CHECK( E_PAR == ercd, "def_alm bad ercd !E_PAR" ); | |
| 214 #endif // we can test bad param error returns | |
| 215 | |
| 216 dalm.almtim = 1000; // make good | |
| 217 | |
| 218 ercd = def_alm(3, &dalm); | |
| 219 CYG_TEST_CHECK( E_OK == ercd, "def_alm bad ercd" ); | |
| 220 | |
| 221 #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS | |
| 222 ercd = ref_alm(&ralm, -6); | |
| 223 CYG_TEST_CHECK( E_PAR == ercd, "ref_alm bad ercd !E_PAR" ); | |
| 224 ercd = ref_alm(&ralm, 99); | |
| 225 CYG_TEST_CHECK( E_PAR == ercd, "ref_alm bad ercd !E_PAR" ); | |
| 226 #ifndef CYGSEM_UITRON_PARAMS_NULL_IS_GOOD_PTR | |
| 227 ercd = ref_alm(NULL, 3); | |
| 228 CYG_TEST_CHECK( E_PAR == ercd, "ref_alm bad ercd !E_PAR" ); | |
| 229 #endif | |
| 230 ercd = ref_alm(NADR, 3); | |
| 231 CYG_TEST_CHECK( E_PAR == ercd, "ref_alm bad ercd !E_PAR" ); | |
| 232 | |
| 233 #endif // we can test bad param error returns | |
| 234 ercd = def_alm(3, (T_DALM *)NADR); | |
| 235 CYG_TEST_CHECK( E_OK == ercd, "def_cyc bad ercd" ); | |
| 236 #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS | |
| 237 ercd = ref_alm(&ralm, 3); | |
| 238 CYG_TEST_CHECK( E_NOEXS == ercd, "ref_cyc bad ercd !E_NOEXS" ); | |
| 239 #endif // we can test bad param error returns | |
| 240 | |
| 241 CYG_TEST_PASS( "bad calls: def_alm, act_alm, ref_alm" ); | |
| 242 | |
| 243 dcyc.exinf = (VP)info; | |
| 244 dcyc.cycatr = TA_HLNG; | |
| 245 dcyc.cychdr = (FP)&hand1; | |
| 246 dcyc.cycact = TCY_ON; | |
| 2 | 247 dcyc.cyctim = 50*tm; |
| 0 | 248 |
| 249 ercd = def_cyc(3, &dcyc); | |
| 250 CYG_TEST_CHECK( E_OK == ercd, "ref_cyc bad ercd" ); | |
| 251 ercd = ref_cyc(&rcyc, 3); | |
| 252 CYG_TEST_CHECK( E_OK == ercd, "ref_cyc bad ercd" ); | |
| 253 CYG_TEST_CHECK( info == rcyc.exinf, "rcyc.exinf should be info" ); | |
| 2 | 254 CYG_TEST_CHECK( 45*tm < rcyc.lfttim, "rcyc.lfttim too small" ); |
| 255 CYG_TEST_CHECK( rcyc.lfttim <= 50*tm, "rcyc.lfttim too big" ); | |
| 0 | 256 CYG_TEST_CHECK( TCY_ON == rcyc.cycact, "rcyc.cycact should be TCY_ON" ); |
| 257 ercd = act_cyc(3, TCY_OFF); | |
| 258 CYG_TEST_CHECK( E_OK == ercd, "act_cyc bad ercd" ); | |
| 259 ercd = ref_cyc(&rcyc, 3); | |
| 260 CYG_TEST_CHECK( E_OK == ercd, "ref_cyc bad ercd" ); | |
| 261 CYG_TEST_CHECK( info == rcyc.exinf, "rcyc.exinf should be info" ); | |
| 2 | 262 CYG_TEST_CHECK( 45*tm < rcyc.lfttim, "rcyc.lfttim too small" ); |
| 263 CYG_TEST_CHECK( rcyc.lfttim <= 50*tm, "rcyc.lfttim too big" ); | |
| 0 | 264 CYG_TEST_CHECK( TCY_OFF == rcyc.cycact, "rcyc.cycact should be TCY_OFF" ); |
| 265 ercd = act_cyc(3, TCY_ON); | |
| 266 CYG_TEST_CHECK( E_OK == ercd, "act_cyc bad ercd" ); | |
| 267 | |
| 268 CYG_TEST_PASS("good calls: def_cyc, act_cyc, ref_cyc"); | |
| 269 | |
| 270 dalm.exinf = (VP)info; | |
| 271 dalm.almatr = TA_HLNG; | |
| 272 dalm.almhdr = (FP)&hand2; | |
| 273 dalm.tmmode = TTM_REL; | |
| 2 | 274 dalm.almtim = 120*tm; |
| 0 | 275 |
| 276 ercd = def_alm(3, &dalm); | |
| 277 CYG_TEST_CHECK( E_OK == ercd, "def_alm bad ercd" ); | |
| 278 ercd = ref_alm(&ralm, 3); | |
| 279 CYG_TEST_CHECK( E_OK == ercd, "ref_alm bad ercd" ); | |
| 280 CYG_TEST_CHECK( info == ralm.exinf, "ralm.exinf should be info" ); | |
| 2 | 281 CYG_TEST_CHECK( 115*tm < ralm.lfttim, "ralm.lfttim too small" ); |
| 282 CYG_TEST_CHECK( ralm.lfttim <= 120*tm, "ralm.lfttim too big" ); | |
| 0 | 283 |
| 284 // Expect handlers to be called at approximate times | |
| 2 | 285 // time intercount |
| 286 // tm*50 hand1 0 | |
| 287 // tm*100 hand1 1 | |
| 288 // tm*120 hand2 2 | |
| 289 // tm*150 hand1 3 | |
| 0 | 290 |
| 2 | 291 ercd = dly_tsk(160*tm); |
| 0 | 292 CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" ); |
| 293 CYG_TEST_CHECK( 4 == intercount, "handlers not both called" ); | |
| 294 | |
| 295 ercd = act_cyc(3, TCY_OFF); | |
| 296 CYG_TEST_CHECK( E_OK == ercd, "act_cyc(off) bad ercd" ); | |
| 297 | |
| 2 | 298 ercd = dly_tsk(60*tm); // enough for at least one tick |
| 0 | 299 CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" ); |
| 300 CYG_TEST_CHECK( 4 == intercount, "cyclic not disabled" ); | |
| 301 | |
| 302 // approx time now 220, so we expect a cycle in about 30 ticks | |
| 303 ercd = act_cyc(3, TCY_ON); | |
| 304 CYG_TEST_CHECK( E_OK == ercd, "act_cyc(on) bad ercd" ); | |
| 305 ercd = ref_cyc(&rcyc, 3); | |
| 306 CYG_TEST_CHECK( E_OK == ercd, "ref_cyc bad ercd" ); | |
| 307 CYG_TEST_CHECK( info == rcyc.exinf, "rcyc.exinf should be info" ); | |
| 2 | 308 CYG_TEST_CHECK( 25*tm < rcyc.lfttim, "rcyc.lfttim too small" ); |
| 309 CYG_TEST_CHECK( rcyc.lfttim <= 35*tm, "rcyc.lfttim too big" ); | |
| 0 | 310 CYG_TEST_CHECK( TCY_ON == rcyc.cycact, "rcyc.cycact should be TCY_ON" ); |
| 311 | |
| 312 // now resynchronize with right now: | |
| 313 ercd = act_cyc(3, TCY_ON|TCY_INI); | |
| 314 CYG_TEST_CHECK( E_OK == ercd, "act_cyc(on) bad ercd" ); | |
| 315 ercd = ref_cyc(&rcyc, 3); | |
| 316 CYG_TEST_CHECK( E_OK == ercd, "ref_cyc bad ercd" ); | |
| 317 CYG_TEST_CHECK( info == rcyc.exinf, "rcyc.exinf should be info" ); | |
| 2 | 318 CYG_TEST_CHECK( 45*tm < rcyc.lfttim, "rcyc.lfttim too small" ); |
| 319 CYG_TEST_CHECK( rcyc.lfttim <= 50*tm, "rcyc.lfttim too big" ); | |
| 0 | 320 CYG_TEST_CHECK( TCY_ON == rcyc.cycact, "rcyc.cycact should be TCY_ON" ); |
| 321 | |
| 322 // wait a bit and check that time marches on, or even down | |
| 2 | 323 ercd = dly_tsk(10*tm); |
| 0 | 324 CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" ); |
| 325 ercd = ref_cyc(&rcyc, 3); | |
| 326 CYG_TEST_CHECK( E_OK == ercd, "ref_cyc bad ercd" ); | |
| 327 CYG_TEST_CHECK( info == rcyc.exinf, "rcyc.exinf should be info" ); | |
| 2 | 328 CYG_TEST_CHECK( 35*tm < rcyc.lfttim, "rcyc.lfttim too small" ); |
| 329 CYG_TEST_CHECK( rcyc.lfttim <= 45*tm, "rcyc.lfttim too big" ); | |
| 0 | 330 CYG_TEST_CHECK( TCY_ON == rcyc.cycact, "rcyc.cycact should be TCY_ON" ); |
| 331 | |
| 332 // now turn it off and re-synch with right now: | |
| 333 ercd = act_cyc(3, TCY_OFF|TCY_INI); | |
| 334 CYG_TEST_CHECK( E_OK == ercd, "act_cyc(on) bad ercd" ); | |
| 335 ercd = ref_cyc(&rcyc, 3); | |
| 336 CYG_TEST_CHECK( E_OK == ercd, "ref_cyc bad ercd" ); | |
| 337 CYG_TEST_CHECK( info == rcyc.exinf, "rcyc.exinf should be info" ); | |
| 2 | 338 CYG_TEST_CHECK( 45*tm < rcyc.lfttim, "rcyc.lfttim too small" ); |
| 339 CYG_TEST_CHECK( rcyc.lfttim <= 50*tm, "rcyc.lfttim too big" ); | |
| 0 | 340 CYG_TEST_CHECK( TCY_OFF == rcyc.cycact, "rcyc.cycact should be TCY_OFF" ); |
| 341 | |
| 342 ercd = act_cyc(3, TCY_OFF); | |
| 343 CYG_TEST_CHECK( E_OK == ercd, "act_cyc(on) bad ercd" ); | |
| 344 | |
| 345 CYG_TEST_PASS("good calls: def_cyc, act_cyc, ref_cyc, def_alm, ref_alm"); | |
| 346 | |
| 347 // all done | |
| 348 CYG_TEST_EXIT( "All done" ); | |
| 349 ext_tsk(); | |
| 350 } | |
| 351 | |
| 352 | |
| 353 | |
| 354 void task2( unsigned int arg ) | |
| 355 { | |
| 356 } | |
| 357 | |
| 358 void task3( unsigned int arg ) | |
| 359 { | |
| 360 } | |
| 361 | |
| 362 void task4( unsigned int arg ) | |
| 363 { | |
| 364 } | |
| 365 | |
| 366 #else // not enough (or too many) uITRON objects configured in | |
| 367 #define N_A_MSG "not enough uITRON objects to run test" | |
| 368 #endif // not enough (or too many) uITRON objects configured in | |
| 369 #else // not C++ and some C++ specific options enabled | |
| 370 #define N_A_MSG "C++ specific options selected but this is C" | |
| 371 #endif // not C++ and some C++ specific options enabled | |
| 372 #else // ! CYGVAR_KERNEL_COUNTERS_CLOCK - can't test without it | |
| 373 #define N_A_MSG "no CYGVAR_KERNEL_COUNTERS_CLOCK" | |
| 374 #endif // ! CYGVAR_KERNEL_COUNTERS_CLOCK - can't test without it | |
| 2 | 375 #else // ! CYGFUN_KERNEL_THREADS_TIMER - can't test without it |
| 0 | 376 #define N_A_MSG "no CYGFUN_KERNEL_THREADS_TIMER" |
| 2 | 377 #endif // ! CYGFUN_KERNEL_THREADS_TIMER - can't test without it |
| 378 #else // ! CYGIMP_THREAD_PRIORITY - can't test without it | |
| 0 | 379 #define N_A_MSG "no CYGSEM_KERNEL_SCHED_MLQUEUE" |
| 2 | 380 #endif // ! CYGSEM_KERNEL_SCHED_MLQUEUE - can't test without it |
| 0 | 381 #else // ! CYGPKG_UITRON |
| 382 #define N_A_MSG "uITRON Compatibility layer disabled" | |
| 383 #endif // CYGPKG_UITRON | |
| 384 | |
| 385 #ifdef N_A_MSG | |
| 386 void | |
| 387 cyg_start( void ) | |
| 388 { | |
| 389 CYG_TEST_INIT(); | |
| 2 | 390 CYG_TEST_NA( N_A_MSG ); |
| 0 | 391 } |
| 392 #endif // N_A_MSG defined ie. we are N/A. | |
| 393 | |
| 394 // EOF test4.c |
