annotate packages/kernel/current/tests/clock0.cxx @ 3292:7f8e529b4d82 default tip

Fix FREESCALE_EDMA_NBYTES_MLOFFYES_MLOFF() so it works with negative offsets.
author vae
date Wed, 29 Apr 2015 23:31:48 +0000
parents 74dbf4c3f2e1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1 //==========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
2 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
3 // clock0.cxx
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
4 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
5 // Clock test 0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
6 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
7 //==========================================================================
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
8 // ####ECOSGPLCOPYRIGHTBEGIN####
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
9 // -------------------------------------------
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
10 // This file is part of eCos, the Embedded Configurable Operating System.
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
12 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
13 // eCos is free software; you can redistribute it and/or modify it under
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
14 // the terms of the GNU General Public License as published by the Free
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
15 // Software Foundation; either version 2 or (at your option) any later
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
16 // version.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
17 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
18 // eCos is distributed in the hope that it will be useful, but WITHOUT
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
19 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
20 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
21 // for more details.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
22 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
23 // You should have received a copy of the GNU General Public License
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
24 // along with eCos; if not, write to the Free Software Foundation, Inc.,
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
25 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
26 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
27 // As a special exception, if other files instantiate templates or use
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
28 // macros or inline functions from this file, or you compile this file
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
29 // and link it with other works to produce a work based on this file,
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
30 // this file does not by itself cause the resulting work to be covered by
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
31 // the GNU General Public License. However the source code for this file
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
32 // must still be made available in accordance with section (3) of the GNU
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
33 // General Public License v2.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
34 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
35 // This exception does not invalidate any other reasons why a work based
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
36 // on this file might be covered by the GNU General Public License.
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
37 // -------------------------------------------
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
38 // ####ECOSGPLCOPYRIGHTEND####
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
39 //==========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
40 //#####DESCRIPTIONBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
41 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
42 // Author(s): dsm
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
43 // Contributors: dsm
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
44 // Date: 1998-02-13
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
45 // Description: Tests some basic clock functions.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
46 // Omissions: Doesn't test likely boundary conditions for
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
47 // CYGNUM_KERNEL_COUNTERS_MULTI_LIST_SIZE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
48 // Real Time Clock Testing is limited
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
49 // Options:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
50 // CYGIMP_KERNEL_COUNTERS_SINGLE_LIST
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
51 // CYGIMP_KERNEL_COUNTERS_MULTI_LIST
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
52 // CYGVAR_KERNEL_COUNTERS_CLOCK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
53 // CYGNUM_KERNEL_COUNTERS_MULTI_LIST_SIZE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
54 // Assumptions: This assumes we have long long support and
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
55 // that counters are 64 bits.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
56 //####DESCRIPTIONEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
57
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
58 #include <pkgconf/kernel.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
59
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
60 #include <cyg/kernel/clock.hxx>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
61
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
62 #include <cyg/infra/testcase.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
63
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
64 #include <cyg/kernel/clock.inl>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
65
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
66 #include "testaux.hxx"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
67
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
68 #ifdef CYGVAR_KERNEL_COUNTERS_CLOCK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
69
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
70 cyg_alarm_fn call_me;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
71
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
72 bool flash( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
73 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
74 Cyg_Counter counter0 = Cyg_Counter();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
75 Cyg_Counter counter1 = Cyg_Counter(723);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
76
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
77 CYG_ASSERTCLASSO( counter0, "error" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
78 CYG_ASSERTCLASSO( counter1, "error" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
79
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
80 Cyg_Alarm alarm0 = Cyg_Alarm(&counter0, call_me, 12);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
81
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
82 CYG_ASSERTCLASSO( alarm0, "error" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
83
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
84 Cyg_Clock::cyg_resolution res = {1,2};
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
85
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
86 Cyg_Clock clock0(res);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
87
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
88 CYG_ASSERTCLASSO( clock0, "error" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
89
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
90 return true;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
91 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
92
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
93 // Testing alarms
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
94 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
95 // call_me is a function that will be called when an alarm is
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
96 // triggered. It updates a global variable called which is CHECKed
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
97 // explicitly to see if the approriate alarms have been called.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
98
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
99 cyg_uint16 called = 0x0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
100
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
101 void call_me(Cyg_Alarm *alarm, CYG_ADDRWORD data)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
102 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
103 called ^= data;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
104 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
105
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
106 void call_me2(Cyg_Alarm *alarm, CYG_ADDRWORD data)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
107 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
108 call_me(alarm, data^0x10);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
109 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
110
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
111
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
112 void clock0_main(void)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
113 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
114 CYG_TEST_INIT();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
115
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
116 CHECK(flash());
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
117 CHECK(flash());
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
118
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
119 const cyg_uint32 big_number = 3333222111u;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
120 Cyg_Counter counter0 = Cyg_Counter();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
121
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
122 CHECK( 0 == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
123 CHECK( 0 == counter0.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
124 CHECK( 0 == counter0.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
125
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
126 counter0.tick();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
127
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
128 CHECK( 1 == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
129 CHECK( 1 == counter0.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
130 CHECK( 0 == counter0.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
131
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
132 counter0.tick(6);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
133
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
134 CHECK( 7 == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
135 CHECK( 7 == counter0.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
136 CHECK( 0 == counter0.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
137
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
138 counter0.set_value( 0xfffffffc );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
139
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
140 CHECK( 0xfffffffc == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
141 CHECK( 0xfffffffc == counter0.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
142 CHECK( 0 == counter0.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
143
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
144 counter0.tick( 0x13 ); // Overflows 32 bits
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
145
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
146 CHECK( 0x10000000fULL == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
147 CHECK( 0xf == counter0.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
148 CHECK( 0x1 == counter0.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
149
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
150
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
151 Cyg_Counter counter1 = Cyg_Counter(big_number);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
152
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
153 CHECK( 0 == counter1.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
154 CHECK( 0 == counter1.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
155 CHECK( 0 == counter1.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
156
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
157 counter1.tick(2);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
158
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
159 CHECK( 2ll*big_number == counter1.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
160 CHECK( ((2ll*big_number) & 0xffffffff) ==
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
161 counter1.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
162 CHECK( ((2ll*big_number) >> 32) == counter1.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
163
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
164 counter1.tick();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
165
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
166 CHECK( 3ll*big_number == counter1.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
167 CHECK( ((3ll*big_number) & 0xffffffff) ==
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
168 counter1.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
169 CHECK( ((3ll*big_number) >> 32) == counter1.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
170
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
171 counter1.tick();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
172
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
173 CHECK( 4ll*big_number == counter1.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
174 CHECK( ((4ll*big_number) & 0xffffffff) ==
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
175 counter1.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
176 CHECK( ((4ll*big_number) >> 32) == counter1.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
177
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
178 counter1.set_value(1222333444555ll);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
179 CHECK( 1222333444555ll == counter1.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
180
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
181 counter0.set_value(11);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
182 CHECK( 11 == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
183
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
184 // the call_me functions cause the "called" bits to toggle
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
185 // CHECKing the value of called TEST_CHECKs the parity of # of calls
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
186 // made by each alarm.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
187
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
188 Cyg_Alarm alarm0 = Cyg_Alarm(&counter0, call_me, 0x1);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
189 Cyg_Alarm alarm1 = Cyg_Alarm(&counter0, call_me, 0x2);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
190 Cyg_Alarm alarm2 = Cyg_Alarm(&counter0, call_me2, 0x4);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
191
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
192 CHECK( 0x00 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
193 alarm0.initialize(12,3);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
194 alarm2.initialize(21,2);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
195 CHECK( 0x00 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
196
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
197 counter0.tick(); // 12 a0
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
198 CHECK( 0x01 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
199
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
200 alarm1.initialize(13,0);
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
201 counter0.tick(); // 13 a1
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
202 CHECK( 0x03 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
203
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
204 alarm1.initialize(17,0);
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
205 counter0.tick(); // 14
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
206 CHECK( 0x03 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
207
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
208 counter0.tick(); // 15 a0
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
209 CHECK( 0x02 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
210
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
211 counter0.tick(2); // 17 a1
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
212 CHECK( 0x00 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
213
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
214 counter0.tick(); // 18 a0
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
215 CHECK( 0x01 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
216
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
217 counter0.tick(3); // 21 a0 a2
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
218 CHECK( 0x14 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
219
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
220 counter0.tick(2); // 23 a2
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
221 CHECK( 0x00 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
222
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
223 alarm2.disable();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
224
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
225 counter0.tick(2); // 25 a0(24)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
226 CHECK( 0x01 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
227
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
228 alarm2.enable(); // a2 (enabled at 25)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
229 CHECK( 0x15 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
230
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
231 counter0.tick(); // 26
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
232 CHECK( 0x15 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
233
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
234 counter0.tick(2); // 28 a0(27) a2(27)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
235 CHECK( 0x00 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
236
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
237 counter0.tick(3); // 31 a0(30) a2(29 31)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
238 CHECK( 0x01 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
239
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
240 Cyg_Clock::cyg_resolution res0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
241
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
242 res0.dividend = 100;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
243 res0.divisor = 3;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
244
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
245 Cyg_Clock::cyg_resolution res1;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
246
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
247 Cyg_Clock clock0 = Cyg_Clock(res0);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
248
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
249 res1 = clock0.get_resolution();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
250 CHECK( res0.dividend == res1.dividend );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
251 CHECK( res0.divisor == res1.divisor );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
252
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
253 res1.dividend = 12;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
254 res1.divisor = 25;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
255
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
256 clock0.set_resolution(res1);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
257 res0 = clock0.get_resolution();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
258 CHECK( res0.dividend == res1.dividend );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
259 CHECK( res0.divisor == res1.divisor );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
260
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
261 res0 = Cyg_Clock::real_time_clock->get_resolution();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
262
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
263 CYG_TEST_PASS_FINISH("Clock 0 OK");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
264 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
265
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
266 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
267 cyg_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
268 {
130
eb9fd8c04db3 Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents: 66
diff changeset
269 #ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
eb9fd8c04db3 Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents: 66
diff changeset
270 cyg_hal_invoke_constructors();
eb9fd8c04db3 Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents: 66
diff changeset
271 #endif
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
272 clock0_main();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
273 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
274
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
275 #else // def CYGVAR_KERNEL_COUNTERS_CLOCK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
276
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
277 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
278 cyg_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
279 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
280 CYG_TEST_INIT();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
281 CYG_TEST_NA( "Kernel real-time clock disabled");
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
282 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
283
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
284 #endif // def CYGVAR_KERNEL_COUNTERS_CLOCK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
285 // EOF clock0.cxx