annotate packages/compat/uitron/current/tests/test8.c @ 2:443894e2e912 ecos-v1_2_1-release

Block commit of eCos version 1.2.1
author jlarmour
date Tue, 11 May 1999 12:24:34 +0000
parents 3111d98ba7b3
children c38311975d4f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1 //===========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
2 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
3 // test8.c
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
4 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
5 // uITRON "C" test program eight
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
6 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
7 //===========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
8 //####COPYRIGHTBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
9 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
10 // -------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
11 // The contents of this file are subject to the Cygnus eCos Public License
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
12 // Version 1.0 (the "License"); you may not use this file except in
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
13 // compliance with the License. You may obtain a copy of the License at
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
14 // http://sourceware.cygnus.com/ecos
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
15 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
16 // Software distributed under the License is distributed on an "AS IS"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
18 // License for the specific language governing rights and limitations under
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
19 // the License.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
20 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
21 // The Original Code is eCos - Embedded Cygnus Operating System, released
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
22 // September 30, 1998.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
23 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
24 // The Initial Developer of the Original Code is Cygnus. Portions created
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
25 // by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved.
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
26 // -------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
27 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
28 //####COPYRIGHTEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
29 //===========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
30 //#####DESCRIPTIONBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
31 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
32 // Author(s): hmt
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
33 // Contributors: hmt
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
34 // Date: 1998-10-12
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
35 // Purpose: uITRON API testing
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
36 // Description:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
37 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
38 //####DESCRIPTIONEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
39 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
40 //===========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
41
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
42 #include <pkgconf/uitron.h> // uITRON setup CYGNUM_UITRON_SEMAS
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
43 // CYGPKG_UITRON et al
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
44 #include <cyg/infra/testcase.h> // testing infrastructure
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
45
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
46 #ifdef CYGPKG_UITRON // we DO want the uITRON package
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
47
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
48 #ifdef CYGSEM_KERNEL_SCHED_MLQUEUE // we DO want prioritized threads
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
49
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
50 #ifdef CYGFUN_KERNEL_THREADS_TIMER // we DO want timout-able calls
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
51
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
52 #ifdef CYGVAR_KERNEL_COUNTERS_CLOCK // we DO want the realtime clock
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
53
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
54 // we're OK if it's C++ or neither of those two is defined:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
55 #if defined( __cplusplus ) || \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
56 (!defined( CYGIMP_UITRON_INLINE_FUNCS ) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
57 !defined( CYGIMP_UITRON_CPP_OUTLINE_FUNCS) )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
58
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
59 // =================== TEST CONFIGURATION ===================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
60 #if \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
61 /* test configuration for enough tasks */ \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
62 (CYGNUM_UITRON_TASKS >= 4) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
63 (CYGNUM_UITRON_TASKS < 90) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
64 (CYGNUM_UITRON_START_TASKS == 1) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
65 ( !defined(CYGPKG_UITRON_TASKS_CREATE_DELETE) || \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
66 CYGNUM_UITRON_TASKS_INITIALLY >= 4 ) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
67 \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
68 /* test configuration for enough semaphores */ \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
69 defined( CYGPKG_UITRON_SEMAS ) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
70 (CYGNUM_UITRON_SEMAS >= 3) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
71 (CYGNUM_UITRON_SEMAS < 90) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
72 ( !defined(CYGPKG_UITRON_SEMAS_CREATE_DELETE) || \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
73 CYGNUM_UITRON_SEMAS_INITIALLY >= 3 ) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
74 \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
75 /* the end of the large #if statement */ \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
76 1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
77
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
78 // ============================ END ============================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
79
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
80
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
81
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
82 #include <cyg/compat/uitron/uit_func.h> // uITRON
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
83
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
84 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
85 cyg_package_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
86 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
87 CYG_TEST_INIT();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
88 CYG_TEST_INFO( "Calling cyg_uitron_start()" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
89 cyg_uitron_start();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
90 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
91
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
92 volatile int intercount = 0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
93 INT scratch;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
94
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
95 void newtask( unsigned int arg );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
96 void task2( unsigned int arg );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
97 void task3( unsigned int arg );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
98 void task4( unsigned int arg );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
99
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
100 T_CTSK t_ctsk = { NULL, 0, (FP)&newtask, 1, CYGNUM_UITRON_STACK_SIZE };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
101 T_RTSK t_rtsk;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
102
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
103 void task1( unsigned int arg )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
104 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
105 ER ercd;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
106
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
107 CYG_TEST_INFO( "Task 1 running" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
108
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
109 // change us to prio 3 for flexibility
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
110 ercd = chg_pri( 0, 3 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
111 CYG_TEST_CHECK( E_OK == ercd, "chg_pri bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
112
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
113 #ifdef CYGPKG_UITRON_TASKS_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
114 // first, check that we can delete a task:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
115 #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
116 ercd = del_tsk( -6 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
117 CYG_TEST_CHECK( E_ID == ercd, "del_tsk bad ercd !E_ID" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
118 ercd = del_tsk( 99 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
119 CYG_TEST_CHECK( E_ID == ercd, "del_tsk bad ercd !E_ID" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
120 ercd = cre_tsk( -6, &t_ctsk );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
121 CYG_TEST_CHECK( E_ID == ercd, "cre_tsk bad ercd !E_ID" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
122 ercd = cre_tsk( 99, &t_ctsk );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
123 CYG_TEST_CHECK( E_ID == ercd, "cre_tsk bad ercd !E_ID" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
124 #endif // we can test bad param error returns
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
125 // try a pre-existing object
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
126 ercd = cre_tsk( 2, &t_ctsk );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
127 CYG_TEST_CHECK( E_OBJ == ercd, "cre_tsk bad ercd !E_OBJ" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
128 // try a pre-existing object - ourselves!
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
129 ercd = cre_tsk( 1, &t_ctsk );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
130 CYG_TEST_CHECK( E_OBJ == ercd, "cre_tsk bad ercd !E_OBJ" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
131 // try deleting an active task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
132 ercd = dis_dsp();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
133 CYG_TEST_CHECK( E_OK == ercd, "dis_dsp bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
134 ercd = sta_tsk( 2, 22222 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
135 CYG_TEST_CHECK( E_OK == ercd, "sta_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
136 ercd = chg_pri( 2, 5 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
137 CYG_TEST_CHECK( E_OK == ercd, "chg_pri bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
138 ercd = ena_dsp();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
139 CYG_TEST_CHECK( E_OK == ercd, "ena_dsp bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
140 // Task 2 is now ready-to-run, lower prio than us
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
141 ercd = del_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
142 CYG_TEST_CHECK( E_OBJ == ercd, "del_tsk bad ercd !E_OBJ" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
143 ercd = dly_tsk( 10 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
144 CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
145 // Task 2 is now sleeping
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
146 CYG_TEST_CHECK( 1 == intercount, "bad intercount !1" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
147 ercd = del_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
148 CYG_TEST_CHECK( E_OBJ == ercd, "del_tsk bad ercd !E_OBJ" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
149 // try deleting a running task - ourselves!
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
150 ercd = del_tsk( 1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
151 CYG_TEST_CHECK( E_OBJ == ercd, "del_tsk bad ercd !E_OBJ" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
152 // terminate task 2; should then be OK to delete it
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
153 ercd = ter_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
154 CYG_TEST_CHECK( E_OK == ercd, "ter_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
155 CYG_TEST_CHECK( 1 == intercount, "bad intercount !1" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
156 ercd = del_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
157 CYG_TEST_CHECK( E_OK == ercd, "del_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
158 CYG_TEST_CHECK( 1 == intercount, "bad intercount !1" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
159 // and check it is deleted
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
160 ercd = sta_tsk( 2, 99 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
161 CYG_TEST_CHECK( E_NOEXS == ercd, "sta_tsk bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
162 ercd = ter_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
163 CYG_TEST_CHECK( E_NOEXS == ercd, "ter_tsk bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
164 ercd = chg_pri( 2, 6 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
165 CYG_TEST_CHECK( E_NOEXS == ercd, "chg_pri bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
166 ercd = rel_wai( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
167 CYG_TEST_CHECK( E_NOEXS == ercd, "rel_wai bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
168 ercd = sus_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
169 CYG_TEST_CHECK( E_NOEXS == ercd, "sus_tsk bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
170 ercd = rsm_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
171 CYG_TEST_CHECK( E_NOEXS == ercd, "rsm_tsk bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
172 ercd = frsm_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
173 CYG_TEST_CHECK( E_NOEXS == ercd, "frsm_tsk bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
174 ercd = wup_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
175 CYG_TEST_CHECK( E_NOEXS == ercd, "wup_tsk bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
176 ercd = can_wup( &scratch, 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
177 CYG_TEST_CHECK( E_NOEXS == ercd, "can_wup bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
178 ercd = ref_tsk( &t_rtsk, 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
179 CYG_TEST_CHECK( E_NOEXS == ercd, "ref_tsk bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
180 ercd = del_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
181 CYG_TEST_CHECK( E_NOEXS == ercd, "del_tsk bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
182 // recreate task2, with the same function
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
183 t_ctsk.task = (FP)&task2;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
184 t_ctsk.itskpri = 7;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
185 ercd = cre_tsk( 2, &t_ctsk );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
186 CYG_TEST_CHECK( E_OK == ercd, "cre_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
187 ercd = ref_tsk( &t_rtsk, 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
188 CYG_TEST_CHECK( E_OK == ercd, "ref_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
189 CYG_TEST_CHECK( 7 == t_rtsk.tskpri, "Bad tskpri in new task2 !7" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
190 CYG_TEST_CHECK( TTS_DMT == t_rtsk.tskstat,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
191 "Bad tskstat in new task2 !TTS_DMT" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
192 CYG_TEST_CHECK( 1 == intercount, "bad intercount !1" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
193 // now start the task and do the same lot again...
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
194 ercd = cre_tsk( 2, &t_ctsk );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
195 CYG_TEST_CHECK( E_OBJ == ercd, "cre_tsk bad ercd !E_OBJ" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
196 // try deleting an active task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
197 ercd = sta_tsk( 2, 22222 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
198 CYG_TEST_CHECK( E_OK == ercd, "sta_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
199 // Task 2 is now ready-to-run, lower prio than us
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
200 ercd = del_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
201 CYG_TEST_CHECK( E_OBJ == ercd, "del_tsk bad ercd !E_OBJ" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
202 CYG_TEST_CHECK( 1 == intercount, "bad intercount !1" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
203 ercd = dly_tsk( 10 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
204 CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
205 CYG_TEST_CHECK( 2 == intercount, "bad intercount !2" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
206 // Task 2 is now sleeping
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
207 ercd = ref_tsk( &t_rtsk, 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
208 CYG_TEST_CHECK( E_OK == ercd, "ref_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
209 CYG_TEST_CHECK( 7 == t_rtsk.tskpri, "Bad tskpri in new task2 !7" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
210 CYG_TEST_CHECK( TTS_WAI == t_rtsk.tskstat,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
211 "Bad tskstat in new task2 !TTS_WAI" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
212 ercd = del_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
213 CYG_TEST_CHECK( E_OBJ == ercd, "del_tsk bad ercd !E_OBJ" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
214 // up its priority
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
215 ercd = chg_pri( 2, 1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
216 CYG_TEST_CHECK( E_OK == ercd, "chg_pri bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
217 // awaken task 2; it will then exit-and-delete itself:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
218 CYG_TEST_CHECK( 2 == intercount, "bad intercount !2" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
219 ercd = wup_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
220 CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
221 CYG_TEST_CHECK( 3 == intercount, "bad intercount !3" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
222 // and check it is deleted
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
223 ercd = sta_tsk( 2, 99 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
224 CYG_TEST_CHECK( E_NOEXS == ercd, "sta_tsk bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
225 CYG_TEST_CHECK( 3 == intercount, "bad intercount !3" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
226 ercd = ter_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
227 CYG_TEST_CHECK( E_NOEXS == ercd, "ter_tsk bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
228 ercd = chg_pri( 2, 1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
229 CYG_TEST_CHECK( E_NOEXS == ercd, "chg_pri bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
230 ercd = rel_wai( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
231 CYG_TEST_CHECK( E_NOEXS == ercd, "rel_wai bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
232 ercd = sus_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
233 CYG_TEST_CHECK( E_NOEXS == ercd, "sus_tsk bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
234 ercd = rsm_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
235 CYG_TEST_CHECK( E_NOEXS == ercd, "rsm_tsk bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
236 ercd = frsm_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
237 CYG_TEST_CHECK( E_NOEXS == ercd, "frsm_tsk bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
238 ercd = wup_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
239 CYG_TEST_CHECK( E_NOEXS == ercd, "wup_tsk bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
240 ercd = can_wup( &scratch, 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
241 CYG_TEST_CHECK( E_NOEXS == ercd, "can_wup bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
242 ercd = ref_tsk( &t_rtsk, 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
243 CYG_TEST_CHECK( E_NOEXS == ercd, "ref_tsk bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
244 CYG_TEST_CHECK( 3 == intercount, "bad intercount !3" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
245 ercd = del_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
246 CYG_TEST_CHECK( E_NOEXS == ercd, "del_tsk bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
247 #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
248 // now try creating it (badly)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
249 #ifndef CYGSEM_UITRON_PARAMS_NULL_IS_GOOD_PTR
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
250 ercd = cre_tsk( 2, NULL );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
251 CYG_TEST_CHECK( E_PAR == ercd, "cre_tsk bad ercd !E_PAR" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
252 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
253 ercd = cre_tsk( 2, NADR );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
254 CYG_TEST_CHECK( E_PAR == ercd, "cre_tsk bad ercd !E_PAR" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
255 t_ctsk.stksz = 0x40000000;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
256 ercd = cre_tsk( 2, &t_ctsk );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
257 CYG_TEST_CHECK( E_NOMEM == ercd, "cre_tsk bad ercd !E_NOMEM" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
258 t_ctsk.stksz = CYGNUM_UITRON_STACK_SIZE;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
259 CYG_TEST_CHECK( 3 == intercount, "bad intercount !3" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
260 #endif // we can test bad param error returns
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
261
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
262 ercd = del_tsk( 3 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
263 CYG_TEST_CHECK( E_OK == ercd, "del_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
264 t_ctsk.task = (FP)&task4;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
265 t_ctsk.itskpri = 9;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
266 ercd = cre_tsk( 3, &t_ctsk );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
267 CYG_TEST_CHECK( E_OK == ercd, "cre_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
268 // check we can delete it again immediately
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
269 ercd = del_tsk( 3 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
270 CYG_TEST_CHECK( E_OK == ercd, "del_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
271 ercd = ref_tsk( &t_rtsk, 3 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
272 CYG_TEST_CHECK( E_NOEXS == ercd, "ref_tsk bad ercd !E_NOEXS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
273 t_ctsk.task = (FP)&newtask;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
274 t_ctsk.itskpri = 1;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
275 ercd = cre_tsk( 3, &t_ctsk );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
276 CYG_TEST_CHECK( E_OK == ercd, "cre_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
277 CYG_TEST_CHECK( 3 == intercount, "bad intercount !3" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
278 ercd = sta_tsk( 3, 999 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
279 CYG_TEST_CHECK( E_OK == ercd, "cre_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
280 // it should have run now, and exited
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
281 CYG_TEST_CHECK( 5 == intercount, "bad intercount !5" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
282 ercd = wai_sem( 1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
283 CYG_TEST_CHECK( E_OK == ercd, "wai_sem bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
284 // and check that it will just run again...
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
285 ercd = sta_tsk( 3, 999 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
286 CYG_TEST_CHECK( E_OK == ercd, "cre_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
287 // it should have run now, and exited
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
288 CYG_TEST_CHECK( 7 == intercount, "bad intercount !7" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
289 ercd = wai_sem( 1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
290 CYG_TEST_CHECK( E_OK == ercd, "wai_sem bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
291 // all done.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
292
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
293 CYG_TEST_PASS("create/delete tasks");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
294
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
295 // all done
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
296 CYG_TEST_EXIT( "All done" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
297 #else // ! CYGPKG_UITRON_TASKS_CREATE_DELETE
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
298 CYG_TEST_NA( "Tasks do not have create/delete enabled" );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
299 #endif // ! CYGPKG_UITRON_TASKS_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
300 ext_tsk();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
301 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
302
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
303
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
304
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
305 void newtask( unsigned int arg )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
306 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
307 ER ercd;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
308 int i;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
309 CYG_TEST_INFO( "Newtask running" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
310 CYG_TEST_CHECK( 999 == arg, "Bad arg to newtask() !999" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
311 ercd = get_tid( &i );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
312 CYG_TEST_CHECK( E_OK == ercd, "get_tid bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
313 CYG_TEST_CHECK( 3 == i, "tid not 3" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
314 intercount++;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
315 ercd = sig_sem( 1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
316 CYG_TEST_CHECK( E_OK == ercd, "sig_sem bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
317 intercount++;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
318 // and just return
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
319 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
320
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
321 void task2( unsigned int arg )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
322 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
323 ER ercd;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
324 int i;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
325 CYG_TEST_INFO( "Task 2 running" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
326 ercd = get_tid( &i );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
327 CYG_TEST_CHECK( E_OK == ercd, "get_tid bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
328 CYG_TEST_CHECK( 2 == i, "tid not 2" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
329 if ( 22222 != arg )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
330 CYG_TEST_FAIL( "Task 2 arg not 22222" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
331
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
332 intercount++;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
333
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
334 ercd = slp_tsk();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
335 CYG_TEST_CHECK( E_OK == ercd, "slp_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
336
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
337 intercount++;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
338
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
339 exd_tsk(); // if we are not killed first
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
340
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
341 intercount++; // shouldn't happen
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
342 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
343
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
344 void task3( unsigned int arg )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
345 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
346 CYG_TEST_FAIL( "How come I'm being run?" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
347 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
348
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
349 void task4( unsigned int arg )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
350 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
351 CYG_TEST_FAIL( "How come I'm being run?" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
352 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
353
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
354 #else // not enough (or too many) uITRON objects configured in
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
355 #define N_A_MSG "not enough uITRON objects to run test"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
356 #endif // not enough (or too many) uITRON objects configured in
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
357 #else // not C++ and some C++ specific options enabled
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
358 #define N_A_MSG "C++ specific options selected but this is C"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
359 #endif // not C++ and some C++ specific options enabled
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
360 #else // ! CYGVAR_KERNEL_COUNTERS_CLOCK - can't test without it
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
361 #define N_A_MSG "no CYGVAR_KERNEL_COUNTERS_CLOCK"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
362 #endif // ! CYGVAR_KERNEL_COUNTERS_CLOCK - can't test without it
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
363 #else // ! CYGFUN_KERNEL_THREADS_TIMER - can't test without it
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
364 #define N_A_MSG "no CYGFUN_KERNEL_THREADS_TIMER"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
365 #endif // ! CYGFUN_KERNEL_THREADS_TIMER - can't test without it
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
366 #else // ! CYGIMP_THREAD_PRIORITY - can't test without it
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
367 #define N_A_MSG "no CYGSEM_KERNEL_SCHED_MLQUEUE"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
368 #endif // ! CYGSEM_KERNEL_SCHED_MLQUEUE - can't test without it
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
369 #else // ! CYGPKG_UITRON
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
370 #define N_A_MSG "uITRON Compatibility layer disabled"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
371 #endif // CYGPKG_UITRON
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
372
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
373 #ifdef N_A_MSG
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
374 void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
375 cyg_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
376 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
377 CYG_TEST_INIT();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
378 CYG_TEST_NA( N_A_MSG );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
379 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
380 #endif // N_A_MSG defined ie. we are N/A.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
381
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
382 // EOF test8.c