annotate packages/compat/uitron/current/tests/testintr.cxx @ 88:afdeb44241de ecos-sw-2000-05-12

Merge from eCos master repository on 2000-05-12-07:47:04-BST
author jlarmour
date Fri, 12 May 2000 17:53:32 +0000
parents 489eb5632bc3
children ac086aa3217e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
1 //===========================================================================
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
2 //
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
3 // testintr.c
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
4 //
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
5 // uITRON "C" test program for ixxx_yyy interrupt safe operators
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
6 //
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
7 //===========================================================================
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
8 //####COPYRIGHTBEGIN####
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
9 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
10 // -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
11 // The contents of this file are subject to the Red Hat eCos Public License
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
12 // Version 1.1 (the "License"); you may not use this file except in
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
13 // compliance with the License. You may obtain a copy of the License at
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
14 // http://www.redhat.com/
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
15 //
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
16 // Software distributed under the License is distributed on an "AS IS"
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
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: 34
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: 34
diff changeset
19 // the License.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
20 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
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: 34
diff changeset
22 // released September 30, 1998.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
23 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
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: 34
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: 34
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: 34
diff changeset
27 // All Rights Reserved.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
28 // -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
29 //
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
30 //####COPYRIGHTEND####
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
31 //===========================================================================
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
32 //#####DESCRIPTIONBEGIN####
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
33 //
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
34 // Author(s): hmt
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
35 // Contributors:hmt
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
36 // Date: 1998-08-20
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
37 // Purpose: uITRON API testing
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
38 // Description:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
39 //
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
40 //####DESCRIPTIONEND####
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
41 //
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
42 //===========================================================================
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
43
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
44 #include <pkgconf/uitron.h> // uITRON setup CYGNUM_UITRON_SEMAS
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
45 // CYGPKG_UITRON et al
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
46 #include <cyg/infra/testcase.h> // testing infrastructure
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
47
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
48 #ifdef CYGPKG_UITRON // we DO want the uITRON package
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
49
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
50 #ifdef CYGSEM_KERNEL_SCHED_MLQUEUE // we DO want prioritized threads
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
51
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
52 #ifdef CYGFUN_KERNEL_THREADS_TIMER // we DO want timout-able calls
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
53
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
54 #ifdef CYGVAR_KERNEL_COUNTERS_CLOCK // we DO want the realtime clock
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
55
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
56 // we're OK if it's C++ or neither of those two is defined:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
57 #if defined( __cplusplus ) || \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
58 (!defined( CYGIMP_UITRON_INLINE_FUNCS ) && \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
59 !defined( CYGIMP_UITRON_CPP_OUTLINE_FUNCS) )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
60
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
61 // =================== TEST CONFIGURATION ===================
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
62 #if \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
63 /* test configuration for enough tasks */ \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
64 (CYGNUM_UITRON_TASKS >= 4) && \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
65 (CYGNUM_UITRON_TASKS < 90) && \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
66 (CYGNUM_UITRON_START_TASKS == 1) && \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
67 ( !defined(CYGPKG_UITRON_TASKS_CREATE_DELETE) || \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
68 CYGNUM_UITRON_TASKS_INITIALLY >= 4 ) && \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
69 \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
70 /* the end of the large #if statement */ \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
71 1
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
72
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
73 // ============================ END ============================
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
74
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
75 #include <cyg/hal/hal_arch.h>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
76 #include <cyg/hal/hal_intr.h>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
77
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
78 #include <cyg/infra/diag.h>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
79
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
80 #include <cyg/compat/uitron/uit_func.h> // uITRON
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
81 #include <cyg/compat/uitron/uit_ifnc.h> // uITRON interrupt funcs
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
82
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
83 void set_interrupt_number( void );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
84
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
85 unsigned int clock_interrupt = 0;
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
86
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
87 externC void
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
88 cyg_package_start( void )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
89 {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
90 CYG_TEST_INIT();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
91 CYG_TEST_INFO( "Calling cyg_uitron_start()" );
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
92 set_interrupt_number();
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
93 cyg_uitron_start();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
94 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
95
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
96 extern "C" {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
97 void task1( unsigned int arg );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
98 void task2( unsigned int arg );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
99 void task3( unsigned int arg );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
100 void task4( unsigned int arg );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
101 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
102
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
103 volatile int intercom = 0;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
104 INT scratch = 0;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
105
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
106 // Plan: replace (by direct intervention) the ISR and DSR of the regular
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
107 // timer interrupt; be sure to ack the clock intr using the appropriate hal
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
108 // macros.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
109 //
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
110 // The new ISR(s) will simply use the interrupt-safe signalling functions
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
111 // to control a 2nd task. Main task will check on the state thereof.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
112 //
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
113 // We must test the ixxx_yyy() funcs with the scheduler already locked
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
114 // also, by direct sched calls on the KAPI. This must verify that the
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
115 // signal only happens when the scheduler unlocks.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
116 //
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
117 // The 4 producer ops are:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
118 // iwup_tsk ( ID tskid );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
119 // isig_sem ( ID semid );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
120 // iset_flg ( ID flgid, UINT setptn );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
121 // isnd_msg ( ID mbxid, T_MSG *pk_msg );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
122 //
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
123 // and return macros are:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
124 // ret_wup( ID tskid );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
125 // ret_int();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
126 //
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
127 // These ISRs perform the producer ops on all available objects in turn.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
128 // Tasks 2-4
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
129 // Semas 1-4
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
130 // Flags 1-4 with marching bit data; they'll all be set to 0x1ff eventually
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
131 // Mboxes 1-4 with an arbitrary pointer
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
132
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
133 enum {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
134 NOTHING = 0,
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
135 SLP,
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
136 SEM,
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
137 FLG,
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
138 MBX,
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
139 EXIT
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
140 };
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
141
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
142 #define ACK_CLOCK() CYG_MACRO_START \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
143 HAL_CLOCK_RESET( CYGNUM_HAL_INTERRUPT_RTC, \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
144 CYGNUM_KERNEL_COUNTERS_RTC_PERIOD ); \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
145 HAL_INTERRUPT_ACKNOWLEDGE( CYGNUM_HAL_INTERRUPT_RTC ); \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
146 CYG_MACRO_END
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
147
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
148 #define CHECK_TID() CYG_MACRO_START \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
149 int my_tid; \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
150 ER ercd; \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
151 ercd = get_tid( &my_tid ); \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
152 CYG_TEST_CHECK( E_OK == ercd, "get_tid bad ercd" ); \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
153 CYG_TEST_CHECK( 0 == my_tid, "tid not 0 in ISR" ); \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
154 CYG_MACRO_END
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
155
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
156
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
157 unsigned int
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
158 isr_wup_tsk( unsigned int vector, unsigned int data )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
159 {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
160 // Hit TASKS in range 2..4
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
161 static int wtid = 2;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
162 ACK_CLOCK();
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
163 CHECK_TID();
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
164 iwup_tsk( wtid );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
165 wtid++;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
166 if ( 5 == wtid ) wtid = 2;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
167 ret_int();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
168 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
169
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
170 unsigned int
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
171 isr_ret_wup( unsigned int vector, unsigned int data )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
172 {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
173 // Hit TASKS in range 2..4
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
174 static int rwid = 2;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
175 ACK_CLOCK();
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
176 CHECK_TID();
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
177 rwid++;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
178 if ( 6 == rwid ) rwid = 3;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
179 ret_wup( rwid - 1 );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
180 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
181
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
182 unsigned int
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
183 isr_sig_sem( unsigned int vector, unsigned int data )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
184 {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
185 // Hit SEMAS in range 1..3
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
186 static int ssid = 1;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
187 ACK_CLOCK();
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
188 CHECK_TID();
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
189 isig_sem( ssid );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
190 ssid++;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
191 if ( ssid == 4 ) ssid = 1;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
192 ret_int();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
193 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
194
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
195 unsigned int
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
196 isr_set_flg( unsigned int vector, unsigned int data )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
197 {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
198 // Hit FLAGS in range 1..4
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
199 static int sfid = 1;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
200 static int sfdata = 0xff;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
201 ACK_CLOCK();
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
202 CHECK_TID();
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
203 iset_flg( sfid, sfdata );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
204 sfid++;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
205 if ( sfid == 5 ) sfid = 1;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
206 // sfdata <<= 1;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
207 // if ( sfdata == 0x20 ) sfdata = 1; // so that eventually all 0x1f set
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
208 ret_int();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
209 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
210
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
211 unsigned int
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
212 isr_snd_msg( unsigned int vector, unsigned int data )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
213 {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
214 // Hit MBOXES in range 1..4
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
215 static int smid = 1;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
216 ACK_CLOCK();
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
217 CHECK_TID();
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
218 isnd_msg( smid, (T_MSG *)&smid );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
219 smid++;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
220 if ( smid == 5 ) smid = 1;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
221 ret_int();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
222 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
223
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
224
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
225 void attach_isr( unsigned int (*isr)(unsigned int, unsigned int) );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
226 void detach_isr( unsigned int (*isr)(unsigned int, unsigned int) );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
227
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
228 void lock_sched( void );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
229 void unlock_sched( void );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
230
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
231 volatile int count = -1;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
232
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
233 /*
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
234 #define BIGDELAY 50000000
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
235 #define SMALLDELAY (BIGDELAY/SMALLLOOPS)
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
236 #define SMALLLOOPS 3
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
237
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
238 #define xxxLONGDELAY() \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
239 do { \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
240 int i; \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
241 for ( i = 0; i < BIGDELAY; i++ ) \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
242 if ( wakeups[ 4 ] > prewups[ 4 ] + 99 ) break; \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
243 } while ( 0 )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
244
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
245 #define xxxDELAYLOCKSCHED() \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
246 do { \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
247 int i,j; \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
248 for ( j = 0; j < SMALLLOOPS; j++ ) { \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
249 lock_sched(); \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
250 for ( i = 0; i < SMALLDELAY; i++ ) \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
251 if ( wakeups[ 4 ] > prewups[ 4 ] + 99 ) break; \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
252 unlock_sched(); \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
253 if ( wakeups[ 4 ] > prewups[ 4 ] + 99 ) break; \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
254 } \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
255 } while ( 0 )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
256 */
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
257
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
258 #define SMALLDELAYHW (5000000)
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
259 #define EVENTSHW ( 20)
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
260 #define SMALLDELAYSIM ( 100000)
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
261 #define EVENTSSIM ( 4)
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
262
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
263 #define SMALLDELAY (smalldelay)
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
264 #define EVENTS (events)
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
265
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
266 static int smalldelay = SMALLDELAYHW;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
267 static int events = EVENTSHW;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
268
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
269 #define LONGDELAY() do { \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
270 count = 0; \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
271 do count++; while ( wakeups[ 4 ] < prewups[ 4 ] + EVENTS ); \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
272 } while ( 0 )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
273
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
274
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
275 #define DELAYLOCKSCHED() \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
276 do { \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
277 count = 0; \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
278 int i; \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
279 do { \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
280 lock_sched(); \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
281 for ( i = 0; i < SMALLDELAY; i++ ) { \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
282 count++; \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
283 if ( wakeups[ 4 ] >= prewups[ 4 ] + EVENTS ) \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
284 break; \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
285 } \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
286 unlock_sched(); \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
287 CYG_TEST_INFO(" [Still iterating, please wait....] "); \
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
288 } while ( wakeups[ 4 ] < prewups[ 4 ] + EVENTS ); \
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
289 } while ( 0 )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
290
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
291 #define DELAY() \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
292 if ( 1 & loops ) \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
293 DELAYLOCKSCHED(); \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
294 else \
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
295 LONGDELAY();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
296
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
297
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
298 volatile int wakeups[ 5 ] = { 0,0,0,0,0 };
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
299 volatile int prewups[ 5 ] = { 0,0,0,0,0 };
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
300
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
301
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
302 void task1( unsigned int arg )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
303 {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
304 ER ercd;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
305 int loops;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
306
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
307 CYG_TEST_INFO( "Task 1 running" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
308
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
309 if ( cyg_test_is_simulator ) {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
310 // take less time
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
311 events = EVENTSSIM;
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
312 // Don't output messages more frequently on synthetic target. It's
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
313 // much faster than sims and will cause massive amounts of output.
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
314 #ifndef CYGPKG_HAL_I386_LINUX
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
315 smalldelay = SMALLDELAYSIM;
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
316 #endif
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
317 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
318
84
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
319
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
320 // First test that dis_int() and ena_int() work for the clock interrupt
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
321 #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
322 ercd = ena_int( 123456789 ); // Hope this is large enough to error
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
323 CYG_TEST_CHECK( E_PAR == ercd, "ena_int bad ercd !E_PAR" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
324 ercd = dis_int( 123456789 );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
325 CYG_TEST_CHECK( E_PAR == ercd, "dis_int bad ercd !E_PAR" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
326 #endif
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
327
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
328 // This may take too long on a sim...
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
329 if ( ! cyg_test_is_simulator ) {
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
330 SYSTIME t1, t2;
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
331
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
332 CYG_TEST_INFO( "Testing masking of clock interrupt" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
333
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
334 ercd = get_tim( &t1 );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
335 CYG_TEST_CHECK( E_OK == ercd, "get_tim bad ercd" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
336
78
59d97b6ba612 Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents: 76
diff changeset
337 // Wait for a tick. This loop acts as a synchronizer for the loop
59d97b6ba612 Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents: 76
diff changeset
338 // below, ensuring that it starts just after a tick.
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
339 for ( loops = 0; loops < 10000000; loops++ ) {
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
340 ercd = get_tim( &t2 );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
341 CYG_TEST_CHECK( E_OK == ercd, "get_tim bad ercd" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
342 if ( t2 != t1 )
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
343 break;
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
344 }
78
59d97b6ba612 Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents: 76
diff changeset
345 // Wait for next tick. Reset loops counter so we get the
59d97b6ba612 Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents: 76
diff changeset
346 // approximate loop count of one clock tick.
59d97b6ba612 Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents: 76
diff changeset
347 for ( loops = 0; loops < 10000000; loops++ ) {
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
348 ercd = get_tim( &t1 );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
349 CYG_TEST_CHECK( E_OK == ercd, "get_tim bad ercd" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
350 if ( t2 != t1 )
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
351 break;
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
352 }
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
353
78
59d97b6ba612 Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents: 76
diff changeset
354 // save how many loops could be executed in one tick. Multiply
59d97b6ba612 Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents: 76
diff changeset
355 // with 3 : we run loops in pairs below and add the time of
59d97b6ba612 Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents: 76
diff changeset
356 // one extra to avoid small variations to trigger failures.
59d97b6ba612 Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents: 76
diff changeset
357 intercom = loops * 3;
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
358
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
359 ercd = ena_int( clock_interrupt ); // was initialized already
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
360 CYG_TEST_CHECK( E_OK == ercd, "ena_int bad ercd" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
361
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
362 ercd = get_tim( &t1 );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
363 CYG_TEST_CHECK( E_OK == ercd, "get_tim bad ercd" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
364
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
365 // Wait for a tick
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
366 for ( loops = intercom; loops > 0; loops-- ) {
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
367 ercd = get_tim( &t2 );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
368 CYG_TEST_CHECK( E_OK == ercd, "get_tim bad ercd" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
369 if ( t2 != t1 )
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
370 break;
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
371 }
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
372 CYG_TEST_CHECK( 0 < loops, "No first tick" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
373 // and a second one
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
374 for ( ; loops > 0; loops-- ) {
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
375 ercd = get_tim( &t1 );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
376 CYG_TEST_CHECK( E_OK == ercd, "get_tim bad ercd" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
377 if ( t2 != t1 )
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
378 break;
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
379 }
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
380 CYG_TEST_CHECK( 0 < loops, "No second tick" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
381
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
382 // The PowerPC cannot disable the timer interrupt (separately).
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
383 #ifndef CYGPKG_HAL_POWERPC
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
384 ercd = dis_int( clock_interrupt ); // was initialized already
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
385 CYG_TEST_CHECK( E_OK == ercd, "dis_int bad ercd" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
386
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
387 ercd = get_tim( &t1 );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
388 CYG_TEST_CHECK( E_OK == ercd, "get_tim bad ercd" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
389
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
390 // Wait for a tick (should not happen)
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
391 for ( loops = intercom; loops > 0; loops-- ) {
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
392 ercd = get_tim( &t2 );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
393 CYG_TEST_CHECK( E_OK == ercd, "get_tim bad ercd" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
394 if ( t2 != t1 )
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
395 break;
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
396 }
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
397 CYG_TEST_CHECK( 0 == loops, "A tick occured - should be masked" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
398 CYG_TEST_CHECK( t1 == t2, "Times are different" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
399
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
400 // Now enable it again and ensure all is well:
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
401 ercd = ena_int( clock_interrupt );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
402 CYG_TEST_CHECK( E_OK == ercd, "ena_int bad ercd" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
403 #endif
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
404
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
405 ercd = get_tim( &t1 );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
406 CYG_TEST_CHECK( E_OK == ercd, "get_tim bad ercd" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
407
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
408 // Wait for a tick
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
409 for ( loops = intercom; loops > 0; loops-- ) {
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
410 ercd = get_tim( &t2 );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
411 CYG_TEST_CHECK( E_OK == ercd, "get_tim bad ercd" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
412 if ( t2 != t1 )
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
413 break;
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
414 }
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
415 CYG_TEST_CHECK( 0 < loops, "No first tick" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
416 // and a second one
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
417 for ( ; loops > 0; loops-- ) {
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
418 ercd = get_tim( &t1 );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
419 CYG_TEST_CHECK( E_OK == ercd, "get_tim bad ercd" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
420 if ( t2 != t1 )
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
421 break;
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
422 }
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
423 CYG_TEST_CHECK( 0 < loops, "No second tick" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
424
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
425 CYG_TEST_PASS( "dis_int(), ena_int() OK" );
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
426 }
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
427
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
428 intercom = 0;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
429
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
430 ercd = get_tid( &scratch );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
431 CYG_TEST_CHECK( E_OK == ercd, "get_tid bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
432 CYG_TEST_CHECK( 1 == scratch, "tid not 1" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
433
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
434 // start all other tasks (our prio is 1 by default)
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
435 ercd = sta_tsk( 2, 222 );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
436 CYG_TEST_CHECK( E_OK == ercd, "sta_tsk 2 bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
437 ercd = sta_tsk( 3, 333 );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
438 CYG_TEST_CHECK( E_OK == ercd, "sta_tsk 3 bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
439 ercd = sta_tsk( 4, 444 );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
440 CYG_TEST_CHECK( E_OK == ercd, "sta_tsk 4 bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
441 // drop pri of other tasks all to 5
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
442 ercd = chg_pri( 2, 5 );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
443 CYG_TEST_CHECK( E_OK == ercd, "chg_pri 2 bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
444 ercd = chg_pri( 3, 5 );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
445 CYG_TEST_CHECK( E_OK == ercd, "chg_pri 3 bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
446 ercd = chg_pri( 4, 5 );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
447 CYG_TEST_CHECK( E_OK == ercd, "chg_pri 4 bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
448
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
449 // Test sleep/wakeup
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
450 intercom = SLP;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
451 // Drop our prio to lower; they will run in turn until asleep
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
452 ercd = chg_pri( 1, 6 );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
453 CYG_TEST_CHECK( E_OK == ercd, "chg_pri 1 (self) bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
454
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
455 loops = 4;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
456 do {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
457
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
458 if ( 1 & loops )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
459 CYG_TEST_INFO( " (toggling scheduler lock) " );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
460 else
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
461 CYG_TEST_INFO( " (unlocked scheduler) " );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
462
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
463
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
464 CYG_TEST_CHECK( 0 == wakeups[0], "init: Wakeups[0] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
465 CYG_TEST_CHECK( 0 == wakeups[1], "init: Wakeups[1] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
466 CYG_TEST_CHECK( prewups[2] == wakeups[2], "init: Wakeups[2] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
467 CYG_TEST_CHECK( prewups[3] == wakeups[3], "init: Wakeups[3] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
468 CYG_TEST_CHECK( prewups[4] == wakeups[4], "init: Wakeups[4] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
469
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
470 // -------- TIMERS AND TIMESLICING DISABLED ---------
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
471 // install an isr that will wake them all up in turn
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
472 attach_isr( isr_wup_tsk );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
473 DELAY();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
474 detach_isr( isr_wup_tsk );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
475 // -------- timers and timeslicing ENABLED ---------
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
476
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
477 CYG_TEST_CHECK( 0 == wakeups[0], "iwup_tsk: Wakeups[0] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
478 CYG_TEST_CHECK( 0 == wakeups[1], "iwup_tsk: Wakeups[1] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
479 CYG_TEST_CHECK( prewups[2] < wakeups[2], "iwup_tsk: Wakeups[2] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
480 CYG_TEST_CHECK( prewups[3] < wakeups[3], "iwup_tsk: Wakeups[3] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
481 CYG_TEST_CHECK( prewups[4] < wakeups[4], "iwup_tsk: Wakeups[4] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
482 diag_printf( "INFO:<(fg loops %10d) thread wakeups : %2d %2d %2d >\n", count,
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
483 wakeups[2] - prewups[2],
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
484 wakeups[3] - prewups[3],
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
485 wakeups[4] - prewups[4] );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
486 prewups[2] = wakeups[2];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
487 prewups[3] = wakeups[3];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
488 prewups[4] = wakeups[4];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
489
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
490 // -------- TIMERS AND TIMESLICING DISABLED ---------
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
491 // install an isr that will wake them all up in turn
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
492 attach_isr( isr_ret_wup );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
493 DELAY();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
494 detach_isr( isr_ret_wup );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
495 // -------- timers and timeslicing ENABLED ---------
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
496
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
497 CYG_TEST_CHECK( 0 == wakeups[0], "ret_wup: Wakeups[0] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
498 CYG_TEST_CHECK( 0 == wakeups[1], "ret_wup: Wakeups[1] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
499 CYG_TEST_CHECK( prewups[2] < wakeups[2], "ret_wup: Wakeups[2] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
500 CYG_TEST_CHECK( prewups[3] < wakeups[3], "ret_wup: Wakeups[3] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
501 CYG_TEST_CHECK( prewups[4] < wakeups[4], "ret_wup: Wakeups[4] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
502 diag_printf( "INFO:<(fg loops %10d) thread ret_wups: %2d %2d %2d >\n", count,
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
503 wakeups[2] - prewups[2],
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
504 wakeups[3] - prewups[3],
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
505 wakeups[4] - prewups[4] );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
506 prewups[2] = wakeups[2];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
507 prewups[3] = wakeups[3];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
508 prewups[4] = wakeups[4];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
509
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
510 // move them on to waiting for a semaphore
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
511 intercom = SEM;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
512 ercd = wup_tsk( 2 );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
513 CYG_TEST_CHECK( E_OK == ercd, "wup_tsk(2) bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
514 ercd = wup_tsk( 3 );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
515 CYG_TEST_CHECK( E_OK == ercd, "wup_tsk(3) bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
516 ercd = wup_tsk( 4 );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
517 CYG_TEST_CHECK( E_OK == ercd, "wup_tsk(4) bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
518
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
519 CYG_TEST_CHECK( 0 == wakeups[0], "wup_tsk: Wakeups[0] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
520 CYG_TEST_CHECK( 0 == wakeups[1], "wup_tsk: Wakeups[1] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
521 CYG_TEST_CHECK( prewups[2] + 1 == wakeups[2], "wup_tsk: Wakeups[2] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
522 CYG_TEST_CHECK( prewups[3] + 1 == wakeups[3], "wup_tsk: Wakeups[3] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
523 CYG_TEST_CHECK( prewups[4] + 1 == wakeups[4], "wup_tsk: Wakeups[4] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
524 prewups[2] = wakeups[2];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
525 prewups[3] = wakeups[3];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
526 prewups[4] = wakeups[4];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
527
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
528 // -------- TIMERS AND TIMESLICING DISABLED ---------
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
529 // install an isr that will wake them all up in turn
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
530 attach_isr( isr_sig_sem );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
531 DELAY();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
532 detach_isr( isr_sig_sem );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
533 // -------- timers and timeslicing ENABLED ---------
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
534
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
535 CYG_TEST_CHECK( 0 == wakeups[0], "isig_sem: Wakeups[0] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
536 CYG_TEST_CHECK( 0 == wakeups[1], "isig_sem: Wakeups[1] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
537 CYG_TEST_CHECK( prewups[2] < wakeups[2], "isig_sem: Wakeups[2] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
538 CYG_TEST_CHECK( prewups[3] < wakeups[3], "isig_sem: Wakeups[3] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
539 CYG_TEST_CHECK( prewups[4] < wakeups[4], "isig_sem: Wakeups[4] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
540 diag_printf( "INFO:<(fg loops %10d) semaphore waits: %2d %2d %2d >\n", count,
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
541 wakeups[2] - prewups[2],
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
542 wakeups[3] - prewups[3],
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
543 wakeups[4] - prewups[4] );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
544 prewups[2] = wakeups[2];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
545 prewups[3] = wakeups[3];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
546 prewups[4] = wakeups[4];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
547
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
548 // move them on to waiting for a flag
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
549 intercom = FLG;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
550 ercd = sig_sem( 1 );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
551 CYG_TEST_CHECK( E_OK == ercd, "sig_sem(1) bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
552 ercd = sig_sem( 2 );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
553 CYG_TEST_CHECK( E_OK == ercd, "sig_sem(2) bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
554 ercd = sig_sem( 3 );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
555 CYG_TEST_CHECK( E_OK == ercd, "sig_sem(3) bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
556
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
557 CYG_TEST_CHECK( 0 == wakeups[0], "sig_sem: Wakeups[0] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
558 CYG_TEST_CHECK( 0 == wakeups[1], "sig_sem: Wakeups[1] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
559 CYG_TEST_CHECK( prewups[2] + 1 == wakeups[2], "sig_sem: Wakeups[2] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
560 CYG_TEST_CHECK( prewups[3] + 1 == wakeups[3], "sig_sem: Wakeups[3] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
561 CYG_TEST_CHECK( prewups[4] + 1 == wakeups[4], "sig_sem: Wakeups[4] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
562 prewups[2] = wakeups[2];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
563 prewups[3] = wakeups[3];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
564 prewups[4] = wakeups[4];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
565
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
566 // -------- TIMERS AND TIMESLICING DISABLED ---------
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
567 // install an isr that will wake them all up in turn
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
568 attach_isr( isr_set_flg );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
569 DELAY();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
570 detach_isr( isr_set_flg );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
571 // -------- timers and timeslicing ENABLED ---------
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
572
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
573 CYG_TEST_CHECK( 0 == wakeups[0], "iset_flg: Wakeups[0] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
574 CYG_TEST_CHECK( 0 == wakeups[1], "iset_flg: Wakeups[1] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
575 CYG_TEST_CHECK( prewups[2] < wakeups[2], "iset_flg: Wakeups[2] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
576 CYG_TEST_CHECK( prewups[3] < wakeups[3], "iset_flg: Wakeups[3] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
577 CYG_TEST_CHECK( prewups[4] < wakeups[4], "iset_flg: Wakeups[4] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
578 diag_printf( "INFO:<(fg loops %10d) flag waits/sets: %2d %2d %2d >\n", count,
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
579 wakeups[2] - prewups[2],
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
580 wakeups[3] - prewups[3],
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
581 wakeups[4] - prewups[4] );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
582 prewups[2] = wakeups[2];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
583 prewups[3] = wakeups[3];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
584 prewups[4] = wakeups[4];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
585
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
586 // move them on to waiting for a message box
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
587 intercom = MBX;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
588 ercd = set_flg( 2, 0xfff );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
589 CYG_TEST_CHECK( E_OK == ercd, "set_flg(2) bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
590 ercd = set_flg( 3, 0xfff );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
591 CYG_TEST_CHECK( E_OK == ercd, "set_flg(3) bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
592 ercd = set_flg( 4, 0xfff );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
593 CYG_TEST_CHECK( E_OK == ercd, "set_flg(4) bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
594
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
595 CYG_TEST_CHECK( 0 == wakeups[0], "set_flg: Wakeups[0] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
596 CYG_TEST_CHECK( 0 == wakeups[1], "set_flg: Wakeups[1] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
597 CYG_TEST_CHECK( prewups[2] + 1 == wakeups[2], "set_flg: Wakeups[2] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
598 CYG_TEST_CHECK( prewups[3] + 1 == wakeups[3], "set_flg: Wakeups[3] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
599 CYG_TEST_CHECK( prewups[4] + 1 == wakeups[4], "set_flg: Wakeups[4] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
600 prewups[2] = wakeups[2];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
601 prewups[3] = wakeups[3];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
602 prewups[4] = wakeups[4];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
603
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
604 // -------- TIMERS AND TIMESLICING DISABLED ---------
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
605 // install an isr that will wake them all up in turn
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
606 attach_isr( isr_snd_msg );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
607 DELAY();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
608 detach_isr( isr_snd_msg );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
609 // -------- timers and timeslicing ENABLED ---------
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
610
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
611 CYG_TEST_CHECK( 0 == wakeups[0], "isnd_msg: Wakeups[0] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
612 CYG_TEST_CHECK( 0 == wakeups[1], "isnd_msg: Wakeups[1] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
613 CYG_TEST_CHECK( prewups[2] < wakeups[2], "isnd_msg: Wakeups[2] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
614 CYG_TEST_CHECK( prewups[3] < wakeups[3], "isnd_msg: Wakeups[3] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
615 CYG_TEST_CHECK( prewups[4] < wakeups[4], "isnd_msg: Wakeups[4] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
616 diag_printf( "INFO:<(fg loops %10d) message rec'pts: %2d %2d %2d >\n", count,
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
617 wakeups[2] - prewups[2],
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
618 wakeups[3] - prewups[3],
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
619 wakeups[4] - prewups[4] );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
620 prewups[2] = wakeups[2];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
621 prewups[3] = wakeups[3];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
622 prewups[4] = wakeups[4];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
623
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
624 // move them on to exiting, all done
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
625 if ( 1 == loops )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
626 // then we are about to exit
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
627 intercom = EXIT;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
628 else
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
629 intercom = SLP;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
630 ercd = snd_msg( 2, (T_MSG *)&intercom );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
631 CYG_TEST_CHECK( E_OK == ercd, "snd_msg(2) bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
632 ercd = snd_msg( 3, (T_MSG *)&intercom );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
633 CYG_TEST_CHECK( E_OK == ercd, "snd_msg(3) bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
634 ercd = snd_msg( 4, (T_MSG *)&intercom );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
635 CYG_TEST_CHECK( E_OK == ercd, "snd_msg(4) bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
636
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
637 CYG_TEST_CHECK( 0 == wakeups[0], "snd_msg: Wakeups[0] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
638 CYG_TEST_CHECK( 0 == wakeups[1], "snd_msg: Wakeups[1] hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
639 CYG_TEST_CHECK( prewups[2] + 1 == wakeups[2], "snd_msg: Wakeups[2] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
640 CYG_TEST_CHECK( prewups[3] + 1 == wakeups[3], "snd_msg: Wakeups[3] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
641 CYG_TEST_CHECK( prewups[4] + 1 == wakeups[4], "snd_msg: Wakeups[4] not hit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
642 prewups[2] = wakeups[2];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
643 prewups[3] = wakeups[3];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
644 prewups[4] = wakeups[4];
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
645
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
646 CYG_TEST_PASS( "Tested ISR invoked uITRON functions" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
647
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
648 } while ( 0 < --loops );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
649
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
650 CYG_TEST_EXIT( "All done" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
651 ext_tsk();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
652 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
653
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
654
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
655 void body( int n )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
656 {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
657 unsigned int z;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
658 ER ercd;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
659 T_MSG *pk_msg;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
660
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
661 do {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
662 switch ( intercom ) {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
663 case NOTHING:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
664 ercd = slp_tsk();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
665 CYG_TEST_CHECK( E_OK == ercd, "slp_tsk (doing nothing)" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
666 continue;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
667 case SLP:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
668 ercd = slp_tsk();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
669 CYG_TEST_CHECK( E_OK == ercd, "slp_tsk bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
670 wakeups[ n ]++;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
671 break;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
672 case SEM:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
673 ercd = wai_sem( n-1 ); // 1..3 for semas
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
674 CYG_TEST_CHECK( E_OK == ercd, "wai_sem bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
675 wakeups[ n ]++;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
676 break;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
677 case FLG:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
678 ercd = wai_flg( &z, n, (1<<n), TWF_CLR | TWF_ANDW );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
679 CYG_TEST_CHECK( E_OK == ercd, "wai_flg bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
680 CYG_TEST_CHECK( z & (1<<n), "Flag bit not set" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
681 wakeups[ n ]++;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
682 break;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
683 case MBX:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
684 ercd = rcv_msg( &pk_msg, n );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
685 CYG_TEST_CHECK( E_OK == ercd, "rcv_msg bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
686 CYG_TEST_CHECK( pk_msg, "rcv_msg NULL msg" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
687 wakeups[ n ]++;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
688 break;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
689 case EXIT:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
690 return;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
691 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
692 } while ( 1 );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
693 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
694
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
695 void task2( unsigned int arg )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
696 {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
697 ER ercd;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
698 CYG_TEST_INFO( "Task 2 running" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
699 ercd = get_tid( &scratch );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
700 CYG_TEST_CHECK( E_OK == ercd, "get_tid bad ercd" );
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
701 CYG_TEST_CHECK( 2 == scratch, "tid not 2" );
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
702 if ( 222 != arg )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
703 CYG_TEST_FAIL( "Task 2 arg not 222" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
704 body(2);
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
705 CYG_TEST_INFO( "Task 2 exiting" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
706 ext_tsk();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
707 CYG_TEST_FAIL( "Task 2 failed to exit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
708 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
709
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
710 void task3( unsigned int arg )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
711 {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
712 ER ercd;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
713 CYG_TEST_INFO("Task 3 running");
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
714 ercd = get_tid( &scratch );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
715 CYG_TEST_CHECK( E_OK == ercd, "get_tid bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
716 CYG_TEST_CHECK( 3 == scratch, "tid not 3" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
717 if ( 333 != arg )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
718 CYG_TEST_FAIL( "Task 3 arg not 333" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
719 body(3);
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
720 CYG_TEST_INFO( "Task 3 exiting" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
721 ext_tsk();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
722 CYG_TEST_FAIL( "Task 3 failed to exit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
723 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
724
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
725 void task4( unsigned int arg )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
726 {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
727 ER ercd;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
728 CYG_TEST_INFO("Task 4 running");
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
729 ercd = get_tid( &scratch );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
730 CYG_TEST_CHECK( E_OK == ercd, "get_tid bad ercd" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
731 CYG_TEST_CHECK( 4 == scratch, "tid not 4" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
732 if ( 444 != arg )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
733 CYG_TEST_FAIL( "Task 4 arg not 444" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
734 body(4);
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
735 CYG_TEST_INFO( "Task 4 exiting" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
736 ext_tsk();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
737 CYG_TEST_FAIL( "Task 4 failed to exit" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
738 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
739
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
740 // ------------------------------------------------------------------------
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
741 // Start of C++ aware portion, so to speak.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
742 //
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
743
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
744 #include <cyg/hal/hal_intr.h>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
745 #include <cyg/kernel/intr.hxx>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
746 #include <cyg/kernel/clock.hxx>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
747 #include <cyg/kernel/sched.hxx>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
748 #include <cyg/kernel/sched.inl>
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
749
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
750 void set_interrupt_number( void )
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
751 {
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
752 clock_interrupt = CYGNUM_HAL_INTERRUPT_RTC;
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
753 }
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
754
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
755 // This snippet stolen from kernel/.../clock.cxx to be able to detach
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
756 // the RTC from its interrupt source.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
757 class Cyg_RealTimeClock
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
758 : public Cyg_Clock
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
759 {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
760 public:
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
761 Cyg_Interrupt interrupt;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
762
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
763 static cyg_uint32 isr(cyg_vector vector, CYG_ADDRWORD data);
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
764
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
765 static void dsr(cyg_vector vector, cyg_ucount32 count, CYG_ADDRWORD data);
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
766
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
767 Cyg_RealTimeClock();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
768 };
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
769
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
770
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
771 static Cyg_Interrupt uit_intr(
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
772 (unsigned)CYGNUM_HAL_INTERRUPT_RTC, // Vector to attach to
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
773 0, // Queue priority
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
774 (unsigned)0, // Data pointer
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
775 &isr_wup_tsk, // Interrupt Service Routine
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
776 &cyg_uitron_dsr // Deferred Service Routine
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
777 );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
778
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
779 void
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
780 attach_isr( unsigned int (*isr)(unsigned int, unsigned int) )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
781 {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
782 int inuse;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
783 int old_ints;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
784 Cyg_RealTimeClock *prtc = (Cyg_RealTimeClock *)Cyg_Clock::real_time_clock;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
785 HAL_INTERRUPT_MASK( CYGNUM_HAL_INTERRUPT_RTC );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
786 HAL_DISABLE_INTERRUPTS(old_ints);
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
787 prtc->interrupt.detach();
88
afdeb44241de Merge from eCos master repository on 2000-05-12-07:47:04-BST
jlarmour
parents: 84
diff changeset
788 #ifndef CYGIMP_KERNEL_INTERRUPTS_CHAIN
afdeb44241de Merge from eCos master repository on 2000-05-12-07:47:04-BST
jlarmour
parents: 84
diff changeset
789 // Only check that the vector was cleared when there's a specific
afdeb44241de Merge from eCos master repository on 2000-05-12-07:47:04-BST
jlarmour
parents: 84
diff changeset
790 // vector for the RTC. In chain mode, other interrupt handlers
afdeb44241de Merge from eCos master repository on 2000-05-12-07:47:04-BST
jlarmour
parents: 84
diff changeset
791 // may prevent the shared vector from being cleared when detaching
afdeb44241de Merge from eCos master repository on 2000-05-12-07:47:04-BST
jlarmour
parents: 84
diff changeset
792 // the RTC ISR, and this assertion fails.
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
793 HAL_INTERRUPT_IN_USE( CYGNUM_HAL_INTERRUPT_RTC, inuse );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
794 CYG_TEST_CHECK( !inuse, "Failed to detach clock ISR" );
88
afdeb44241de Merge from eCos master repository on 2000-05-12-07:47:04-BST
jlarmour
parents: 84
diff changeset
795 #endif
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
796 uit_intr = Cyg_Interrupt(
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
797 CYGNUM_HAL_INTERRUPT_RTC, // Vector to attach to
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
798 1, // Queue priority
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
799 0, // Data pointer
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
800 isr, // Interrupt Service Routine
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
801 cyg_uitron_dsr // Deferred Service Routine
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
802 );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
803 uit_intr.attach();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
804 HAL_INTERRUPT_IN_USE( CYGNUM_HAL_INTERRUPT_RTC, inuse );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
805 CYG_TEST_CHECK( inuse, "Failed to attach new ISR" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
806 ACK_CLOCK();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
807 HAL_RESTORE_INTERRUPTS(old_ints);
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
808 HAL_INTERRUPT_UNMASK( CYGNUM_HAL_INTERRUPT_RTC );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
809 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
810
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
811 void
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
812 detach_isr( unsigned int (*isr)(unsigned int, unsigned int) )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
813 {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
814 int inuse;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
815 int old_ints;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
816 Cyg_RealTimeClock *prtc = (Cyg_RealTimeClock *)Cyg_Clock::real_time_clock;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
817 HAL_INTERRUPT_MASK( CYGNUM_HAL_INTERRUPT_RTC );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
818 HAL_DISABLE_INTERRUPTS(old_ints);
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
819 uit_intr.detach();
88
afdeb44241de Merge from eCos master repository on 2000-05-12-07:47:04-BST
jlarmour
parents: 84
diff changeset
820 #ifndef CYGIMP_KERNEL_INTERRUPTS_CHAIN
afdeb44241de Merge from eCos master repository on 2000-05-12-07:47:04-BST
jlarmour
parents: 84
diff changeset
821 // See comment above in attach_isr.
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
822 HAL_INTERRUPT_IN_USE( CYGNUM_HAL_INTERRUPT_RTC, inuse );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
823 CYG_TEST_CHECK( !inuse, "Failed to detach my ISR" );
88
afdeb44241de Merge from eCos master repository on 2000-05-12-07:47:04-BST
jlarmour
parents: 84
diff changeset
824 #endif
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
825 prtc->interrupt.attach();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
826 HAL_INTERRUPT_IN_USE( CYGNUM_HAL_INTERRUPT_RTC, inuse );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
827 CYG_TEST_CHECK( inuse, "Failed to attach clock ISR" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
828 ACK_CLOCK();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
829 HAL_RESTORE_INTERRUPTS(old_ints);
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
830 HAL_INTERRUPT_UNMASK( CYGNUM_HAL_INTERRUPT_RTC );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
831 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
832
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
833
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
834 void
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
835 lock_sched( void )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
836 {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
837 cyg_uint32 l;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
838 Cyg_Scheduler::lock();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
839 l = Cyg_Scheduler::get_sched_lock();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
840 CYG_TEST_CHECK( 0 < l, "lock: Sched not locked" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
841 CYG_TEST_CHECK( 2 > l, "lock: Sched already locked" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
842 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
843
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
844 void
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
845 unlock_sched( void )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
846 {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
847 cyg_uint32 l;
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
848 l = Cyg_Scheduler::get_sched_lock();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
849 CYG_TEST_CHECK( 0 < l, "unlock: Sched not locked" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
850 CYG_TEST_CHECK( 2 > l, "unlock: Sched already locked" );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
851 Cyg_Scheduler::unlock();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
852 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
853
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
854
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
855 #else // not enough (or too many) uITRON objects configured in
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
856 #define N_A_MSG "not enough uITRON objects to run test"
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
857 #endif // not enough (or too many) uITRON objects configured in
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
858 #else // not C++ and some C++ specific options enabled
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
859 #define N_A_MSG "C++ specific options selected but this is C"
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
860 #endif // not C++ and some C++ specific options enabled
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
861 #else // ! CYGVAR_KERNEL_COUNTERS_CLOCK - can't test without it
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
862 #define N_A_MSG "no CYGVAR_KERNEL_COUNTERS_CLOCK"
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
863 #endif // ! CYGVAR_KERNEL_COUNTERS_CLOCK - can't test without it
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
864 #else // ! CYGFUN_KERNEL_THREADS_TIMER - can't test without it
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
865 #define N_A_MSG "no CYGFUN_KERNEL_THREADS_TIMER"
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
866 #endif // ! CYGFUN_KERNEL_THREADS_TIMER - can't test without it
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
867 #else // ! CYGIMP_THREAD_PRIORITY - can't test without it
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
868 #define N_A_MSG "no CYGSEM_KERNEL_SCHED_MLQUEUE"
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
869 #endif // ! CYGSEM_KERNEL_SCHED_MLQUEUE - can't test without it
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
870 #else // ! CYGPKG_UITRON
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
871 #define N_A_MSG "uITRON Compatibility layer disabled"
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
872 #endif // CYGPKG_UITRON
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
873
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
874 #ifdef N_A_MSG
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
875 externC void
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
876 cyg_start( void )
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
877 {
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
878 CYG_TEST_INIT();
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
879 CYG_TEST_NA( N_A_MSG );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
880 }
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
881 #endif // N_A_MSG defined ie. we are N/A.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
882
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents:
diff changeset
883 // EOF testintr.c