annotate packages/compat/uitron/current/tests/testcx7.cxx @ 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 d3fbcdfa1b2f
children bf00f99aec69
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 // testcx7.cxx
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 seven
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####
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 10
diff changeset
9 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 10
diff changeset
10 // -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 10
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: 10
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: 10
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: 10
diff changeset
14 // http://sourceware.cygnus.com/ecos
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 10
diff changeset
15 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 10
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: 10
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: 10
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: 10
diff changeset
19 // the License.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 10
diff changeset
20 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 10
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: 10
diff changeset
22 // released September 30, 1998.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 10
diff changeset
23 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 10
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: 10
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: 10
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: 10
diff changeset
27 // All Rights Reserved.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 10
diff changeset
28 // -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 10
diff changeset
29 //
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
30 //####COPYRIGHTEND####
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 //#####DESCRIPTIONBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
33 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
34 // Author(s): hmt
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
35 // Contributors: hmt
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
36 // Date: 1998-10-14
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
37 // Purpose: uITRON API testing
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
38 // Description:
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 //####DESCRIPTIONEND####
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 //===========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
43
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
44 #include <pkgconf/uitron.h> // uITRON setup CYGNUM_UITRON_SEMAS
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
45 // CYGPKG_UITRON et al
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
46 #include <cyg/infra/testcase.h> // testing infrastructure
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 CYGPKG_UITRON // we DO want the uITRON package
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 CYGSEM_KERNEL_SCHED_MLQUEUE // we DO want prioritized threads
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 CYGFUN_KERNEL_THREADS_TIMER // we DO want timout-able calls
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 #ifdef CYGVAR_KERNEL_COUNTERS_CLOCK // we DO want the realtime clock
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
55
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
56 // 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
57 #if defined( __cplusplus ) || \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
58 (!defined( CYGIMP_UITRON_INLINE_FUNCS ) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
59 !defined( CYGIMP_UITRON_CPP_OUTLINE_FUNCS) )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
60
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
61 // =================== TEST CONFIGURATION ===================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
62 #if \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
63 /* test configuration for enough tasks */ \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
64 (CYGNUM_UITRON_TASKS >= 4) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
65 (CYGNUM_UITRON_TASKS < 90) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
66 (CYGNUM_UITRON_START_TASKS == 1) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
67 ( !defined(CYGPKG_UITRON_TASKS_CREATE_DELETE) || \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
68 CYGNUM_UITRON_TASKS_INITIALLY >= 4 ) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
69 \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
70 /* test configuration for enough semaphores */ \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
71 defined( CYGPKG_UITRON_SEMAS ) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
72 (CYGNUM_UITRON_SEMAS >= 3) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
73 (CYGNUM_UITRON_SEMAS < 90) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
74 ( !defined(CYGPKG_UITRON_SEMAS_CREATE_DELETE) || \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
75 CYGNUM_UITRON_SEMAS_INITIALLY >= 3 ) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
76 \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
77 /* test configuration for enough flag objects */ \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
78 defined( CYGPKG_UITRON_FLAGS ) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
79 (CYGNUM_UITRON_FLAGS >= 3) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
80 (CYGNUM_UITRON_FLAGS < 90) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
81 ( !defined(CYGPKG_UITRON_FLAGS_CREATE_DELETE) || \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
82 CYGNUM_UITRON_FLAGS_INITIALLY >= 3 ) && \
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 /* test configuration for enough message boxes */ \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
85 defined( CYGPKG_UITRON_MBOXES ) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
86 (CYGNUM_UITRON_MBOXES >= 3) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
87 (CYGNUM_UITRON_MBOXES < 90) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
88 ( !defined(CYGPKG_UITRON_MBOXES_CREATE_DELETE) || \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
89 CYGNUM_UITRON_MBOXES_INITIALLY >= 3 ) && \
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 /* test configuration for enough fixed memory pools */ \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
92 defined( CYGPKG_UITRON_MEMPOOLFIXED ) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
93 (CYGNUM_UITRON_MEMPOOLFIXED >= 3) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
94 (CYGNUM_UITRON_MEMPOOLFIXED < 90) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
95 ( !defined(CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE) || \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
96 CYGNUM_UITRON_MEMPOOLFIXED_INITIALLY >= 3 ) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
97 \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
98 /* test configuration for enough variable mempools */ \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
99 defined( CYGPKG_UITRON_MEMPOOLVAR ) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
100 (CYGNUM_UITRON_MEMPOOLVAR >= 3) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
101 (CYGNUM_UITRON_MEMPOOLVAR < 90) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
102 ( !defined(CYGPKG_UITRON_MEMPOOLVAR_CREATE_DELETE) || \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
103 CYGNUM_UITRON_MEMPOOLVAR_INITIALLY >= 3 ) && \
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 /* the end of the large #if statement */ \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
106 1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
107
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
108 // ============================ END ============================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
109
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
110 #include <cyg/kernel/test/stackmon.h> // stack analysis tools
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
111
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
112 #include <cyg/compat/uitron/uit_func.h> // uITRON
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
113
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
114 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
115 cyg_package_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
116 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
117 CYG_TEST_INIT();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
118 CYG_TEST_INFO( "Calling cyg_uitron_start()" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
119 cyg_uitron_start();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
120 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
121
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
122
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
123 extern "C" {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
124 void task1( unsigned int arg );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
125 void task2( unsigned int arg );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
126 void task3( unsigned int arg );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
127 void task4( unsigned int arg );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
128 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
129
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
130 // ========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
131
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
132 enum {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
133 START_WAITOP = 0,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
134 SLEEP = 0,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
135 DELAY,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
136 SEMGET,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
137 FLAGWAIT,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
138 MSGGET,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
139 MEMFIXEDGET,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
140 MEMVARGET,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
141 DONE_WAITOP
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
142 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
143 typedef int WAITOP;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
144
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
145 enum {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
146 START_TYPE = 0,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
147 PLAIN = 0,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
148 TIMED = 1,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
149 DONE_TYPE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
150 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
151 typedef int WAITTYPE;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
152
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
153 enum {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
154 START_KILLOP = 0,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
155
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
156 // These are the 5 ways out of a wait that we perm
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
157 // with other circumstances:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
158 SIGNAL = 0, // do the appropriate producer op
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
159 TIMEOUT, // wait for the timeout to fire
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
160 RELEASE, // do a rel_wai()
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
161 DELETE, // delete the object; del_xxx()
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
162 KILL, // do a ter_tsk() on the waiter
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
163
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
164 SUSPEND_SIGNAL_RESUME,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
165 SUSPEND_TIMEOUT_RESUME,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
166 SUSPEND_RELEASE_RESUME,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
167 SUSPEND_DELETE_RESUME,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
168 SUSPEND_KILL, // resume not applicable
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
169
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
170 SUSPEND_SIGNAL_KILL,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
171 SUSPEND_TIMEOUT_KILL,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
172 SUSPEND_RELEASE_KILL,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
173 SUSPEND_DELETE_KILL,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
174 // SUSPEND_KILL_KILL not applicable
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
175
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
176 #if 0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
177 // support these later if _really_ keen.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
178 SUSPEND_SIGNAL_DELETE_RESUME,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
179 SUSPEND_TIMEOUT_DELETE_RESUME,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
180 SUSPEND_RELEASE_DELETE_RESUME,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
181 // SUSPEND_DELETE_DELETE_RESUME not applicable
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
182 // SUSPEND_KILL_DELETE_RESUME not applicable
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
183
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
184 SUSPEND_SIGNAL_DELETE_KILL,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
185 SUSPEND_TIMEOUT_DELETE_KILL,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
186 SUSPEND_RELEASE_DELETE_KILL,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
187 // SUSPEND_DELETE_DELETE_KILL,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
188 SUSPEND_KILL_DELETE // 2nd kill not applicable
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
189 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
190
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
191 DONE_KILLOP
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
192 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
193 typedef int KILLOP;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
194
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
195 // ========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
196
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
197 char * waitstrings[] =
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
198 { "Sleep ", "Delay ", "Sema ", "Flag ", "Mbox ", "MemFix", "MemVar" };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
199
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
200 char * typestrings[] =
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
201 { " (Plain) : ", " (Timed) : " };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
202
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
203 char * killstrings[] =
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
204 { "Signal",
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
205 "Wait-for-timeout",
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
206 "Release-wait",
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
207 "Delete-object",
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
208 "Kill-task",
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
209
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
210 "Suspend/Signal/Resume",
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
211 "Suspend/Wait-for-timeout/Resume",
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
212 "Suspend/Release-wait/Resume",
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
213 "Suspend/Delete-object/Resume",
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
214 "Suspend/Kill-task",
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
215
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
216 "Suspend/Signal/Kill-task",
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
217 "Suspend/Wait-for-timeout/Kill-task",
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
218 "Suspend/Release-wait/Kill-task",
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
219 "Suspend/Delete-object/Kill-task",
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
220
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
221
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
222 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
223
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
224 // ========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
225
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
226 inline int task2arg( WAITOP wait, WAITTYPE waittype, KILLOP kill )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
227 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
228 return waittype + (wait << 1) + (kill << 8);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
229 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
230
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
231 inline void decodearg( int arg, WAITOP *pwait, WAITTYPE *pwaittype, KILLOP *pkill )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
232 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
233 *pwaittype = (arg & 1) ? TIMED : PLAIN;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
234 *pwait = (arg >> 1) & 0x7f;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
235 *pkill = (arg >> 8);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
236 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
237
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
238 static char *strdog( char *p, char *q )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
239 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
240 while ( 0 != (*p++ = *q++) );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
241 return p - 1;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
242 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
243
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
244 static char *
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
245 makemsg( char *z, WAITOP wait, WAITTYPE waittype, KILLOP kill )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
246 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
247 static char buf[ 1000 ];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
248 char *p = buf;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
249 p = strdog( p, z );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
250 p = strdog( p, waitstrings[ wait ] );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
251 p = strdog( p, typestrings[ waittype ] );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
252 p = strdog( p, killstrings[ kill ] );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
253 *p = 0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
254 return buf;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
255 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
256
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
257 // ========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
258
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
259 volatile int intercom = 0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
260
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
263 T_RTSK rtsk;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
264
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
265 void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
266 do_suspend( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
267 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
268 ER ercd;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
269 ercd = ref_tsk( &rtsk, 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
270 CYG_TEST_CHECK( E_OK == ercd, "ref_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
271 CYG_TEST_CHECK( TTS_WAI == rtsk.tskstat, "bad tskstat !TTS_WAI" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
272 ercd = sus_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
273 CYG_TEST_CHECK( E_OK == ercd, "sus_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
274 ercd = ref_tsk( &rtsk, 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
275 CYG_TEST_CHECK( E_OK == ercd, "ref_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
276 CYG_TEST_CHECK( TTS_WAS == rtsk.tskstat, "bad tskstat !TTS_WAS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
277 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
278
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
279 void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
280 do_resume( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
281 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
282 ER ercd;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
283 ercd = ref_tsk( &rtsk, 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
284 CYG_TEST_CHECK( E_OK == ercd, "ref_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
285 CYG_TEST_CHECK( TTS_SUS == rtsk.tskstat, "bad tskstat !TTS_SUS" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
286 ercd = dis_dsp();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
287 CYG_TEST_CHECK( E_OK == ercd, "dis_dsp bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
288 ercd = rsm_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
289 CYG_TEST_CHECK( E_OK == ercd, "rsm_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
290 ercd = ref_tsk( &rtsk, 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
291 CYG_TEST_CHECK( E_OK == ercd, "ref_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
292 CYG_TEST_CHECK( TTS_RDY == rtsk.tskstat, "bad tskstat !TTS_RDY" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
293 ercd = ena_dsp();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
294 CYG_TEST_CHECK( E_OK == ercd, "ena_dsp bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
295 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
296
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
297 // ========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
298
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
299 #define T1_WAIT (7)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
300 #define T2_WAIT (5)
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 #define T1_MALLOC (110)
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
303 #ifdef CYGSEM_KERNEL_MEMORY_COALESCE
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
304 #define T2_MALLOC (100)
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
305 #else
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
306 #define T2_MALLOC T1_MALLOC
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
307 #endif
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
308
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
309 VP vptmp;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
310 VP vp = NULL;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
311 VP vp1 = NULL;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
312 VP t2vp = NULL;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
313 VP t2vp_backup = NULL;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
314
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
315 UINT scratch;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
316
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
317 T_MSG *msg = (T_MSG *)&scratch;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
318 T_MSG *msg1;
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 void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
321 do_prep( WAITOP wait )
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 switch ( wait ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
325 case SLEEP:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
326 case DELAY:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
327 case SEMGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
328 case FLAGWAIT:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
329 case MSGGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
330 // do nothing for all of those
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
331 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
332 case MEMFIXEDGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
333 // allocate all the memory in the pool; remember a couple
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
334 // for freeing as the signalling operation:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
335 t2vp = NULL;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
336 vp = vptmp = NULL;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
337 do {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
338 vp1 = vptmp;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
339 vptmp = vp;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
340 ercd = pget_blf( &vp, 1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
341 } while ( E_OK == ercd );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
342 CYG_TEST_CHECK( E_TMOUT == ercd, "get_blf bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
343 CYG_TEST_CHECK( NULL != vp, "no allocated block to free" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
344 CYG_TEST_CHECK( NULL != vp1, "no allocated block to free1" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
345 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
346 case MEMVARGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
347 // allocate all the memory in the pool; remember a couple
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
348 // for freeing as the signalling operation:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
349 t2vp = NULL;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
350 vp = vptmp = NULL;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
351 do {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
352 vp1 = vptmp;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
353 vptmp = vp;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
354 ercd = pget_blk( &vp, 1, T1_MALLOC );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
355 } while ( E_OK == ercd );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
356 CYG_TEST_CHECK( E_TMOUT == ercd, "get_blk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
357 CYG_TEST_CHECK( NULL != vp, "no allocated block to free" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
358 CYG_TEST_CHECK( NULL != vp1, "no allocated block to free1" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
359 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
360 default:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
361 CYG_TEST_FAIL( "bad switch" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
362 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
363 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
364 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
365
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
366 void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
367 do_tidyup( WAITOP wait )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
368 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
369 ER ercd;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
370 switch ( wait ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
371 case SLEEP:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
372 case DELAY:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
373 case SEMGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
374 case MSGGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
375 // do nothing for all of those
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
376 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
377 case FLAGWAIT:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
378 // clear the flag variable
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
379 ercd = clr_flg( 1, 0 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
380 CYG_TEST_CHECK( E_OK == ercd, "clr_flg bad ercd, tidy vp" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
381 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
382 case MEMFIXEDGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
383 if ( NULL != vp ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
384 ercd = rel_blf( 1, vp );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
385 CYG_TEST_CHECK( E_OK == ercd, "rel_blf bad ercd, tidy vp" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
386 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
387 if ( NULL != vp1 ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
388 ercd = rel_blf( 1, vp1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
389 CYG_TEST_CHECK( E_OK == ercd, "rel_blf bad ercd, tidy vp1" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
390 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
391 if ( NULL != t2vp ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
392 ercd = rel_blf( 1, t2vp );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
393 CYG_TEST_CHECK( E_OK == ercd, "rel_blf bad ercd, tidy t2vp" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
394 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
395 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
396 case MEMVARGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
397 if ( NULL != vp ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
398 ercd = rel_blk( 1, vp );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
399 CYG_TEST_CHECK( E_OK == ercd, "rel_blk bad ercd, tidy vp" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
400 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
401 if ( NULL != vp1 ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
402 ercd = rel_blk( 1, vp1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
403 CYG_TEST_CHECK( E_OK == ercd, "rel_blk bad ercd, tidy vp1" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
404 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
405 if ( NULL != t2vp ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
406 ercd = rel_blk( 1, t2vp );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
407 CYG_TEST_CHECK( E_OK == ercd, "rel_blk bad ercd, tidy t2vp" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
408 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
409 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
410 default:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
411 CYG_TEST_FAIL( "bad switch" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
412 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
413 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
414 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
415
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
416 void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
417 do_recreate( WAITOP wait )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
418 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
419 #ifdef CYGPKG_UITRON_SEMAS_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
420 static T_CSEM t_csem = { NULL, 0, 0 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
421 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
422 #ifdef CYGPKG_UITRON_MBOXES_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
423 static T_CMBX t_cmbx = { NULL, 0 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
424 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
425 #ifdef CYGPKG_UITRON_FLAGS_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
426 static T_CFLG t_cflg = { NULL, 0, 0 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
427 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
428 #ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
429 static T_CMPF t_cmpf = { NULL, 0, 20, 95 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
430 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
431 #ifdef CYGPKG_UITRON_MEMPOOLVAR_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
432 static T_CMPL t_cmpl = { NULL, 0, 2000 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
433 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
434 ER ercd = E_OK;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
435 switch ( wait ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
436 case SLEEP:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
437 case DELAY:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
438 // do nothing for all of those
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
439 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
440 case SEMGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
441 #ifdef CYGPKG_UITRON_SEMAS_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
442 // create the semaphore
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
443 ercd = cre_sem( 1, &t_csem );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
444 CYG_TEST_CHECK( E_OK == ercd, "cre_sem bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
445 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
446 CYG_TEST_FAIL( "bad call to do_recreate SEMGET" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
447 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
448 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
449 case FLAGWAIT:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
450 #ifdef CYGPKG_UITRON_FLAGS_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
451 // create the flag
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
452 ercd = cre_flg( 1, &t_cflg );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
453 CYG_TEST_CHECK( E_OK == ercd, "cre_sem bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
454 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
455 CYG_TEST_FAIL( "bad call to do_recreate FLAGWAIT" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
456 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
457 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
458 case MSGGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
459 #ifdef CYGPKG_UITRON_MBOXES_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
460 // create the mbox
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
461 ercd = cre_mbx( 1, &t_cmbx );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
462 CYG_TEST_CHECK( E_OK == ercd, "cre_sem bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
463 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
464 CYG_TEST_FAIL( "bad call to do_recreate MSGGET" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
465 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
466 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
467 case MEMFIXEDGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
468 #ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
469 // create the mempool
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
470 ercd = cre_mpf( 1, &t_cmpf );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
471 CYG_TEST_CHECK( E_OK == ercd, "cre_sem bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
472 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
473 CYG_TEST_FAIL( "bad call to do_recreate MEMFIXEDGET" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
474 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
475 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
476 case MEMVARGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
477 #ifdef CYGPKG_UITRON_MEMPOOLVAR_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
478 // create the mempool
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
479 ercd = cre_mpl( 1, &t_cmpl );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
480 CYG_TEST_CHECK( E_OK == ercd, "cre_sem bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
481 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
482 CYG_TEST_FAIL( "bad call to do_recreate MEMVARGET" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
483 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
484 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
485 default:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
486 CYG_TEST_FAIL( "bad switch" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
487 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
488 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
489 // this is just to use ercd to prevent warnings
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
490 CYG_TEST_CHECK( E_OK == ercd, "<blank> bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
491 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
492
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
493
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
494
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
495 void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
496 do_signal( WAITOP wait )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
497 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
498 ER ercd;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
499 switch ( wait ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
500 case SLEEP:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
501 // send a wakeup
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
502 ercd = wup_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
503 CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
504 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
505 case DELAY:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
506 // simply wait for task 2's delay to complete
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
507 ercd = dly_tsk( T1_WAIT );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
508 CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
509 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
510 case SEMGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
511 // signal the semaphore
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
512 ercd = sig_sem( 1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
513 CYG_TEST_CHECK( E_OK == ercd, "sig_sem bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
514 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
515 case FLAGWAIT:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
516 // set the flag bits
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
517 ercd = set_flg( 1, 0xff );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
518 CYG_TEST_CHECK( E_OK == ercd, "set_flg bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
519 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
520 case MSGGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
521 // send a message
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
522 ercd = snd_msg( 1, msg );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
523 CYG_TEST_CHECK( E_OK == ercd, "snd_msg bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
524 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
525 case MEMFIXEDGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
526 // release a couple of blocks we allocated earlier. I hope.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
527 CYG_TEST_CHECK( NULL != vp, "no allocated block to free" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
528 CYG_TEST_CHECK( NULL != vp1, "no allocated block to free1" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
529 ercd = rel_blf( 1, vp );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
530 CYG_TEST_CHECK( E_OK == ercd, "rel_blf bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
531 vp = NULL;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
532 ercd = rel_blf( 1, vp1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
533 CYG_TEST_CHECK( E_OK == ercd, "rel_blf bad ercd1" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
534 vp1 = NULL;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
535 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
536 case MEMVARGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
537 // release a couple of blocks we allocated earlier. I hope.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
538 CYG_TEST_CHECK( NULL != vp, "no allocated block to free" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
539 CYG_TEST_CHECK( NULL != vp1, "no allocated block to free1" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
540 ercd = rel_blk( 1, vp );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
541 CYG_TEST_CHECK( E_OK == ercd, "rel_blk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
542 vp = NULL;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
543 ercd = rel_blk( 1, vp1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
544 CYG_TEST_CHECK( E_OK == ercd, "rel_blk bad ercd1" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
545 vp1 = NULL;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
546 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
547 default:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
548 CYG_TEST_FAIL( "bad switch" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
549 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
550 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
551 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
552
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
553 void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
554 do_delete( WAITOP wait )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
555 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
556 ER ercd = E_OK;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
557 switch ( wait ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
558 case SLEEP:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
559 case DELAY:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
560 CYG_TEST_FAIL( "bad call to do_delete( SLEEP or DELAY )" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
561 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
562 case SEMGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
563 #ifdef CYGPKG_UITRON_SEMAS_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
564 // delete the semaphore
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
565 ercd = del_sem( 1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
566 CYG_TEST_CHECK( E_OK == ercd, "del_sem bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
567 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
568 CYG_TEST_FAIL( "bad call to do_delete( SEMGET )" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
569 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
570 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
571 case FLAGWAIT:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
572 #ifdef CYGPKG_UITRON_FLAGS_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
573 // delete the flag
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
574 ercd = del_flg( 1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
575 CYG_TEST_CHECK( E_OK == ercd, "del_flg bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
576 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
577 CYG_TEST_FAIL( "bad call to do_delete( FLAGWAIT )" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
578 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
579 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
580 case MSGGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
581 #ifdef CYGPKG_UITRON_MBOXES_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
582 // delete the mbox
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
583 ercd = del_mbx( 1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
584 CYG_TEST_CHECK( E_OK == ercd, "del_mbx bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
585 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
586 CYG_TEST_FAIL( "bad call to do_delete( MSGGET )" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
587 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
588 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
589 case MEMFIXEDGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
590 #ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
591 // delete the mempool
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
592 ercd = del_mpf( 1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
593 CYG_TEST_CHECK( E_OK == ercd, "del_mpf bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
594 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
595 CYG_TEST_FAIL( "bad call to do_delete( MEMFIXEDGET )" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
596 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
597 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
598 case MEMVARGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
599 #ifdef CYGPKG_UITRON_MEMPOOLVAR_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
600 // delete the mempool
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
601 ercd = del_mpl( 1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
602 CYG_TEST_CHECK( E_OK == ercd, "del_mpl bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
603 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
604 CYG_TEST_FAIL( "bad call to do_delete( MEMVARGET )" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
605 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
606 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
607 default:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
608 CYG_TEST_FAIL( "bad switch" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
609 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
610 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
611 // this is just to use ercd to prevent warnings
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
612 CYG_TEST_CHECK( E_OK == ercd, "<blank> bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
613 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
614
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
615
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
616
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
617 ER
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
618 do_wait( WAITOP wait, WAITTYPE type )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
619 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
620 switch ( wait ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
621 case SLEEP:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
622 return ( PLAIN == type ) ? slp_tsk() : tslp_tsk( T2_WAIT );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
623 case DELAY:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
624 return dly_tsk( T2_WAIT ); // forget the type
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
625 case SEMGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
626 return ( PLAIN == type ) ? wai_sem( 1 ) : twai_sem( 1, T2_WAIT );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
627 case FLAGWAIT:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
628 return ( PLAIN == type ) ?
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
629 wai_flg( &scratch, 1, 0x55, TWF_ANDW ) :
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
630 twai_flg( &scratch, 1, 0xaa, TWF_ANDW, T2_WAIT );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
631 case MSGGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
632 return ( PLAIN == type ) ?
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
633 rcv_msg( &msg1, 1 ) :
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
634 trcv_msg( &msg1, 1, T2_WAIT );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
635 case MEMFIXEDGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
636 return ( PLAIN == type ) ?
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
637 get_blf( &t2vp, 1 ) :
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
638 tget_blf( &t2vp, 1, T2_WAIT );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
639 case MEMVARGET:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
640 return ( PLAIN == type ) ?
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
641 get_blk( &t2vp, 1, T2_MALLOC ) :
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
642 tget_blk( &t2vp, 1, T2_MALLOC, T2_WAIT );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
643 default:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
644 CYG_TEST_FAIL( "bad switch" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
645 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
646 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
647 CYG_TEST_FAIL( "Bad wait in do_wait" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
648 return E_SYS;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
649 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
650
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
651 void
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
652 check_waitstate( WAITOP wait, int waiting )
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
653 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
654 ER ercd;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
655 int waity = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
656 switch ( wait ) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
657 case SLEEP:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
658 case DELAY:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
659 return; // do nothing for these
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
660 case SEMGET: {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
661 T_RSEM rsem;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
662 ercd = ref_sem( &rsem, 1 );
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
663 waity = rsem.wtsk;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
664 break;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
665 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
666 case FLAGWAIT: {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
667 T_RFLG rflg;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
668 ercd = ref_flg( &rflg, 1 );
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
669 waity = rflg.wtsk;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
670 break;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
671 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
672 case MSGGET: {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
673 T_RMBX rmbx;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
674 ercd = ref_mbx( &rmbx, 1 );
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
675 waity = rmbx.wtsk;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
676 break;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
677 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
678 case MEMFIXEDGET: {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
679 T_RMPF rmpf;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
680 ercd = ref_mpf( &rmpf, 1 );
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
681 waity = rmpf.wtsk;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
682 break;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
683 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
684 case MEMVARGET: {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
685 T_RMPL rmpl;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
686 ercd = ref_mpl( &rmpl, 1 );
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
687 waity = rmpl.wtsk;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
688 break;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
689 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
690 default:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
691 CYG_TEST_FAIL( "bad switch" );
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
692 break;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
693 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
694 if ( waiting )
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
695 CYG_TEST_CHECK( waity, "Object has no task waiting!" );
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
696 else
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
697 CYG_TEST_CHECK( !waity, "Object had a task waiting!" );
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
698 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
699
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
700 // ========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
701 void task1( unsigned int arg )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
702 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
703 ER ercd;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
704 WAITOP wait;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
705 WAITTYPE type;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
706 KILLOP kill;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
707
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
708 CYG_TEST_INFO( "Task 1 running" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
709
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
710 {
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
711 extern Cyg_Thread cyg_uitron_TASKS[];
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
712 cyg_test_dump_thread_stack_stats(
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
713 "Startup, task1", &cyg_uitron_TASKS[ 0 ] );
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
714 cyg_test_dump_thread_stack_stats(
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
715 "Startup, task2", &cyg_uitron_TASKS[ 1 ] );
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
716 cyg_test_dump_interrupt_stack_stats( "Startup" );
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
717 cyg_test_dump_idlethread_stack_stats( "Startup" );
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
718 cyg_test_clear_interrupt_stack();
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
719 }
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
720
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
721 ercd = chg_pri( 1, 8 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
722 CYG_TEST_CHECK( E_OK == ercd, "chg_pri bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
723
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
724 for ( wait = START_WAITOP; wait < DONE_WAITOP ; wait++) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
725 for ( type = START_TYPE; type < DONE_TYPE ; type++ ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
726 for ( kill = START_KILLOP; kill < DONE_KILLOP ; kill++ ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
727
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
728 // These clauses deal with a couple of special cases:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
729 // [doing it this way helps keep the rest of the code
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
730 // nicely general and orthogonal]
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
731 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
732 // 1) DELAY: dly_tsk(): when this times out, the retcode is
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
733 // E_OK rather than E_TMOUT, and it always times out. The
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
734 // "signalling" method here is just to wait yourself. So we
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
735 // do not test DELAY with TIMED type.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
736 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
737 // 2) PLAIN tests with TIMEOUT kill operations: a PLAIN test
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
738 // will not time out, it'll wait forever, so waiting for it
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
739 // so to do is pointless; further, we would check for the
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
740 // wrong error code. So we do not test PLAIN tests with
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
741 // TIMOUT kill operations.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
742 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
743 // 3) SLEEP or DELAY tests with DELETE operations: there is
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
744 // no synchronization to delete in those cases.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
745 // 3a) Individual object types are tested for delete support,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
746 // and if there is none, the test is skipped.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
747
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
748 if ( DELAY == wait && TIMED == type )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
749 continue;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
750
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
751 if ( PLAIN == type &&
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
752 ( ( TIMEOUT == kill) ||
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
753 (SUSPEND_TIMEOUT_RESUME == kill) ||
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
754 (SUSPEND_TIMEOUT_KILL == kill) ) )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
755 continue;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
756
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
757 if ( (
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
758 #ifndef CYGPKG_UITRON_SEMAS_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
759 (SEMGET == wait) ||
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
760 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
761 #ifndef CYGPKG_UITRON_FLAGS_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
762 (FLAGWAIT == wait) ||
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
763 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
764 #ifndef CYGPKG_UITRON_MBOXES_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
765 (MSGGET == wait) ||
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
766 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
767 #ifndef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
768 (MEMFIXEDGET == wait) ||
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
769 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
770 #ifndef CYGPKG_UITRON_MEMPOOLVAR_CREATE_DELETE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
771 (MEMVARGET == wait) ||
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
772 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
773 (SLEEP == wait) ||
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
774 (DELAY == wait)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
775 ) &&
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
776 ((DELETE == kill) ||
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
777 (SUSPEND_DELETE_RESUME == kill) ||
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
778 (SUSPEND_DELETE_KILL == kill)) )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
779 continue;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
780
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
781
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
782 CYG_TEST_INFO( makemsg( "T1: ", wait, type, kill ) );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
783
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
784 intercom = 0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
785
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
786 // prepare the synchronization objects
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
787 // (actually, just empty the mempools)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
788 do_prep( wait );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
789
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
790 // start task 2 at a higher priority than myself
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
791 ercd = dis_dsp();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
792 CYG_TEST_CHECK( E_OK == ercd, "dis_dsp bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
793 ercd = sta_tsk( 2, task2arg( wait, type, kill ) );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
794 CYG_TEST_CHECK( E_OK == ercd, "sta_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
795 ercd = chg_pri( 2, 5 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
796 CYG_TEST_CHECK( E_OK == ercd, "chg_pri bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
797 ercd = ena_dsp();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
798 CYG_TEST_CHECK( E_OK == ercd, "ena_dsp bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
799 // task 2 should run now, until it waits.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
800
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
801 ercd = ref_tsk( &rtsk, 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
802 CYG_TEST_CHECK( E_OK == ercd, "ref_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
803 CYG_TEST_CHECK( TTS_WAI == rtsk.tskstat, "bad tskstat" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
804 CYG_TEST_CHECK( 5 == rtsk.tskpri, "bad tskpri" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
805
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
806 switch ( kill ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
807 case SIGNAL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
808 // signal the task appropriately
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
809 do_signal( wait );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
810 // it should now have run to completion
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
811 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
812 case TIMEOUT:
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
813 check_waitstate( wait, 1 );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
814 // wait for the timeout to occur
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
815 ercd = dly_tsk( T1_WAIT );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
816 CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" );
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
817 check_waitstate( wait, 0 );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
818 // it should now have run to completion
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
819 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
820 case RELEASE:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
821 // hit the task with a release-wait
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
822 ercd = rel_wai( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
823 CYG_TEST_CHECK( E_OK == ercd, "rel_wai bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
824 // it should now have run to completion
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
825 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
826 case DELETE:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
827 // delete the object appropriately
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
828 do_delete( wait );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
829 // it should now have run to completion
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
830 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
831 case KILL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
832 // kill the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
833 ercd = ter_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
834 CYG_TEST_CHECK( E_OK == ercd, "ter_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
835 // it should now have terminated without running
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
836 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
837 case SUSPEND_SIGNAL_RESUME:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
838 // suspend the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
839 do_suspend();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
840 // signal the task appropriately
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
841 do_signal( wait );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
842 // resume the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
843 do_resume();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
844 // it should now have run to completion
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
845 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
846 case SUSPEND_TIMEOUT_RESUME:
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
847 check_waitstate( wait, 1 );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
848 // suspend the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
849 do_suspend();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
850 check_waitstate( wait, 1 );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
851 // wait for the timeout to occur
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
852 ercd = dly_tsk( T1_WAIT );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
853 CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" );
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
854 check_waitstate( wait, 0 );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
855 // resume the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
856 do_resume();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
857 // it should now have run to completion
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
858 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
859 case SUSPEND_RELEASE_RESUME:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
860 // suspend the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
861 do_suspend();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
862 // hit the task with a release-wait
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
863 ercd = rel_wai( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
864 CYG_TEST_CHECK( E_OK == ercd, "rel_wai bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
865 // resume the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
866 do_resume();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
867 // it should now have run to completion
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
868 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
869 case SUSPEND_DELETE_RESUME:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
870 // suspend the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
871 do_suspend();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
872 // delete the object appropriately
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
873 do_delete( wait );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
874 // resume the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
875 do_resume();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
876 // it should now have run to completion
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
877 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
878 case SUSPEND_KILL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
879 // suspend the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
880 do_suspend();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
881 // kill the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
882 ercd = ter_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
883 CYG_TEST_CHECK( E_OK == ercd, "ter_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
884 // it should now have terminated without running
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
885 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
886 case SUSPEND_SIGNAL_KILL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
887 // suspend the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
888 do_suspend();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
889 // signal the task appropriately
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
890 do_signal( wait );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
891 // kill the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
892 ercd = ter_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
893 CYG_TEST_CHECK( E_OK == ercd, "ter_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
894 // it should now have terminated without running
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
895 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
896 case SUSPEND_TIMEOUT_KILL:
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
897 check_waitstate( wait, 1 );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
898 // suspend the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
899 do_suspend();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
900 check_waitstate( wait, 1 );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
901 // wait for the timeout to occur
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
902 ercd = dly_tsk( T1_WAIT );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
903 CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" );
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
904 check_waitstate( wait, 0 );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
905 // kill the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
906 ercd = ter_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
907 CYG_TEST_CHECK( E_OK == ercd, "ter_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
908 // it should now have terminated without running
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
909 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
910 case SUSPEND_RELEASE_KILL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
911 // suspend the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
912 do_suspend();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
913 // hit the task with a release-wait
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
914 ercd = rel_wai( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
915 CYG_TEST_CHECK( E_OK == ercd, "rel_wai bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
916 // kill the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
917 ercd = ter_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
918 CYG_TEST_CHECK( E_OK == ercd, "ter_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
919 // it should now have terminated without running
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
920 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
921 case SUSPEND_DELETE_KILL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
922 // suspend the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
923 do_suspend();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
924 // delete the object appropriately
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
925 do_delete( wait );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
926 // kill the task
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
927 ercd = ter_tsk( 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
928 CYG_TEST_CHECK( E_OK == ercd, "ter_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
929 // it should now have terminated without running
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
930 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
931 default:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
932 CYG_TEST_FAIL( "bad switch" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
933 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
934 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
935
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
936 // task 2 should be dormant now, however it got there
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
937 ercd = ref_tsk( &rtsk, 2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
938 CYG_TEST_CHECK( E_OK == ercd, "ref_tsk bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
939 CYG_TEST_CHECK( TTS_DMT == rtsk.tskstat, "bad tskstat" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
940
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
941 if ( (SUSPEND_SIGNAL_KILL == kill) &&
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
942 ((MEMFIXEDGET == wait) || (MEMVARGET == wait)) ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
943 // it was a killed successful memory alloc, so we have
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
944 // lost the pointer to memory allocated; there is an
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
945 // implicit storeleak problem when the task trying
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
946 // to allocate is signalled then killed.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
947 // Recreate the pointer from an old version:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
948 CYG_TEST_CHECK( NULL == t2vp, "t2vp WAS allocated!" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
949 t2vp = t2vp_backup;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
950 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
951
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
952 switch ( kill ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
953 case KILL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
954 case SUSPEND_KILL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
955 case SUSPEND_SIGNAL_KILL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
956 case SUSPEND_TIMEOUT_KILL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
957 case SUSPEND_RELEASE_KILL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
958 case SUSPEND_DELETE_KILL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
959 // if task 2 was killed, expect only one increment
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
960 CYG_TEST_CHECK( 1 == intercom, "intercom bad value !1" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
961 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
962 default:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
963 // otherwise expect two increments
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
964 CYG_TEST_CHECK( 2 == intercom, "intercom bad value !2" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
965 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
966 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
967
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
968 // tidy up or recreate the synchronization objects
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
969 if ( (DELETE == kill) ||
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
970 (SUSPEND_DELETE_RESUME == kill) ||
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
971 (SUSPEND_DELETE_KILL == kill) )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
972 do_recreate( wait );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
973 else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
974 do_tidyup( wait );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
975 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
976 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
977 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
978 CYG_TEST_PASS("synchronization interaction tests");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
979
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
980 {
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
981 extern Cyg_Thread cyg_uitron_TASKS[];
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
982 cyg_test_dump_thread_stack_stats(
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
983 "All done, task1", &cyg_uitron_TASKS[ 0 ] );
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
984 cyg_test_dump_thread_stack_stats(
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
985 "All done, task2", &cyg_uitron_TASKS[ 1 ] );
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
986 cyg_test_dump_interrupt_stack_stats( "All done" );
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
987 cyg_test_dump_idlethread_stack_stats( "All done" );
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
988 }
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
989 // all done
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
990 CYG_TEST_EXIT( "All done" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
991 ext_tsk();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
992 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
993
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
994
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
995
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
996 void task2( unsigned int arg )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
997 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
998 ER ercd;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
999 WAITOP wait;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1000 WAITTYPE waittype;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1001 KILLOP kill;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1002
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1003 decodearg( arg, &wait, &waittype, &kill );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1004
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1005 // CYG_TEST_INFO( makemsg( " 2: ", wait, waittype, kill ) );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1006
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1007 intercom++;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1008 ercd = do_wait( wait, waittype );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1009 intercom++;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1010
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1011 switch ( kill ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1012 case SIGNAL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1013 case SUSPEND_SIGNAL_RESUME:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1014 // we expect to have been signalled correctly
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1015 CYG_TEST_CHECK( E_OK == ercd, "T2 wait bad ercd" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1016 // here we know that the op completed OK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1017 if ( (MEMFIXEDGET == wait) || (MEMVARGET == wait) ) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1018 // it was a successful memory alloc of whichever type,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1019 // so we can save away a copy of t2vp for working round an
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1020 // implicit storeleak problem when the task trying to allocate
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1021 // is signalled then killed:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1022 CYG_TEST_CHECK( NULL != t2vp, "No t2vp allocated!" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1023 t2vp_backup = t2vp;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1024 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1025 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1026 case TIMEOUT:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1027 case SUSPEND_TIMEOUT_RESUME:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1028 // we expect to have timed out - if it's a timeout op.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1029 CYG_TEST_CHECK( E_TMOUT == ercd, "T2 timeout bad ercd, !E_TMOUT" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1030 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1031 case RELEASE:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1032 case SUSPEND_RELEASE_RESUME:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1033 // we expect to have suffered a release wait.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1034 CYG_TEST_CHECK( E_RLWAI == ercd, "T2 release bad ercd, !E_RLWAI" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1035 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1036 case DELETE:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1037 case SUSPEND_DELETE_RESUME:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1038 // we expect to be told the object is gone
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1039 CYG_TEST_CHECK( E_DLT == ercd, "T2 release bad ercd, !E_DLT" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1040 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1041 case KILL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1042 case SUSPEND_KILL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1043 case SUSPEND_SIGNAL_KILL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1044 case SUSPEND_TIMEOUT_KILL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1045 case SUSPEND_RELEASE_KILL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1046 case SUSPEND_DELETE_KILL:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1047 // we expect to have been killed here, ie. this won't execute!
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1048 CYG_TEST_FAIL( "Task 2 ran to completion!" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1049 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1050 default:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1051 CYG_TEST_FAIL( "bad switch" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1052 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1053 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1054 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1055
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1056 void task3( unsigned int arg )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1057 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1058 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1059
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1060 void task4( unsigned int arg )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1061 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1062 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1063
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1064 #else // not enough (or too many) uITRON objects configured in
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1065 #define N_A_MSG "not enough uITRON objects to run test"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1066 #endif // not enough (or too many) uITRON objects configured in
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1067 #else // not C++ and some C++ specific options enabled
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1068 #define N_A_MSG "C++ specific options selected but this is C"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1069 #endif // not C++ and some C++ specific options enabled
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1070 #else // ! CYGVAR_KERNEL_COUNTERS_CLOCK - can't test without it
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1071 #define N_A_MSG "no CYGVAR_KERNEL_COUNTERS_CLOCK"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1072 #endif // ! CYGVAR_KERNEL_COUNTERS_CLOCK - can't test without it
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1073 #else // ! CYGFUN_KERNEL_THREADS_TIMER - can't test without it
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1074 #define N_A_MSG "no CYGFUN_KERNEL_THREADS_TIMER"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1075 #endif // ! CYGFUN_KERNEL_THREADS_TIMER - can't test without it
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1076 #else // ! CYGIMP_THREAD_PRIORITY - can't test without it
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1077 #define N_A_MSG "no CYGSEM_KERNEL_SCHED_MLQUEUE"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1078 #endif // ! CYGSEM_KERNEL_SCHED_MLQUEUE - can't test without it
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1079 #else // ! CYGPKG_UITRON
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1080 #define N_A_MSG "uITRON Compatibility layer disabled"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1081 #endif // CYGPKG_UITRON
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1082
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1083 #ifdef N_A_MSG
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1084 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1085 cyg_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1086 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1087 CYG_TEST_INIT();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
1088 CYG_TEST_NA( N_A_MSG );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1089 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1090 #endif // N_A_MSG defined ie. we are N/A.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1091
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1092 // EOF testcx7.cxx