EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: Next R3.14.9 version: -pre2 or -RC1?
From: "Ernest L. Williams Jr." <[email protected]>
To: Andrew Johnson <[email protected]>
Cc: EPICS core-talk <[email protected]>, "Peng, Sheng" <[email protected]>, "Kasemir, Kay" <[email protected]>, [email protected]
Date: Fri, 01 Dec 2006 11:49:56 -0500
Hi Andrew,

Its me again.

I forgot to include the config files needed for my MVME3100 target:

[williams@dragon os]$ ls -l *mpc8540*
-rw-rw-r--  1 williams epicsmgr 650 Dec  1 11:40 CONFIG.Common.vxWorks-
mpc8540
-rw-rw-r--  1 williams epicsmgr 231 Dec  1 11:40
CONFIG_SITE.Common.vxWorks-mpc8540



Thanks,
Ernest


On Fri, 2006-12-01 at 11:22 -0500, Ernest L. Williams Jr. wrote:
> Hi Andrew,
> 
> Well my diff did not pick up new files added to the <EPICS_BASE>/config
> area so I will attached them:
> [williams@dragon config]$ ls *linux-x86_64*
> CONFIG_HOST_ARCH.linux-x86_64  CONFIG.Host.linux-x86_64
> CONFIG_SITE.Host.linux-x86_64  CONFIG_SITE.Vx.linux-x86_64
> 
> I will go ahead and get this stuff into our CVS so that I can use cvs
> diff in the future. :)
> 
> 
> Thanks,
> Ernest
> 
> 
> 
> On Fri, 2006-12-01 at 11:05 -0500, Ernest L. Williams Jr. wrote:
> > On Wed, 2006-11-29 at 14:24 -0600, Andrew Johnson wrote: 
> > > I haven't heard any results from anybody testing R3.14.9-pre1 outside of 
> > > APS; has anyone actually tried it at all?  Please tell core-talk if you 
> > > have been checking out the -pre1 release or the CVS snapshots since; I'd 
> > > particularly like to hear from anyone who has been testing on 
> > > linux-x86_64 and vxWorks6.
> > 
> > Hi Andrew,
> > 
> > I have some feedback on linux-x86_64 and vxWorks 6.3
> > 
> > So far, things look very good for vxWorks 6.3. :)
> > 
> > =============================================================================
> > My Environment:
> > Host OS: Red Hat Enterprise Linux WS release 4 (Nahant Update 4)
> > Host Hardware: HP xw9300 AMD64
> > Host Compiler: gcc version 3.4.6 20060404 (Red Hat 3.4.6-3)
> > 
> > Cross Compiler: gcc version 3.4.4 (Wind River vxworks-6.3) (built
> > 20060510)
> > 
> > Target OS: vxWorks 6.3
> > Target Hardware: MVME3100
> > 
> > EPICS BASE: R3.14.9-pre1
> > ==================================================================================
> > 
> > 
> > I have also attached a patch file for the changes that I applied to
> > R3.14.9-pre1.
> > 
> > Problems with vxWorks build with new config file structure:
> > (1) Can't build for vxWorks 5.5.X and vxWorks 6.X
> > This is not good. Since our production environment includes both.
> > So, vxWorks-ppc604 gets overwritten by second build of EPICS BASE
> > against a different version of vxWorks.  I am sure that other sites that
> > move to vxWorks 6 will experience this.
> > 
> > I think we should have the config files contain vxWorks major version
> > and BSP name like before.  Looks like you allow RTEMS to do this?
> > For example, we are starting to use the altivec support on the MVME5110
> > but the MVME5100 does not have altivec support. 
> > We could have vxWorks-ppc604_altivec, I guess.  Another example is using
> > the BSP/target name to discover whether we have a UNIVERSE or Tsi148
> > interface for a DMA driver that we may write.  Having, the scheme that
> > we used last time just turns into a bit more compile time and disk
> > space, right?
> > 
> > (2) epicsExceptionTest.cpp does not build for vxWorks:
> > Problem with <EPICS_BASE>/src/libCom/test/epicsExceptionTest.cpp
> > 
> > 
> > /ade/vxWorks/6.3/gnu/3.4.4-vxworks-6.3/x86-linux2/bin/ccppc -c
> > -DCPU=PPC603    -DvxWorks   -ansi  -O3  -Wall     -mcpu=603 -mstrict-
> > align -mlongcall    -fno-builtin  -I. -I.. -
> > I../../../../include/os/vxWorks -I../../../../include       -
> > I/ade/vxWorks/6.3/vxworks-6.3/target/h -
> > I/ade/vxWorks/6.3/vxworks-6.3/target/h/wrn/coreip  ../epicsExceptionTest.cpp
> > ../epicsExceptionTest.cpp:48:75: macro "max" requires 2 arguments, but
> > only 1 given
> > ../epicsExceptionTest.cpp:48: error: invalid conversion from `unsigned
> > int (*)() throw ()' to `size_t'
> > make[1]: *** [epicsExceptionTest.o] Error 1
> > make[1]: Leaving directory `/ade/epics/supTop/base/base-3.14.9-
> > pre1/src/libCom/test/O.vxWorks-ppc603_long'
> > make: *** [install.vxWorks-ppc603_long] Error 2
> > 
> > 
> > Not defined for vxWorks 6.3:
> > numeric_limits
> > 
> > Work-around:
> > Change <EPICS_BASE>/src/libCom/test/Makefile
> > 
> > ifneq ($(OS_CLASS),vxWorks)
> > TESTPROD_HOST += epicsExceptionTest
> > epicsExceptionTest_SRCS += epicsExceptionTest.cpp
> > testHarness_SRCS += epicsExceptionTest.cpp
> > TESTS += epicsExceptionTest
> > endif
> > 
> > 
> > (3) The other issues with vxWorks 6.3 were resolved and are attached as
> > a R3.14.9-pre1 patch file.
> > 
> > 
> > 
> > 
> > linux-x86_64 Test results:
> > Had to add config files for building legacy R3.13.X EPICS extensions.
> > You can get these config files from the attached R3.14.9-pre1 patch
> > file.
> > 
> > 
> > Running tests in libCom under linux-x86_64:
> > Only the blockingSockTest failed all other passed:
> > =============================================================
> > [williams@dragon O.linux-x86_64]$ ./blockingSockTest
> > 1..1
> > 
> > 
> > 
> > A call to "assert (status == 0)" failed in ../blockingSockTest.cpp line
> > 173.
> > EPICS Release EPICS R3.14.9- $R3-14-9-pre1$ $2006/11/20 21:09:36$.
> > Current time Fri Dec 01 2006 09:41:41.202612000.
> > Please E-mail this message to the author or to [email protected]
> > Calling epicsThreadSuspendSelf()
> > 
> > 
> > [williams@dragon O.linux-x86_64]$ ./buckTest
> > It took    0.1400000000 total sec
> > It took    0.0280000000 u sec per hash lookup
> > Bucket entries in use = 2 bytes in use = 160
> > Bucket entries/hash id - mean = 0.250000 std dev = 0.433013 max = 1
> > 
> > [williams@dragon O.linux-x86_64]$ ./epicsAlgorithmTest
> > 1..22
> > ok  1 - epicsMin(f1, f2)
> > ok  2 - epicsMin(f1, -Inf)
> > ok  3 - epicsMin(f1, NaN)
> > ok  4 - epicsMin(f1, Inf)
> > ok  5 - epicsMin(f2, f1)
> > ok  6 - epicsMin(-Inf, f1)
> > ok  7 - epicsMin(NaN, f1)
> > ok  8 - epicsMin(Inf, f1)
> > ok  9 - epicsMax(f2, f1)
> > ok 10 - epicsMax(-Inf, f1)
> > ok 11 - epicsMax(NaN, f1)
> > ok 12 - epicsMax(Inf, f1)
> > ok 13 - epicsMax(f1, f2)
> > ok 14 - epicsMax(f1, -Inf)
> > ok 15 - epicsMax(f1, NaN)
> > ok 16 - epicsMax(f1, Inf)
> > ok 17 - epicsSwap(f1, f2)
> > ok 18 - epicsMin(i1,i2)
> > ok 19 - epicsMin(i2,i1)
> > ok 20 - epicsMax(i1,i2)
> > ok 21 - epicsMax(i2,i1)
> > ok 22 - epicsSwap(i1,i2)
> > 
> >     Results
> >     =======
> >        Tests: 22
> >       Passed: 22 = 100%
> > [williams@dragon O.linux-x86_64]$
> > 
> > [williams@dragon O.linux-x86_64]$ ./epicsCalcTest
> > 1..392
> > ok  1 - 0
> > ok  2 - 1
> > ok  3 - 2
> > ok  4 - 3
> > ok  5 - 4
> > ok  6 - 5
> > ok  7 - 6
> > ok  8 - 7
> > ok  9 - 8
> > ok 10 - 9
> > ok 11 - .1
> > ok 12 - 0.1
> > ok 13 - Inf
> > ok 14 - Infinity
> > ok 15 - NaN
> > ok 16 - a
> > ok 17 - b
> > ok 18 - c
> > ok 19 - d
> > ok 20 - e
> > ok 21 - f
> > ok 22 - g
> > ok 23 - h
> > ok 24 - i
> > ok 25 - j
> > ok 26 - k
> > ok 27 - l
> > ok 28 - PI
> > ok 29 - D2R
> > ok 30 - R2D
> > ok 31 - rndm
> > ok 32 - -1
> > ok 33 - -Inf
> > ok 34 - - -1
> > ok 35 - (1)
> > ok 36 - !0
> > ok 37 - !1
> > ok 38 - !!0
> > ok 39 - ABS(1.0)
> > ok 40 - ABS(-1.)
> > ok 41 - acos(1.)
> > ok 42 - asin(0.5)
> > ok 43 - atan(0.5)
> > ok 44 - ATAN2(1., 2.)
> > ok 45 - ceil(0.5)
> > ok 46 - cos(0.5)
> > ok 47 - cosh(0.5)
> > ok 48 - exp(1.)
> > ok 49 - floor(1.5)
> > ok 50 - finite(0)
> > ok 51 - finite(Inf)
> > ok 52 - finite(-Inf)
> > ok 53 - finite(NaN)
> > ok 54 - isinf(0)
> > ok 55 - isinf(Inf)
> > ok 56 - isinf(-Inf)
> > ok 57 - isinf(NaN)
> > ok 58 - isnan(0)
> > ok 59 - isnan(Inf)
> > ok 60 - isnan(NaN)
> > ok 61 - LN(5.)
> > ok 62 - LOG(5.)
> > ok 63 - LOGE(2.)
> > ok 64 - MAX(1,2)
> > ok 65 - MAX(1.,Inf)
> > ok 66 - MAX(1.,-Inf)
> > ok 67 - MAX(1.,NaN)
> > ok 68 - MAX(NaN,1.)
> > ok 69 - MIN(1,2)
> > ok 70 - MIN(1.,Inf)
> > ok 71 - MIN(1.,-Inf)
> > ok 72 - MIN(1.,NaN)
> > ok 73 - MIN(NaN,1.)
> > ok 74 - NINT(0.6)
> > ok 75 - NINT(-0.6)
> > ok 76 - sin(0.5)
> > ok 77 - sinh(0.5)
> > ok 78 - SQR(10.)
> > ok 79 - sqrt(16.)
> > ok 80 - tan(0.5)
> > ok 81 - tanh(0.5)
> > ok 82 - ~5
> > ok 83 - ~~5
> > ok 84 - 0 != 1
> > ok 85 - 0 != 0
> > ok 86 - 1 != 0
> > ok 87 - 1 != 0 != 2
> > ok 88 - 0.0 != Inf
> > ok 89 - 0.0 != -Inf
> > ok 90 - 0.0 != NaN
> > ok 91 - Inf != 0.0
> > ok 92 - Inf != Inf
> > ok 93 - Inf != -Inf
> > ok 94 - Inf != NaN
> > ok 95 - -Inf != 0.0
> > ok 96 - -Inf != Inf
> > ok 97 - -Inf != -Inf
> > ok 98 - -Inf != NaN
> > ok 99 - NaN != 0.0
> > ok 100 - NaN != Inf
> > ok 101 - NaN != -Inf
> > ok 102 - NaN != NaN
> > ok 103 - 0 # 1
> > ok 104 - 0 # 0
> > ok 105 - 1 # 0
> > ok 106 - 1 # 0 # 2
> > ok 107 - 7 % 4
> > ok 108 - -7 % 4
> > ok 109 - 63 % 16 % 6
> > ok 110 - 7 & 4
> > ok 111 - 0 && 0
> > ok 112 - 0 && 1
> > ok 113 - 1 && 0
> > ok 114 - 1 && 1
> > ok 115 - 2 * 2
> > ok 116 - 0.0 * Inf
> > ok 117 - 0.0 * -Inf
> > ok 118 - 0.0 * NaN
> > ok 119 - Inf * 0.0
> > ok 120 - Inf * Inf
> > ok 121 - Inf * -Inf
> > ok 122 - Inf * NaN
> > ok 123 - -Inf * 0.0
> > ok 124 - -Inf * Inf
> > ok 125 - -Inf * -Inf
> > ok 126 - -Inf * NaN
> > ok 127 - NaN * 0.0
> > ok 128 - NaN * Inf
> > ok 129 - NaN * -Inf
> > ok 130 - NaN * NaN
> > ok 131 - 2 ** 0.2
> > ok 132 - 2 ** -0.2
> > ok 133 - -0.2 ** 2
> > ok 134 - -0.2 ** -2
> > ok 135 - 2 ** 2 ** 3
> > ok 136 - 0 + 1
> > ok 137 - 0.0 + Inf
> > ok 138 - 0.0 + -Inf
> > ok 139 - 0.0 + NaN
> > ok 140 - Inf + 0.0
> > ok 141 - Inf + Inf
> > ok 142 - Inf + -Inf
> > ok 143 - Inf + NaN
> > ok 144 - -Inf + 0.0
> > ok 145 - -Inf + Inf
> > ok 146 - -Inf + -Inf
> > ok 147 - -Inf + NaN
> > ok 148 - NaN + 0.0
> > ok 149 - NaN + Inf
> > ok 150 - NaN + -Inf
> > ok 151 - NaN + NaN
> > ok 152 - 0 - 1
> > ok 153 - 0 - 1 - 2
> > ok 154 - 0.0 - Inf
> > ok 155 - 0.0 - -Inf
> > ok 156 - 0.0 - NaN
> > ok 157 - Inf - 0.0
> > ok 158 - Inf - Inf
> > ok 159 - Inf - -Inf
> > ok 160 - Inf - NaN
> > ok 161 - -Inf - 0.0
> > ok 162 - -Inf - Inf
> > ok 163 - -Inf - -Inf
> > ok 164 - -Inf - NaN
> > ok 165 - NaN - 0.0
> > ok 166 - NaN - Inf
> > ok 167 - NaN - -Inf
> > ok 168 - NaN - NaN
> > ok 169 - 2.0 / 3.0
> > ok 170 - 1.0 / 2.0 / 3.0
> > ok 171 - 0.0 / Inf
> > ok 172 - 0.0 / -Inf
> > ok 173 - 0.0 / NaN
> > ok 174 - Inf / 1.0
> > ok 175 - Inf / Inf
> > ok 176 - Inf / -Inf
> > ok 177 - Inf / NaN
> > ok 178 - -Inf / 1.0
> > ok 179 - -Inf / Inf
> > ok 180 - -Inf / -Inf
> > ok 181 - -Inf / NaN
> > ok 182 - NaN / 1.0
> > ok 183 - NaN / Inf
> > ok 184 - NaN / -Inf
> > ok 185 - NaN / NaN
> > ok 186 - 0 < 1
> > ok 187 - 0 < 0
> > ok 188 - 1 < 0
> > ok 189 - 2 < 0 < 2
> > ok 190 - 0.0 < Inf
> > ok 191 - 0.0 < -Inf
> > ok 192 - 0.0 < NaN
> > ok 193 - Inf < 0.0
> > ok 194 - Inf < Inf
> > ok 195 - Inf < -Inf
> > ok 196 - Inf < NaN
> > ok 197 - -Inf < 0.0
> > ok 198 - -Inf < Inf
> > ok 199 - -Inf < -Inf
> > ok 200 - -Inf < NaN
> > ok 201 - NaN < 0.0
> > ok 202 - NaN < Inf
> > ok 203 - NaN < -Inf
> > ok 204 - NaN < NaN
> > ok 205 - 1 << 2
> > ok 206 - 1 << 3 << 2
> > ok 207 - 0 <= 1
> > ok 208 - 0 <= 0
> > ok 209 - 1 <= 0
> > ok 210 - 3 <= 2 <= 3
> > ok 211 - 0.0 <= Inf
> > ok 212 - 0.0 <= -Inf
> > ok 213 - 0.0 <= NaN
> > ok 214 - Inf <= 0.0
> > ok 215 - Inf <= Inf
> > ok 216 - Inf <= -Inf
> > ok 217 - Inf <= NaN
> > ok 218 - -Inf <= 0.0
> > ok 219 - -Inf <= Inf
> > ok 220 - -Inf <= -Inf
> > ok 221 - -Inf <= NaN
> > ok 222 - NaN <= 0.0
> > ok 223 - NaN <= Inf
> > ok 224 - NaN <= -Inf
> > ok 225 - NaN <= NaN
> > ok 226 - 0 = 1
> > ok 227 - 0 = 0
> > ok 228 - 1 = 0
> > ok 229 - 2 = 2 = 1
> > ok 230 - 0 == 1
> > ok 231 - 0 == 0
> > ok 232 - 1 == 0
> > ok 233 - 2 == 2 == 1
> > ok 234 - 0.0 == Inf
> > ok 235 - 0.0 == -Inf
> > ok 236 - 0.0 == NaN
> > ok 237 - Inf == 0.0
> > ok 238 - Inf == Inf
> > ok 239 - Inf == -Inf
> > ok 240 - Inf == NaN
> > ok 241 - -Inf == 0.0
> > ok 242 - -Inf == Inf
> > ok 243 - -Inf == -Inf
> > ok 244 - -Inf == NaN
> > ok 245 - NaN == 0.0
> > ok 246 - NaN == Inf
> > ok 247 - NaN == -Inf
> > ok 248 - NaN == NaN
> > ok 249 - 0 > 1
> > ok 250 - 0 > 0
> > ok 251 - 1 > 0
> > ok 252 - 2 > 0 > 2
> > ok 253 - 0.0 > Inf
> > ok 254 - 0.0 > -Inf
> > ok 255 - 0.0 > NaN
> > ok 256 - Inf > 0.0
> > ok 257 - Inf > Inf
> > ok 258 - Inf > -Inf
> > ok 259 - Inf > NaN
> > ok 260 - -Inf > 0.0
> > ok 261 - -Inf > Inf
> > ok 262 - -Inf > -Inf
> > ok 263 - -Inf > NaN
> > ok 264 - NaN > 0.0
> > ok 265 - NaN > Inf
> > ok 266 - NaN > -Inf
> > ok 267 - NaN > NaN
> > ok 268 - 0 >= 1
> > ok 269 - 0 >= 0
> > ok 270 - 1 >= 0
> > ok 271 - 3 >= 2 >= 3
> > ok 272 - 0.0 >= Inf
> > ok 273 - 0.0 >= -Inf
> > ok 274 - 0.0 >= NaN
> > ok 275 - Inf >= 0.0
> > ok 276 - Inf >= Inf
> > ok 277 - Inf >= -Inf
> > ok 278 - Inf >= NaN
> > ok 279 - -Inf >= 0.0
> > ok 280 - -Inf >= Inf
> > ok 281 - -Inf >= -Inf
> > ok 282 - -Inf >= NaN
> > ok 283 - NaN >= 0.0
> > ok 284 - NaN >= Inf
> > ok 285 - NaN >= -Inf
> > ok 286 - NaN >= NaN
> > ok 287 - 8 >> 1
> > ok 288 - 64 >> 2 >> 1
> > ok 289 - 7 AND 4
> > ok 290 - 1 OR 8
> > ok 291 - 3 XOR 9
> > ok 292 - 2 ^ 0.2
> > ok 293 - 2 ^ -0.2
> > ok 294 - (-0.2) ^ 2
> > ok 295 - (-0.2) ^ -2
> > ok 296 - 2 ^ 2 ^ 3
> > ok 297 - 1 | 8
> > ok 298 - 0 || 0
> > ok 299 - 0 || 1
> > ok 300 - 1 || 0
> > ok 301 - 1 || 1
> > ok 302 - 0 ? 1 : 2
> > ok 303 - 1 ? 1 : 2
> > ok 304 - Inf ? 1 : 2
> > ok 305 - NaN ? 1 : 2
> > ok 306 - 0 ? 0 ? 2 : 3 : 4
> > ok 307 - 0 ? 1 ? 2 : 3 : 4
> > ok 308 - 1 ? 0 ? 2 : 3 : 4
> > ok 309 - 1 ? 1 ? 2 : 3 : 4
> > ok 310 - 0 ? 2 : 0 ? 3 : 4
> > ok 311 - 0 ? 2 : 1 ? 3 : 4
> > ok 312 - 1 ? 2 : 0 ? 3 : 4
> > ok 313 - 1 ? 2 : 1 ? 3 : 4
> > ok 314 - a := 0; a
> > ok 315 - b := 0; b
> > ok 316 - c := 0; c
> > ok 317 - d := 0; d
> > ok 318 - e := 0; e
> > ok 319 - f := 0; f
> > ok 320 - g := 0; g
> > ok 321 - h := 0; h
> > ok 322 - i := 0; i
> > ok 323 - j := 0; j
> > ok 324 - k := 0; k
> > ok 325 - l := 0; l
> > ok 326 - a; a := 0
> > ok 327 - b; b := 0
> > ok 328 - c; c := 0
> > ok 329 - d; d := 0
> > ok 330 - e; e := 0
> > ok 331 - f; f := 0
> > ok 332 - g; g := 0
> > ok 333 - h; h := 0
> > ok 334 - i; i := 0
> > ok 335 - j; j := 0
> > ok 336 - k; k := 0
> > ok 337 - l; l := 0
> > ok 338 - 0 ? 1 : 2 | 4
> > ok 339 - 1 ? 1 : 2 | 4
> > ok 340 - 0 ? 2 | 4 : 1
> > ok 341 - 1 ? 2 | 4 : 1
> > ok 342 - 0 ? 1 : 2 & 3
> > ok 343 - 1 ? 1 : 2 & 3
> > ok 344 - 0 ? 2 & 3 : 1
> > ok 345 - 1 ? 2 & 3 : 1
> > ok 346 - 0 ? 2 : 3 >= 1
> > ok 347 - 0 ? 3 >= 1 : 2
> > ok 348 - 1 ? 0 == 1 : 2
> > ok 349 - 1 ? 2 : 0 == 1
> > ok 350 - 0 ? 1 : 2 + 4
> > ok 351 - 1 ? 1 : 2 + 4
> > ok 352 - 0 ? 2 + 4 : 1
> > ok 353 - 1 ? 2 + 4 : 1
> > ok 354 - 0 ? 1 : 2 * 4
> > ok 355 - 1 ? 1 : 2 * 4
> > ok 356 - 0 ? 2 * 4 : 1
> > ok 357 - 1 ? 2 * 4 : 1
> > ok 358 - 0 ? 1 : 2 ** 3
> > ok 359 - 1 ? 1 : 2 ** 3
> > ok 360 - 0 ? 2 ** 3 : 1
> > ok 361 - 1 ? 2 ** 3 : 1
> > ok 362 - 1 | 3 XOR 1
> > ok 363 - 1 XOR 3 | 1
> > ok 364 - 3 | 1 & 2
> > ok 365 - 2 | 4 > 3
> > ok 366 - 2 OR 4 > 3
> > ok 367 - 2 XOR 3 >= 0
> > ok 368 - 2 | 1 - 3
> > ok 369 - 2 | 4 / 2
> > ok 370 - 1 | 2 ** 3
> > ok 371 - 3 << 2 & 10
> > ok 372 - 18 & 6 << 2
> > ok 373 - 36 >> 2 & 10
> > ok 374 - 18 & 20 >> 2
> > ok 375 - 3 & 4 == 4
> > ok 376 - 3 AND 4 == 4
> > ok 377 - 1 << 2 != 4
> > ok 378 - 16 >> 2 != 4
> > ok 379 - 3 AND -2
> > ok 380 - 0 < 1 ? 2 : 3
> > ok 381 - 1 <= 0 ? 2 : 3
> > ok 382 - 0 + -1
> > ok 383 - 0 - -1
> > ok 384 - 10 + 10 * 2
> > ok 385 - 20 + 20 / 2
> > ok 386 - -1 + 1
> > ok 387 - -1 - 2
> > ok 388 - -2 ** 2
> > ok 389 - -2 ^ 2
> > ok 390 - (1 | 2) ** 3
> > ok 391 - 1+(1|2)**3
> > ok 392 - 1+(1?(1<2):(1>2))*2
> > 
> >     Results
> >     =======
> >        Tests: 392
> >       Passed: 392 = 100%
> > [williams@dragon O.linux-x86_64]$
> > 
> > 
> > [williams@dragon O.linux-x86_64]$ ./epicsEventTest
> > 1..9
> > ok  1 - epicsEventWaitWithTimeout(event, 2.0) = 1
> > ok  2 - epicsEventTryWait(event) = 1
> > ok  3 - epicsEventWaitWithTimeout(event, 2.0) = 0
> > ok  4 - epicsEventTryWait(event) = 0
> > # consumer: starting
> > # producer 0: starting
> > # producer 1: starting
> > # producer 2: starting
> > # setting quit
> > ok  5 - producer 2: errors = 0
> > ok  6 - consumer: errors = 0
> > ok  7 - producer 0: errors = 0
> > ok  8 - producer 1: errors = 0
> > # epicsEventWaitWithTimeout(1.000000)  delay error 0.001896 sec
> > # epicsEventWaitWithTimeout(0.500000)  delay error 0.001919 sec
> > # epicsEventWaitWithTimeout(0.250000)  delay error 0.001968 sec
> > # epicsEventWaitWithTimeout(0.125000)  delay error 0.001977 sec
> > # epicsEventWaitWithTimeout(0.062500)  delay error 0.001482 sec
> > # epicsEventWaitWithTimeout(0.031250)  delay error 0.001732 sec
> > # epicsEventWaitWithTimeout(0.015625)  delay error 0.001360 sec
> > # epicsEventWaitWithTimeout(0.007812)  delay error 0.001175 sec
> > # epicsEventWaitWithTimeout(0.003906)  delay error 0.001078 sec
> > # epicsEventWaitWithTimeout(0.001953)  delay error 0.001035 sec
> > # epicsEventWaitWithTimeout(0.000977)  delay error 0.001012 sec
> > # epicsEventWaitWithTimeout(0.000488)  delay error 0.001496 sec
> > # epicsEventWaitWithTimeout(0.000244)  delay error 0.001745 sec
> > # epicsEventWaitWithTimeout(0.000122)  delay error 0.001868 sec
> > # epicsEventWaitWithTimeout(0.000061)  delay error 0.001925 sec
> > # epicsEventWaitWithTimeout(0.000031)  delay error 0.001959 sec
> > # epicsEventWaitWithTimeout(0.000015)  delay error 0.001975 sec
> > # epicsEventWaitWithTimeout(0.000008)  delay error 0.001981 sec
> > # epicsEventWaitWithTimeout(0.000004)  delay error 0.001985 sec
> > # epicsEventWaitWithTimeout(0.000002)  delay error 0.000003 sec
> > # epicsEventWaitWithTimeout(0.000000)  delay error 0.000005 sec
> > ok  9 - Average error 0.001504 sec
> > 
> >     Results
> >     =======
> >        Tests: 9
> >       Passed:  9 = 100%
> > [williams@dragon O.linux-x86_64]$
> > 
> > 
> > [williams@dragon O.linux-x86_64]$ ./epicsExceptionTest
> > 1..4
> > ok  1 - new char[4294967295] threw
> > ok  2 - new (nothrow)
> > ok  3 - new char[4294967295] threw
> > ok  4 - new (nothrow)
> > 
> >     Results
> >     =======
> >        Tests: 4
> >       Passed:  4 = 100%
> > [williams@dragon O.linux-x86_64]$
> > 
> > 
> > [williams@dragon O.linux-x86_64]$ ./epicsExitTest
> > 1..7
> > # threadA starting
> > # threadA waiting for atExit
> > # threadB starting
> > # threadB waiting for atExit
> > # Calling epicsExit
> > 
> > ok  1 - threadB reached atExit
> > ok  2 - threadB terminating
> > ok  3 -  destroying pinfo
> > ok  4 - threadA reached atExit
> > ok  5 - threadA terminating
> > ok  6 - p!P destroying pinfo
> > ok  7 - Reached mainExit
> > 
> >     Results
> >     =======
> >        Tests: 7
> >       Passed:  7 = 100%
> > [williams@dragon O.linux-x86_64]$
> > 
> > [williams@dragon O.linux-x86_64]$ ./epicsMathTest
> > 1..18
> > ok  1 - !isnan(0.0 / 1.0)
> > ok  2 - !isinf(0.0 / 1.0)
> > ok  3 - 0.0 / 1.0 == 0.0
> > ok  4 - !isnan(1.0 / 0.0)
> > ok  5 - isinf(1.0 / 0.0)
> > ok  6 - 1.0 / 0.0 == 1.0 / 0.0
> > ok  7 - isnan(0.0 / 0.0)
> > ok  8 - !isinf(0.0 / 0.0)
> > ok  9 - 0.0 / 0.0 != 0.0 / 0.0
> > ok 10 - !isnan(1e300 / 1e-300)
> > ok 11 - isinf(1e300 / 1e-300)
> > ok 12 - 1e300 / 1e-300 > 0.0
> > ok 13 - !isnan(-1e300 / 1e-300)
> > ok 14 - isinf(-1e300 / 1e-300)
> > ok 15 - -1e300 / 1e-300 < 0.0
> > ok 16 - !isnan(1e300 / 1e300)
> > ok 17 - !isinf(1e300 / 1e300)
> > ok 18 - 1e300 / 1e300 == 1.0
> > 
> >     Results
> >     =======
> >        Tests: 18
> >       Passed: 18 = 100%
> > [williams@dragon O.linux-x86_64]$
> > 
> > 
> > [williams@dragon O.linux-x86_64]$ ./epicsMessageQueueTest
> > 1..58
> > # Simple single-thread tests:
> > ok  1 - q1->pending() == 0
> > ok  2 - q1->pending() == 1
> > ok  3 - q1->pending() == 2
> > ok  4 - q1->pending() == 3
> > ok  5 - q1->pending() == 4
> > ok  6 - q1->pending() == 4
> > ok  7 - q1->pending() == 3
> > ok  8 - (len == want) && (strncmp(msg1, cbuf, len) == 0)
> > ok  9 - q1->pending() == 2
> > ok 10 - (len == want) && (strncmp(msg1, cbuf, len) == 0)
> > ok 11 - q1->pending() == 2
> > ok 12 - (len == want) && (strncmp(msg1, cbuf, len) == 0)
> > ok 13 - q1->pending() == 3
> > ok 14 - q1->pending() == 2
> > ok 15 - (len == want) & (strncmp(msg1, cbuf, len) == 0)
> > ok 16 - q1->pending() == 1
> > ok 17 - (len == want) & (strncmp(msg1, cbuf, len) == 0)
> > ok 18 - q1->pending() == 0
> > ok 19 - (len == want) & (strncmp(msg1, cbuf, len) == 0)
> > ok 20 - q1->pending() == 0
> > # Test sender timeout:
> > ok 21 - q1->pending() == 0
> > ok 22 - q1->pending() == 1
> > ok 23 - q1->pending() == 2
> > ok 24 - q1->pending() == 3
> > ok 25 - q1->pending() == 4
> > ok 26 - q1->pending() == 4
> > ok 27 - q1->pending() == 3
> > ok 28 - (len == want) && (strncmp(msg1, cbuf, len) == 0)
> > ok 29 - q1->pending() == 2
> > ok 30 - (len == want) && (strncmp(msg1, cbuf, len) == 0)
> > ok 31 - q1->pending() == 2
> > ok 32 - (len == want) && (strncmp(msg1, cbuf, len) == 0)
> > ok 33 - q1->pending() == 3
> > ok 34 - q1->pending() == 2
> > ok 35 - (len == want) && (strncmp(msg1, cbuf, len) == 0)
> > ok 36 - q1->pending() == 1
> > ok 37 - (len == want) && (strncmp(msg1, cbuf, len) == 0)
> > ok 38 - q1->pending() == 0
> > ok 39 - (len == want) && (strncmp(msg1, cbuf, len) == 0)
> > ok 40 - q1->pending() == 0
> > # Test receiver with timeout:
> > ok 41 - q1->send((void *)msg1, i, 1.0) == 0
> > ok 42 - q1->send((void *)msg1, i, 1.0) == 0
> > ok 43 - q1->send((void *)msg1, i, 1.0) == 0
> > ok 44 - q1->send((void *)msg1, i, 1.0) == 0
> > ok 45 - q1->pending() == 4
> > ok 46 - q1->receive(...) == 0
> > ok 47 - q1->receive(...) == 1
> > ok 48 - q1->receive(...) == 2
> > ok 49 - q1->receive(...) == 3
> > ok 50 - q1->pending() == 0
> > ok 51 - q1->receive((void *)cbuf, sizeof cbuf, 1.0) < 0
> > ok 52 - q1->pending() == 0
> > # Single receiver with invalid size, single sender tests:
> > ok 53 - Send with waiting receiver
> > ok 54 - receive into undersized buffer returned error (-1)
> > ok 55 - Send with no receiver
> > ok 56 - receive into undersized buffer returned error (-1)
> > # Single receiver, single sender tests:
> > #   priority-based scheduler, sent 4 messages
> > #   scheduler not strict priority, sent 5 messages
> > ok 57 - 10 of 10 messages sent with sender pauses
> > # Single receiver, multiple sender tests:
> > # This test takes 5 minutes...
> > # Sender 1 -- 5892 messages
> > # Sender 2 -- 5808 messages
> > # Sender 3 -- 5878 messages
> > # Sender 4 -- 5841 messages
> > ok 58 - errors == 0
> > 
> >     Results
> >     =======
> >        Tests: 58
> >       Passed: 58 = 100%
> > [williams@dragon O.linux-x86_64]$
> > 
> > 
> > 
> > 
> > [williams@dragon O.linux-x86_64]$ ./epicsMutexTest
> > 1..19
> > ok  1 - epicsMutexTryLock(verify.mutex) == epicsMutexLockOK
> > ok  2 - epicsMutexTryLock(pVerify->mutex) == epicsMutexLockTimeout
> > ok  3 - epicsMutexLock returned 0
> > ok  4 - epicsMutexTryLock returned 0
> > # mutexThread 0 starting
> > ok  5 - mutexThread 0 epicsMutexLock returned 0
> > # mutexThread 1 starting
> > # mutexThread 2 starting
> > ok  6 - mutexThread 1 epicsMutexLock returned 0
> > ok  7 - mutexThread 2 epicsMutexLock returned 0
> > ok  8 - mutexThread 0 epicsMutexLock returned 0
> > ok  9 - mutexThread 1 epicsMutexLock returned 0
> > ok 10 - mutexThread 2 epicsMutexLock returned 0
> > ok 11 - mutexThread 0 epicsMutexLock returned 0
> > ok 12 - mutexThread 1 epicsMutexLock returned 0
> > ok 13 - mutexThread 2 epicsMutexLock returned 0
> > ok 14 - mutexThread 0 epicsMutexLock returned 0
> > ok 15 - mutexThread 1 epicsMutexLock returned 0
> > ok 16 - mutexThread 2 epicsMutexLock returned 0
> > ok 17 - mutexThread 0 epicsMutexLock returned 0
> > ok 18 - mutexThread 1 epicsMutexLock returned 0
> > ok 19 - mutexThread 2 epicsMutexLock returned 0
> > # mutexThread 0 exiting
> > # mutexThread 1 exiting
> > # mutexThread 2 exiting
> > # lock()*1/unlock()*1 takes 0.036360 microseconds
> > # lock()*2/unlock()*2 takes 0.061830 microseconds
> > # lock()*4/unlock()*4 takes 0.122050 microseconds
> > 
> >     Results
> >     =======
> >        Tests: 19
> >       Passed: 19 = 100%
> > [williams@dragon O.linux-x86_64]$
> > 
> > [williams@dragon O.linux-x86_64]$ ./epicsStdioTest
> > 1..163
> > ok  1 - epicsSnprintf(size=1) = 46
> > ok  2 - buffer = ''
> > ok  3 - length = 0
> > ok  4 - epicsSnprintf(size=2) = 46
> > ok  5 - buffer = 'i'
> > ok  6 - length = 1
> > ok  7 - epicsSnprintf(size=3) = 46
> > ok  8 - buffer = 'in'
> > ok  9 - length = 2
> > ok 10 - epicsSnprintf(size=4) = 46
> > ok 11 - buffer = 'int'
> > ok 12 - length = 3
> > ok 13 - epicsSnprintf(size=5) = 46
> > ok 14 - buffer = 'int '
> > ok 15 - length = 4
> > ok 16 - epicsSnprintf(size=6) = 46
> > ok 17 - buffer = 'int 1'
> > ok 18 - length = 5
> > ok 19 - epicsSnprintf(size=7) = 46
> > ok 20 - buffer = 'int 12'
> > ok 21 - length = 6
> > ok 22 - epicsSnprintf(size=8) = 46
> > ok 23 - buffer = 'int 123'
> > ok 24 - length = 7
> > ok 25 - epicsSnprintf(size=9) = 46
> > ok 26 - buffer = 'int 1234'
> > ok 27 - length = 8
> > ok 28 - epicsSnprintf(size=10) = 46
> > ok 29 - buffer = 'int 1234 '
> > ok 30 - length = 9
> > ok 31 - epicsSnprintf(size=11) = 46
> > ok 32 - buffer = 'int 1234 f'
> > ok 33 - length = 10
> > ok 34 - epicsSnprintf(size=12) = 46
> > ok 35 - buffer = 'int 1234 fl'
> > ok 36 - length = 11
> > ok 37 - epicsSnprintf(size=13) = 46
> > ok 38 - buffer = 'int 1234 flo'
> > ok 39 - length = 12
> > ok 40 - epicsSnprintf(size=14) = 46
> > ok 41 - buffer = 'int 1234 floa'
> > ok 42 - length = 13
> > ok 43 - epicsSnprintf(size=15) = 46
> > ok 44 - buffer = 'int 1234 float'
> > ok 45 - length = 14
> > ok 46 - epicsSnprintf(size=16) = 46
> > ok 47 - buffer = 'int 1234 float '
> > ok 48 - length = 15
> > ok 49 - epicsSnprintf(size=17) = 46
> > ok 50 - buffer = 'int 1234 float 1'
> > ok 51 - length = 16
> > ok 52 - epicsSnprintf(size=18) = 46
> > ok 53 - buffer = 'int 1234 float 1.'
> > ok 54 - length = 17
> > ok 55 - epicsSnprintf(size=19) = 46
> > ok 56 - buffer = 'int 1234 float 1.2'
> > ok 57 - length = 18
> > ok 58 - epicsSnprintf(size=20) = 46
> > ok 59 - buffer = 'int 1234 float 1.23'
> > ok 60 - length = 19
> > ok 61 - epicsSnprintf(size=21) = 46
> > ok 62 - buffer = 'int 1234 float 1.23e'
> > ok 63 - length = 20
> > ok 64 - epicsSnprintf(size=22) = 46
> > ok 65 - buffer = 'int 1234 float 1.23e+'
> > ok 66 - length = 21
> > ok 67 - epicsSnprintf(size=23) = 46
> > ok 68 - buffer = 'int 1234 float 1.23e+0'
> > ok 69 - length = 22
> > ok 70 - epicsSnprintf(size=24) = 46
> > ok 71 - buffer = 'int 1234 float 1.23e+04'
> > ok 72 - length = 23
> > ok 73 - epicsSnprintf(size=25) = 46
> > ok 74 - buffer = 'int 1234 float 1.23e+04 '
> > ok 75 - length = 24
> > ok 76 - epicsSnprintf(size=26) = 46
> > ok 77 - buffer = 'int 1234 float 1.23e+04 s'
> > ok 78 - length = 25
> > ok 79 - epicsSnprintf(size=27) = 46
> > ok 80 - buffer = 'int 1234 float 1.23e+04 st'
> > ok 81 - length = 26
> > ok 82 - epicsSnprintf(size=28) = 46
> > ok 83 - buffer = 'int 1234 float 1.23e+04 str'
> > ok 84 - length = 27
> > ok 85 - epicsSnprintf(size=29) = 46
> > ok 86 - buffer = 'int 1234 float 1.23e+04 stri'
> > ok 87 - length = 28
> > ok 88 - epicsSnprintf(size=30) = 46
> > ok 89 - buffer = 'int 1234 float 1.23e+04 strin'
> > ok 90 - length = 29
> > ok 91 - epicsSnprintf(size=31) = 46
> > ok 92 - buffer = 'int 1234 float 1.23e+04 string'
> > ok 93 - length = 30
> > ok 94 - epicsSnprintf(size=32) = 46
> > ok 95 - buffer = 'int 1234 float 1.23e+04 string '
> > ok 96 - length = 31
> > ok 97 - epicsSnprintf(size=33) = 46
> > ok 98 - buffer = 'int 1234 float 1.23e+04 string O'
> > ok 99 - length = 32
> > ok 100 - epicsSnprintf(size=34) = 46
> > ok 101 - buffer = 'int 1234 float 1.23e+04 string On'
> > ok 102 - length = 33
> > ok 103 - epicsSnprintf(size=35) = 46
> > ok 104 - buffer = 'int 1234 float 1.23e+04 string One'
> > ok 105 - length = 34
> > ok 106 - epicsSnprintf(size=36) = 46
> > ok 107 - buffer = 'int 1234 float 1.23e+04 string OneT'
> > ok 108 - length = 35
> > ok 109 - epicsSnprintf(size=37) = 46
> > ok 110 - buffer = 'int 1234 float 1.23e+04 string OneTw'
> > ok 111 - length = 36
> > ok 112 - epicsSnprintf(size=38) = 46
> > ok 113 - buffer = 'int 1234 float 1.23e+04 string OneTwo'
> > ok 114 - length = 37
> > ok 115 - epicsSnprintf(size=39) = 46
> > ok 116 - buffer = 'int 1234 float 1.23e+04 string OneTwoT'
> > ok 117 - length = 38
> > ok 118 - epicsSnprintf(size=40) = 46
> > ok 119 - buffer = 'int 1234 float 1.23e+04 string OneTwoTh'
> > ok 120 - length = 39
> > ok 121 - epicsSnprintf(size=41) = 46
> > ok 122 - buffer = 'int 1234 float 1.23e+04 string OneTwoThr'
> > ok 123 - length = 40
> > ok 124 - epicsSnprintf(size=42) = 46
> > ok 125 - buffer = 'int 1234 float 1.23e+04 string OneTwoThre'
> > ok 126 - length = 41
> > ok 127 - epicsSnprintf(size=43) = 46
> > ok 128 - buffer = 'int 1234 float 1.23e+04 string OneTwoThree'
> > ok 129 - length = 42
> > ok 130 - epicsSnprintf(size=44) = 46
> > ok 131 - buffer = 'int 1234 float 1.23e+04 string OneTwoThreeF'
> > ok 132 - length = 43
> > ok 133 - epicsSnprintf(size=45) = 46
> > ok 134 - buffer = 'int 1234 float 1.23e+04 string OneTwoThreeFo'
> > ok 135 - length = 44
> > ok 136 - epicsSnprintf(size=46) = 46
> > ok 137 - buffer = 'int 1234 float 1.23e+04 string OneTwoThreeFou'
> > ok 138 - length = 45
> > ok 139 - epicsSnprintf(size=47) = 46
> > ok 140 - buffer = 'int 1234 float 1.23e+04 string OneTwoThreeFour'
> > ok 141 - length = 46
> > ok 142 - epicsSnprintf(size=48) = 46
> > ok 143 - buffer = 'int 1234 float 1.23e+04 string OneTwoThreeFour'
> > ok 144 - length = 46
> > ok 145 - epicsSnprintf(size=49) = 46
> > ok 146 - buffer = 'int 1234 float 1.23e+04 string OneTwoThreeFour'
> > ok 147 - length = 46
> > ok 148 - epicsSnprintf(size=50) = 46
> > ok 149 - buffer = 'int 1234 float 1.23e+04 string OneTwoThreeFour'
> > ok 150 - length = 46
> > ok 151 - epicsGetStdout() == stdout
> > ok 152 - (stream = fopen(report, "w")) != NULL
> > ok 153 - stdout == stream
> > ok 154 - epicsGetStdout() == realStdout
> > ok 155 - stdout == realStdout
> > ok 156 - !fclose(stream)
> > ok 157 - (stream = fopen(report, "r")) != NULL
> > ok 158 - fgets(linebuf, buflen, stream) != NULL
> > ok 159 - First line correct
> > ok 160 - fgets(linebuf, buflen, stream) != NULL
> > ok 161 - Second line
> > ok 162 - File ends
> > ok 163 - !fclose(stream)
> > 
> >     Results
> >     =======
> >        Tests: 163
> >       Passed: 163 = 100%
> > [williams@dragon O.linux-x86_64]$
> > 
> > 
> > [williams@dragon O.linux-x86_64]$ ./epicsStringTest
> > ok  1 - char 0xff -> "\377" -> 0xff
> > ok  2 - char 0xfe -> "\376" -> 0xfe
> > ok  3 - char 0xfd -> "\375" -> 0xfd
> > ok  4 - char 0xfc -> "\374" -> 0xfc
> > ok  5 - char 0xfb -> "\373" -> 0xfb
> > ok  6 - char 0xfa -> "\372" -> 0xfa
> > ok  7 - char 0xf9 -> "\371" -> 0xf9
> > ok  8 - char 0xf8 -> "\370" -> 0xf8
> > ok  9 - char 0xf7 -> "\367" -> 0xf7
> > ok 10 - char 0xf6 -> "\366" -> 0xf6
> > ok 11 - char 0xf5 -> "\365" -> 0xf5
> > ok 12 - char 0xf4 -> "\364" -> 0xf4
> > ok 13 - char 0xf3 -> "\363" -> 0xf3
> > ok 14 - char 0xf2 -> "\362" -> 0xf2
> > ok 15 - char 0xf1 -> "\361" -> 0xf1
> > ok 16 - char 0xf0 -> "\360" -> 0xf0
> > ok 17 - char 0xef -> "\357" -> 0xef
> > ok 18 - char 0xee -> "\356" -> 0xee
> > ok 19 - char 0xed -> "\355" -> 0xed
> > ok 20 - char 0xec -> "\354" -> 0xec
> > ok 21 - char 0xeb -> "\353" -> 0xeb
> > ok 22 - char 0xea -> "\352" -> 0xea
> > ok 23 - char 0xe9 -> "\351" -> 0xe9
> > ok 24 - char 0xe8 -> "\350" -> 0xe8
> > ok 25 - char 0xe7 -> "\347" -> 0xe7
> > ok 26 - char 0xe6 -> "\346" -> 0xe6
> > ok 27 - char 0xe5 -> "\345" -> 0xe5
> > ok 28 - char 0xe4 -> "\344" -> 0xe4
> > ok 29 - char 0xe3 -> "\343" -> 0xe3
> > ok 30 - char 0xe2 -> "\342" -> 0xe2
> > ok 31 - char 0xe1 -> "\341" -> 0xe1
> > ok 32 - char 0xe0 -> "\340" -> 0xe0
> > ok 33 - char 0xdf -> "\337" -> 0xdf
> > ok 34 - char 0xde -> "\336" -> 0xde
> > ok 35 - char 0xdd -> "\335" -> 0xdd
> > ok 36 - char 0xdc -> "\334" -> 0xdc
> > ok 37 - char 0xdb -> "\333" -> 0xdb
> > ok 38 - char 0xda -> "\332" -> 0xda
> > ok 39 - char 0xd9 -> "\331" -> 0xd9
> > ok 40 - char 0xd8 -> "\330" -> 0xd8
> > ok 41 - char 0xd7 -> "\327" -> 0xd7
> > ok 42 - char 0xd6 -> "\326" -> 0xd6
> > ok 43 - char 0xd5 -> "\325" -> 0xd5
> > ok 44 - char 0xd4 -> "\324" -> 0xd4
> > ok 45 - char 0xd3 -> "\323" -> 0xd3
> > ok 46 - char 0xd2 -> "\322" -> 0xd2
> > ok 47 - char 0xd1 -> "\321" -> 0xd1
> > ok 48 - char 0xd0 -> "\320" -> 0xd0
> > ok 49 - char 0xcf -> "\317" -> 0xcf
> > ok 50 - char 0xce -> "\316" -> 0xce
> > ok 51 - char 0xcd -> "\315" -> 0xcd
> > ok 52 - char 0xcc -> "\314" -> 0xcc
> > ok 53 - char 0xcb -> "\313" -> 0xcb
> > ok 54 - char 0xca -> "\312" -> 0xca
> > ok 55 - char 0xc9 -> "\311" -> 0xc9
> > ok 56 - char 0xc8 -> "\310" -> 0xc8
> > ok 57 - char 0xc7 -> "\307" -> 0xc7
> > ok 58 - char 0xc6 -> "\306" -> 0xc6
> > ok 59 - char 0xc5 -> "\305" -> 0xc5
> > ok 60 - char 0xc4 -> "\304" -> 0xc4
> > ok 61 - char 0xc3 -> "\303" -> 0xc3
> > ok 62 - char 0xc2 -> "\302" -> 0xc2
> > ok 63 - char 0xc1 -> "\301" -> 0xc1
> > ok 64 - char 0xc0 -> "\300" -> 0xc0
> > ok 65 - char 0xbf -> "\277" -> 0xbf
> > ok 66 - char 0xbe -> "\276" -> 0xbe
> > ok 67 - char 0xbd -> "\275" -> 0xbd
> > ok 68 - char 0xbc -> "\274" -> 0xbc
> > ok 69 - char 0xbb -> "\273" -> 0xbb
> > ok 70 - char 0xba -> "\272" -> 0xba
> > ok 71 - char 0xb9 -> "\271" -> 0xb9
> > ok 72 - char 0xb8 -> "\270" -> 0xb8
> > ok 73 - char 0xb7 -> "\267" -> 0xb7
> > ok 74 - char 0xb6 -> "\266" -> 0xb6
> > ok 75 - char 0xb5 -> "\265" -> 0xb5
> > ok 76 - char 0xb4 -> "\264" -> 0xb4
> > ok 77 - char 0xb3 -> "\263" -> 0xb3
> > ok 78 - char 0xb2 -> "\262" -> 0xb2
> > ok 79 - char 0xb1 -> "\261" -> 0xb1
> > ok 80 - char 0xb0 -> "\260" -> 0xb0
> > ok 81 - char 0xaf -> "\257" -> 0xaf
> > ok 82 - char 0xae -> "\256" -> 0xae
> > ok 83 - char 0xad -> "\255" -> 0xad
> > ok 84 - char 0xac -> "\254" -> 0xac
> > ok 85 - char 0xab -> "\253" -> 0xab
> > ok 86 - char 0xaa -> "\252" -> 0xaa
> > ok 87 - char 0xa9 -> "\251" -> 0xa9
> > ok 88 - char 0xa8 -> "\250" -> 0xa8
> > ok 89 - char 0xa7 -> "\247" -> 0xa7
> > ok 90 - char 0xa6 -> "\246" -> 0xa6
> > ok 91 - char 0xa5 -> "\245" -> 0xa5
> > ok 92 - char 0xa4 -> "\244" -> 0xa4
> > ok 93 - char 0xa3 -> "\243" -> 0xa3
> > ok 94 - char 0xa2 -> "\242" -> 0xa2
> > ok 95 - char 0xa1 -> "\241" -> 0xa1
> > ok 96 - char 0xa0 -> "\240" -> 0xa0
> > ok 97 - char 0x9f -> "\237" -> 0x9f
> > ok 98 - char 0x9e -> "\236" -> 0x9e
> > ok 99 - char 0x9d -> "\235" -> 0x9d
> > ok 100 - char 0x9c -> "\234" -> 0x9c
> > ok 101 - char 0x9b -> "\233" -> 0x9b
> > ok 102 - char 0x9a -> "\232" -> 0x9a
> > ok 103 - char 0x99 -> "\231" -> 0x99
> > ok 104 - char 0x98 -> "\230" -> 0x98
> > ok 105 - char 0x97 -> "\227" -> 0x97
> > ok 106 - char 0x96 -> "\226" -> 0x96
> > ok 107 - char 0x95 -> "\225" -> 0x95
> > ok 108 - char 0x94 -> "\224" -> 0x94
> > ok 109 - char 0x93 -> "\223" -> 0x93
> > ok 110 - char 0x92 -> "\222" -> 0x92
> > ok 111 - char 0x91 -> "\221" -> 0x91
> > ok 112 - char 0x90 -> "\220" -> 0x90
> > ok 113 - char 0x8f -> "\217" -> 0x8f
> > ok 114 - char 0x8e -> "\216" -> 0x8e
> > ok 115 - char 0x8d -> "\215" -> 0x8d
> > ok 116 - char 0x8c -> "\214" -> 0x8c
> > ok 117 - char 0x8b -> "\213" -> 0x8b
> > ok 118 - char 0x8a -> "\212" -> 0x8a
> > ok 119 - char 0x89 -> "\211" -> 0x89
> > ok 120 - char 0x88 -> "\210" -> 0x88
> > ok 121 - char 0x87 -> "\207" -> 0x87
> > ok 122 - char 0x86 -> "\206" -> 0x86
> > ok 123 - char 0x85 -> "\205" -> 0x85
> > ok 124 - char 0x84 -> "\204" -> 0x84
> > ok 125 - char 0x83 -> "\203" -> 0x83
> > ok 126 - char 0x82 -> "\202" -> 0x82
> > ok 127 - char 0x81 -> "\201" -> 0x81
> > ok 128 - char 0x80 -> "\200" -> 0x80
> > ok 129 - char 0x7f -> "\177" -> 0x7f
> > ok 130 - char 0x7e -> "~" -> 0x7e
> > ok 131 - char 0x7d -> "}" -> 0x7d
> > ok 132 - char 0x7c -> "|" -> 0x7c
> > ok 133 - char 0x7b -> "{" -> 0x7b
> > ok 134 - char 0x7a -> "z" -> 0x7a
> > ok 135 - char 0x79 -> "y" -> 0x79
> > ok 136 - char 0x78 -> "x" -> 0x78
> > ok 137 - char 0x77 -> "w" -> 0x77
> > ok 138 - char 0x76 -> "v" -> 0x76
> > ok 139 - char 0x75 -> "u" -> 0x75
> > ok 140 - char 0x74 -> "t" -> 0x74
> > ok 141 - char 0x73 -> "s" -> 0x73
> > ok 142 - char 0x72 -> "r" -> 0x72
> > ok 143 - char 0x71 -> "q" -> 0x71
> > ok 144 - char 0x70 -> "p" -> 0x70
> > ok 145 - char 0x6f -> "o" -> 0x6f
> > ok 146 - char 0x6e -> "n" -> 0x6e
> > ok 147 - char 0x6d -> "m" -> 0x6d
> > ok 148 - char 0x6c -> "l" -> 0x6c
> > ok 149 - char 0x6b -> "k" -> 0x6b
> > ok 150 - char 0x6a -> "j" -> 0x6a
> > ok 151 - char 0x69 -> "i" -> 0x69
> > ok 152 - char 0x68 -> "h" -> 0x68
> > ok 153 - char 0x67 -> "g" -> 0x67
> > ok 154 - char 0x66 -> "f" -> 0x66
> > ok 155 - char 0x65 -> "e" -> 0x65
> > ok 156 - char 0x64 -> "d" -> 0x64
> > ok 157 - char 0x63 -> "c" -> 0x63
> > ok 158 - char 0x62 -> "b" -> 0x62
> > ok 159 - char 0x61 -> "a" -> 0x61
> > ok 160 - char 0x60 -> "`" -> 0x60
> > ok 161 - char 0x5f -> "_" -> 0x5f
> > ok 162 - char 0x5e -> "^" -> 0x5e
> > ok 163 - char 0x5d -> "]" -> 0x5d
> > ok 164 - char 0x5c -> "\\" -> 0x5c
> > ok 165 - char 0x5b -> "[" -> 0x5b
> > ok 166 - char 0x5a -> "Z" -> 0x5a
> > ok 167 - char 0x59 -> "Y" -> 0x59
> > ok 168 - char 0x58 -> "X" -> 0x58
> > ok 169 - char 0x57 -> "W" -> 0x57
> > ok 170 - char 0x56 -> "V" -> 0x56
> > ok 171 - char 0x55 -> "U" -> 0x55
> > ok 172 - char 0x54 -> "T" -> 0x54
> > ok 173 - char 0x53 -> "S" -> 0x53
> > ok 174 - char 0x52 -> "R" -> 0x52
> > ok 175 - char 0x51 -> "Q" -> 0x51
> > ok 176 - char 0x50 -> "P" -> 0x50
> > ok 177 - char 0x4f -> "O" -> 0x4f
> > ok 178 - char 0x4e -> "N" -> 0x4e
> > ok 179 - char 0x4d -> "M" -> 0x4d
> > ok 180 - char 0x4c -> "L" -> 0x4c
> > ok 181 - char 0x4b -> "K" -> 0x4b
> > ok 182 - char 0x4a -> "J" -> 0x4a
> > ok 183 - char 0x49 -> "I" -> 0x49
> > ok 184 - char 0x48 -> "H" -> 0x48
> > ok 185 - char 0x47 -> "G" -> 0x47
> > ok 186 - char 0x46 -> "F" -> 0x46
> > ok 187 - char 0x45 -> "E" -> 0x45
> > ok 188 - char 0x44 -> "D" -> 0x44
> > ok 189 - char 0x43 -> "C" -> 0x43
> > ok 190 - char 0x42 -> "B" -> 0x42
> > ok 191 - char 0x41 -> "A" -> 0x41
> > ok 192 - char 0x40 -> "@" -> 0x40
> > ok 193 - char 0x3f -> "?" -> 0x3f
> > ok 194 - char 0x3e -> ">" -> 0x3e
> > ok 195 - char 0x3d -> "=" -> 0x3d
> > ok 196 - char 0x3c -> "<" -> 0x3c
> > ok 197 - char 0x3b -> ";" -> 0x3b
> > ok 198 - char 0x3a -> ":" -> 0x3a
> > ok 199 - char 0x39 -> "9" -> 0x39
> > ok 200 - char 0x38 -> "8" -> 0x38
> > ok 201 - char 0x37 -> "7" -> 0x37
> > ok 202 - char 0x36 -> "6" -> 0x36
> > ok 203 - char 0x35 -> "5" -> 0x35
> > ok 204 - char 0x34 -> "4" -> 0x34
> > ok 205 - char 0x33 -> "3" -> 0x33
> > ok 206 - char 0x32 -> "2" -> 0x32
> > ok 207 - char 0x31 -> "1" -> 0x31
> > ok 208 - char 0x30 -> "0" -> 0x30
> > ok 209 - char 0x2f -> "/" -> 0x2f
> > ok 210 - char 0x2e -> "." -> 0x2e
> > ok 211 - char 0x2d -> "-" -> 0x2d
> > ok 212 - char 0x2c -> "," -> 0x2c
> > ok 213 - char 0x2b -> "+" -> 0x2b
> > ok 214 - char 0x2a -> "*" -> 0x2a
> > ok 215 - char 0x29 -> ")" -> 0x29
> > ok 216 - char 0x28 -> "(" -> 0x28
> > ok 217 - char 0x27 -> "\'" -> 0x27
> > ok 218 - char 0x26 -> "&" -> 0x26
> > ok 219 - char 0x25 -> "%" -> 0x25
> > ok 220 - char 0x24 -> "$" -> 0x24
> > ok 221 - char 0x23 -> "#" -> 0x23
> > ok 222 - char 0x22 -> "\"" -> 0x22
> > ok 223 - char 0x21 -> "!" -> 0x21
> > ok 224 - char 0x20 -> " " -> 0x20
> > ok 225 - char 0x1f -> "\037" -> 0x1f
> > ok 226 - char 0x1e -> "\036" -> 0x1e
> > ok 227 - char 0x1d -> "\035" -> 0x1d
> > ok 228 - char 0x1c -> "\034" -> 0x1c
> > ok 229 - char 0x1b -> "\033" -> 0x1b
> > ok 230 - char 0x1a -> "\032" -> 0x1a
> > ok 231 - char 0x19 -> "\031" -> 0x19
> > ok 232 - char 0x18 -> "\030" -> 0x18
> > ok 233 - char 0x17 -> "\027" -> 0x17
> > ok 234 - char 0x16 -> "\026" -> 0x16
> > ok 235 - char 0x15 -> "\025" -> 0x15
> > ok 236 - char 0x14 -> "\024" -> 0x14
> > ok 237 - char 0x13 -> "\023" -> 0x13
> > ok 238 - char 0x12 -> "\022" -> 0x12
> > ok 239 - char 0x11 -> "\021" -> 0x11
> > ok 240 - char 0x10 -> "\020" -> 0x10
> > ok 241 - char 0x0f -> "\017" -> 0x0f
> > ok 242 - char 0x0e -> "\016" -> 0x0e
> > ok 243 - char 0x0d -> "\r" -> 0x0d
> > ok 244 - char 0x0c -> "\f" -> 0x0c
> > ok 245 - char 0x0b -> "\v" -> 0x0b
> > ok 246 - char 0x0a -> "\n" -> 0x0a
> > ok 247 - char 0x09 -> "\t" -> 0x09
> > ok 248 - char 0x08 -> "\b" -> 0x08
> > ok 249 - char 0x07 -> "\a" -> 0x07
> > ok 250 - char 0x06 -> "\006" -> 0x06
> > ok 251 - char 0x05 -> "\005" -> 0x05
> > ok 252 - char 0x04 -> "\004" -> 0x04
> > ok 253 - char 0x03 -> "\003" -> 0x03
> > ok 254 - char 0x02 -> "\002" -> 0x02
> > ok 255 - char 0x01 -> "\001" -> 0x01
> > ok 256 - char 0x00 -> "\000" -> 0x00
> > ok 257 - epicsStrnCaseCmp("","",0)==0
> > ok 258 - epicsStrnCaseCmp("","",1)==0
> > ok 259 - epicsStrnCaseCmp(" ","",1)<0
> > ok 260 - epicsStrnCaseCmp(""," ",1)>0
> > ok 261 - epicsStrnCaseCmp("a","A",1)==0
> > ok 262 - epicsStrnCaseCmp("a","A",2)==0
> > ok 263 - epicsStrnCaseCmp("abcd","ABCD",2)==0
> > ok 264 - epicsStrnCaseCmp("abcd","ABCD",4)==0
> > ok 265 - epicsStrnCaseCmp("abcd","ABCD",1000)==0
> > ok 266 - epicsStrnCaseCmp("abcd","ABCDE",2)==0
> > ok 267 - epicsStrnCaseCmp("abcd","ABCDE",4)==0
> > ok 268 - epicsStrnCaseCmp("abcd","ABCDE",1000)>0
> > ok 269 - epicsStrnCaseCmp("abcde","ABCD",2)==0
> > ok 270 - epicsStrnCaseCmp("abcde","ABCD",4)==0
> > ok 271 - epicsStrnCaseCmp("abcde","ABCD",1000)<0
> > ok 272 - epicsStrCaseCmp("","")==0
> > ok 273 - epicsStrCaseCmp("a","A")==0
> > ok 274 - epicsStrCaseCmp("abcd","ABCD")==0
> > ok 275 - epicsStrCaseCmp("abcd","ABCDE")!=0
> > ok 276 - epicsStrCaseCmp("abcde","ABCD")!=0
> > ok 277 - epicsStrCaseCmp("abcde","ABCDF")!=0
> > 
> >     Results
> >     =======
> >        Tests: 277
> >       Passed: 277 = 100%
> > [williams@dragon O.linux-x86_64]$
> > 
> > 
> > [williams@dragon O.linux-x86_64]$ ./epicsThreadPriorityTest
> > 1..7
> > ok  1 - task 0x503340 epicsEventWait returned 0
> > ok  2 - epicsEventWaitWithTimeout returned 0
> > ok  3 - task 0x503340 epicsEventWait returned 0
> > ok  4 - epicsEventWaitWithTimeout returned 0
> > # No strict priority scheduler
> > ok  5 - task 0x503340 epicsEventWait returned 0
> > ok  6 - epicsEventWaitWithTimeout returned 0
> > ok  7 - epicsEventWait returned 0
> > 
> >     Results
> >     =======
> >        Tests: 7
> >       Passed:  7 = 100%
> > [williams@dragon O.linux-x86_64]$
> > 
> > 
> > 
> > [williams@dragon O.linux-x86_64]$ ./epicsThreadPrivateTest
> > 1..5
> > ok  1 - &var == priv.get()
> > ok  2 - 0 == priv.get ()
> > ok  3 - &var == priv.get ()
> > ok  4 - &var == priv.get()
> > ok  5 - 0 == priv.get()
> > 
> >     Results
> >     =======
> >        Tests: 5
> >       Passed:  5 = 100%
> > [williams@dragon O.linux-x86_64]$
> > 
> > 
> > [williams@dragon O.linux-x86_64]$ ./epicsThreadTest
> > 1..8
> > ok  1 - pget == pset
> > ok  2 - thread.getPriority() == epicsThreadGetPriority(self)
> > ok  3 - pget == pset
> > ok  4 - thread.getPriority() == epicsThreadGetPriority(self)
> > ok  5 - pget == pset
> > ok  6 - thread.getPriority() == epicsThreadGetPriority(self)
> > ok  7 - threadA epicsThreadIsOkToBlock() = 0
> > ok  8 - threadB epicsThreadIsOkToBlock() = 1
> > 
> >     Results
> >     =======
> >        Tests: 8
> >       Passed:  8 = 100%
> > [williams@dragon O.linux-x86_64]$
> > 
> > 
> > [williams@dragon O.linux-x86_64]$ ./epicsTimerTest
> > 1..33
> > # Testing timer accuracy
> > ok  1 - percentError < messageThresh
> > ok  2 - percentError < messageThresh
> > ok  3 - percentError < messageThresh
> > ok  4 - percentError < messageThresh
> > ok  5 - percentError < messageThresh
> > ok  6 - percentError < messageThresh
> > ok  7 - percentError < messageThresh
> > ok  8 - percentError < messageThresh
> > ok  9 - percentError < messageThresh
> > ok 10 - percentError < messageThresh
> > ok 11 - percentError < messageThresh
> > ok 12 - percentError < messageThresh
> > ok 13 - percentError < messageThresh
> > ok 14 - percentError < messageThresh
> > ok 15 - percentError < messageThresh
> > ok 16 - percentError < messageThresh
> > ok 17 - percentError < messageThresh
> > ok 18 - percentError < messageThresh
> > ok 19 - percentError < messageThresh
> > ok 20 - percentError < messageThresh
> > ok 21 - percentError < messageThresh
> > ok 22 - percentError < messageThresh
> > ok 23 - percentError < messageThresh
> > ok 24 - percentError < messageThresh
> > ok 25 - percentError < messageThresh
> > # average timer delay error -3.746080 ms
> > # Testing timer cancellation
> > # starting 25 timers
> > ok 26 - cancelVerify::expireCount == 0
> > ok 27 - cancelVerify::cancellCount == 0
> > # cancelling timers
> > ok 28 - cancelVerify::expireCount == 0
> > ok 29 - cancelVerify::cancellCount == nTimers
> > # waiting until after timers should have expired
> > ok 30 - cancelVerify::expireCount == 0
> > ok 31 - cancelVerify::cancellCount == nTimers
> > # Testing timer destruction in expire()
> > # starting 25 timers
> > # waiting until all timers should have expired
> > ok 32 - expireDestroVerify::destroyCount == nTimers
> > # Testing periodic timers
> > # starting 25 timers
> > # waiting until all timers should have expired
> > ok 33 - All timers expiring
> > 
> >     Results
> >     =======
> >        Tests: 33
> >       Passed: 33 = 100%
> > [williams@dragon O.linux-x86_64]$
> > 
> > 
> > [williams@dragon O.linux-x86_64]$ ./epicsTimeTest
> > 1..187
> > ok  1 - diff <= precisionEPICS + precisionNTP
> > ok  2 - nanosecond overflow throws
> > ok  3 - undefined => '<undefined>'
> > ok  4 - '%Y-%m-%d %S.%09f' => '1990-01-01 00.098765432'
> > ok  5 - '%S.%04f' => '00.0988'
> > ok  6 - '%S.%05f' => '00.09877'
> > ok  7 - bad format => '<invalid format>'
> > # Running 10 loops
> > # 100000 calls to epicsTime::getCurrent() averaged  1.713 usec each
> > ok  8 - copy == end
> > ok  9 - copy <= end
> > ok 10 - copy >= end
> > ok 11 - end > begin
> > ok 12 - end >= begin
> > ok 13 - begin != end
> > ok 14 - begin < end
> > ok 15 - begin <= end
> > ok 16 - end - end == 0
> > ok 17 - end - begin ~= diff
> > ok 18 - begin + 0 == begin
> > ok 19 - begin + diff == end
> > ok 20 - end - 0 == end
> > ok 21 - end - diff == begin
> > ok 22 - (begin += diff) == end
> > ok 23 - (end -= diff) == begin
> > ok 24 - beginANSI + diff == end
> > ok 25 - beginTS + diff == end
> > ok 26 - copy == end
> > ok 27 - copy <= end
> > ok 28 - copy >= end
> > ok 29 - end > begin
> > ok 30 - end >= begin
> > ok 31 - begin != end
> > ok 32 - begin < end
> > ok 33 - begin <= end
> > ok 34 - end - end == 0
> > ok 35 - end - begin ~= diff
> > ok 36 - begin + 0 == begin
> > ok 37 - begin + diff == end
> > ok 38 - end - 0 == end
> > ok 39 - end - diff == begin
> > ok 40 - (begin += diff) == end
> > ok 41 - (end -= diff) == begin
> > ok 42 - beginANSI + diff == end
> > ok 43 - beginTS + diff == end
> > ok 44 - copy == end
> > ok 45 - copy <= end
> > ok 46 - copy >= end
> > ok 47 - end > begin
> > ok 48 - end >= begin
> > ok 49 - begin != end
> > ok 50 - begin < end
> > ok 51 - begin <= end
> > ok 52 - end - end == 0
> > ok 53 - end - begin ~= diff
> > ok 54 - begin + 0 == begin
> > ok 55 - begin + diff == end
> > ok 56 - end - 0 == end
> > ok 57 - end - diff == begin
> > ok 58 - (begin += diff) == end
> > ok 59 - (end -= diff) == begin
> > ok 60 - beginANSI + diff == end
> > ok 61 - beginTS + diff == end
> > ok 62 - copy == end
> > ok 63 - copy <= end
> > ok 64 - copy >= end
> > ok 65 - end > begin
> > ok 66 - end >= begin
> > ok 67 - begin != end
> > ok 68 - begin < end
> > ok 69 - begin <= end
> > ok 70 - end - end == 0
> > ok 71 - end - begin ~= diff
> > ok 72 - begin + 0 == begin
> > ok 73 - begin + diff == end
> > ok 74 - end - 0 == end
> > ok 75 - end - diff == begin
> > ok 76 - (begin += diff) == end
> > ok 77 - (end -= diff) == begin
> > ok 78 - beginANSI + diff == end
> > ok 79 - beginTS + diff == end
> > ok 80 - copy == end
> > ok 81 - copy <= end
> > ok 82 - copy >= end
> > ok 83 - end > begin
> > ok 84 - end >= begin
> > ok 85 - begin != end
> > ok 86 - begin < end
> > ok 87 - begin <= end
> > ok 88 - end - end == 0
> > ok 89 - end - begin ~= diff
> > ok 90 - begin + 0 == begin
> > ok 91 - begin + diff == end
> > ok 92 - end - 0 == end
> > ok 93 - end - diff == begin
> > ok 94 - (begin += diff) == end
> > ok 95 - (end -= diff) == begin
> > ok 96 - beginANSI + diff == end
> > ok 97 - beginTS + diff == end
> > ok 98 - copy == end
> > ok 99 - copy <= end
> > ok 100 - copy >= end
> > ok 101 - end > begin
> > ok 102 - end >= begin
> > ok 103 - begin != end
> > ok 104 - begin < end
> > ok 105 - begin <= end
> > ok 106 - end - end == 0
> > ok 107 - end - begin ~= diff
> > ok 108 - begin + 0 == begin
> > ok 109 - begin + diff == end
> > ok 110 - end - 0 == end
> > ok 111 - end - diff == begin
> > ok 112 - (begin += diff) == end
> > ok 113 - (end -= diff) == begin
> > ok 114 - beginANSI + diff == end
> > ok 115 - beginTS + diff == end
> > ok 116 - copy == end
> > ok 117 - copy <= end
> > ok 118 - copy >= end
> > ok 119 - end > begin
> > ok 120 - end >= begin
> > ok 121 - begin != end
> > ok 122 - begin < end
> > ok 123 - begin <= end
> > ok 124 - end - end == 0
> > ok 125 - end - begin ~= diff
> > ok 126 - begin + 0 == begin
> > ok 127 - begin + diff == end
> > ok 128 - end - 0 == end
> > ok 129 - end - diff == begin
> > ok 130 - (begin += diff) == end
> > ok 131 - (end -= diff) == begin
> > ok 132 - beginANSI + diff == end
> > ok 133 - beginTS + diff == end
> > ok 134 - copy == end
> > ok 135 - copy <= end
> > ok 136 - copy >= end
> > ok 137 - end > begin
> > ok 138 - end >= begin
> > ok 139 - begin != end
> > ok 140 - begin < end
> > ok 141 - begin <= end
> > ok 142 - end - end == 0
> > ok 143 - end - begin ~= diff
> > ok 144 - begin + 0 == begin
> > ok 145 - begin + diff == end
> > ok 146 - end - 0 == end
> > ok 147 - end - diff == begin
> > ok 148 - (begin += diff) == end
> > ok 149 - (end -= diff) == begin
> > ok 150 - beginANSI + diff == end
> > ok 151 - beginTS + diff == end
> > ok 152 - copy == end
> > ok 153 - copy <= end
> > ok 154 - copy >= end
> > ok 155 - end > begin
> > ok 156 - end >= begin
> > ok 157 - begin != end
> > ok 158 - begin < end
> > ok 159 - begin <= end
> > ok 160 - end - end == 0
> > ok 161 - end - begin ~= diff
> > ok 162 - begin + 0 == begin
> > ok 163 - begin + diff == end
> > ok 164 - end - 0 == end
> > ok 165 - end - diff == begin
> > ok 166 - (begin += diff) == end
> > ok 167 - (end -= diff) == begin
> > ok 168 - beginANSI + diff == end
> > ok 169 - beginTS + diff == end
> > ok 170 - copy == end
> > ok 171 - copy <= end
> > ok 172 - copy >= end
> > ok 173 - end > begin
> > ok 174 - end >= begin
> > ok 175 - begin != end
> > ok 176 - begin < end
> > ok 177 - begin <= end
> > ok 178 - end - end == 0
> > ok 179 - end - begin ~= diff
> > ok 180 - begin + 0 == begin
> > ok 181 - begin + diff == end
> > ok 182 - end - 0 == end
> > ok 183 - end - diff == begin
> > ok 184 - (begin += diff) == end
> > ok 185 - (end -= diff) == begin
> > ok 186 - beginANSI + diff == end
> > ok 187 - beginTS + diff == end
> > 
> >     Results
> >     =======
> >        Tests: 187
> >       Passed: 187 = 100%
> > [williams@dragon O.linux-x86_64]$
> > 
> > 
> > [williams@dragon O.linux-x86_64]$ ./epicsUnitTestTest
> > 1..11
> > ok  1 - testOk(1)
> > not ok  2 - testOk(0)
> > ok  3 - testPass()
> > not ok  4 - testFail()
> > ok  5 # SKIP Skipping two
> > ok  6 # SKIP Skipping two
> > ok  7 - Todo pass # TODO Testing Todo
> > not ok  8 - Todo fail # TODO Testing Todo
> > ok  9 # SKIP Todo skip
> > ok 10 - testOk1_success
> > not ok 11 - testOk1_failure
> > # Diagnostic
> > 
> >     Results
> >     =======
> >        Tests: 11
> >       Passed:  8 = 72%
> >  Todo Passes:  1 = 9%
> >       Failed:  3 = 27%
> >      Skipped:  3 = 27%
> > [williams@dragon O.linux-x86_64]$
> > 
> > [williams@dragon O.linux-x86_64]$ ./macEnvExpandTest
> > 1..30
> > ok  1 - FOO
> > ok  2 - ${FOO}
> > ok  3 - ${FOO=}
> > ok  4 - x${FOO=}y
> > ok  5 - ${FOO=BAR}
> > ok  6 - x${FOO=BAR}y
> > ok  7 - ${FOO}
> > ok  8 - x${FOO}y
> > ok  9 - x${FOO}y${FOO}z
> > ok 10 - ${FOO=BAR}
> > ok 11 - x${FOO=BAR}y
> > ok 12 - ${FOO=${BAZ}}
> > ok 13 - x${FOO=${BAZ}}y
> > ok 14 - ${BAR=${FOO}}
> > ok 15 - x${BAR=${FOO}}y
> > ok 16 - w${BAR=x${FOO}y}z
> > ok 17 - ${FOO}/${BAR}
> > ok 18 - x${FOO}/${BAR}y
> > ok 19 - ${BAR=${FOO}}
> > ok 20 - ${${FOO}}
> > ok 21 - x${${FOO}}y
> > ok 22 - ${${FOO}=GRIBBLE}
> > ok 23 - x${${FOO}=GRIBBLE}y
> > ok 24 - ${${FOO}}
> > ok 25 - ${FOO}
> > ok 26 - ${FOO}
> > ok 27 - ${FOO}
> > ok 28 - ${FOO}
> > ok 29 - ${FOO}
> > ok 30 - ${FOO}
> > macLib: macro FOO is undefined (expanding string ${FOO})
> > macLib: macro BAZ is undefined (expanding string ${FOO})
> > macLib: string ${FOO} is recursive (expanding environment variable FOO)
> > # 3 warning messages from macLib were expected above.
> > 
> > 
> >     Results
> >     =======
> >        Tests: 30
> >       Passed: 30 = 100%
> > [williams@dragon O.linux-x86_64]$
> > 
> > 
> > [williams@dragon O.linux-x86_64]$ ./ringPointerTest
> > 1..54
> > ok  1 - Ring empty
> > ok  2 - ring filled, 10 values
> > ok  3 - Pop test: 0 == 0
> > ok  4 - Pop test: 1 == 1
> > ok  5 - Pop test: 2 == 2
> > ok  6 - Pop test: 3 == 3
> > ok  7 - Pop test: 4 == 4
> > ok  8 - Pop test: 5 == 5
> > ok  9 - Pop test: 6 == 6
> > ok 10 - Pop test: 7 == 7
> > ok 11 - Pop test: 8 == 8
> > ok 12 - Pop test: 9 == 9
> > ok 13 - Ring empty
> > # Consumer starting
> > ok 14 - Ring not full
> > ok 15 - Ring not full
> > ok 16 - Ring not full
> > ok 17 - Ring not full
> > ok 18 - Ring not full
> > ok 19 - Ring not full
> > ok 20 - Ring not full
> > ok 21 - Ring not full
> > ok 22 - Ring not full
> > ok 23 - Ring not full
> > ok 24 - Consumer: 0 == 0
> > ok 25 - Consumer: 1 == 1
> > ok 26 - Consumer: 2 == 2
> > ok 27 - Consumer: 3 == 3
> > ok 28 - Consumer: 4 == 4
> > ok 29 - Consumer: 5 == 5
> > ok 30 - Consumer: 6 == 6
> > ok 31 - Consumer: 7 == 7
> > ok 32 - Consumer: 8 == 8
> > ok 33 - Consumer: 9 == 9
> > ok 34 - Ring not full
> > ok 35 - Ring not full
> > ok 36 - Ring not full
> > ok 37 - Ring not full
> > ok 38 - Ring not full
> > ok 39 - Ring not full
> > ok 40 - Ring not full
> > ok 41 - Ring not full
> > ok 42 - Ring not full
> > ok 43 - Ring not full
> > ok 44 - Consumer: 10 == 10
> > ok 45 - Consumer: 11 == 11
> > ok 46 - Consumer: 12 == 12
> > ok 47 - Consumer: 13 == 13
> > ok 48 - Consumer: 14 == 14
> > ok 49 - Consumer: 15 == 15
> > ok 50 - Consumer: 16 == 16
> > ok 51 - Consumer: 17 == 17
> > ok 52 - Consumer: 18 == 18
> > ok 53 - Consumer: 19 == 19
> > ok 54 - Ring empty
> > 
> >     Results
> >     =======
> >        Tests: 54
> >       Passed: 54 = 100%
> > [williams@dragon O.linux-x86_64]$
> > 
> > 
> > 
> > 
> > 
> > 
> > Thanks,
> > Ernest
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > > 
> > > Also, this release contains a cas fix that should allow the PV Gateway 
> > > to pass alarm acknowledgements correctly, which was one of the main 
> > > reasons we wanted to release R3.14.9 at this time.  I would appreciate 
> > > hearing from any other site that has built the PV Gateway with this 
> > > version of Base and tested running ALH through it, to confirm our tests 
> > > of this fix here at APS.
> > > 
> > > There have been significant numbers of commits done over the last few 
> > > days, and I'm aware of at least one build issue on linux-arm that hasn't 
> > > been completely resloved yet.  I also have a number of gcc warning fixes 
> > > in my sandbox that I haven't committed yet (I've been trying out the 
> > > other -Wxxx options and cleaning up the real problems).  As a result I 
> > > don't think we're going to be ready to release -RC1 on Friday, so the 
> > > release is most likely to be called R3.14.9-pre2 (comments on this are 
> > > welcome).  I will do a cvs update and tag on Friday morning, so please 
> > > push any outstanding cvs commits on Thursday evening (or by 14:00 UTC 
> > > Friday).
> > > 
> > > Advanced notice: All power to the APS office building is being turned 
> > > off this coming Saturday (December 1st), between about 7:30am and Noon 
> > > Chicago time.  The APS website, email exploders and ssh+cvs access will 
> > > be unavailable during that time.  Those of you who rely on mercury for 
> > > remote ssh access may have to wait until Monday morning for it to be 
> > > turned back on; email me if you have any cvs+ssh problems next week, 
> > > they'll probably be related to the power cycling.
> > > 
> > > - Andrew
# CONFIG.Common.vxWorks-mpc8540
#
# $Id
# This file is maintained by the build community.
#
# Definitions for vxWorks-mpc8540 target archs with at least 32MB
# Sites may override these definitions in CONFIG_SITE.Common.vxWorks-mpc8540
#-------------------------------------------------------

# Include definitions common to all vxWorks target archs
include $(CONFIG)/os/CONFIG.Common.vxWorksCommon

# Vx GNU cross compiler suffix
CMPLR_SUFFIX = ppc
 
ARCH_CLASS = ppc

# Architecture specific build flags
ARCH_DEP_CPPFLAGS = -DCPU=PPC32
ARCH_DEP_CFLAGS = -mcpu=8540 -msoft-float -mstrict-align -mlongcall -nostdlib

GNU_TARGET = powerpc-wrs-vxworks
# CONFIG_SITE.Common.vxWorks-mpc8540
#
# CONFIG_SITE.Common.vxWorks-mpc8540,v 1.1 2003/01/07 21:13:20 jba Exp
#
# Site Specific definitions for vxWorks-mpc8540 target
# Only the local epics system manager should modify this file



References:
Next R3.14.9 version: -pre2 or -RC1? Andrew Johnson
Re: Next R3.14.9 version: -pre2 or -RC1? Ernest L. Williams Jr.
Re: Next R3.14.9 version: -pre2 or -RC1? Ernest L. Williams Jr.

Navigate by Date:
Prev: Re: Next R3.14.9 version: -pre2 or -RC1? Ernest L. Williams Jr.
Next: RE: More strict aliasing Jeff Hill
Index: 2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Next R3.14.9 version: -pre2 or -RC1? Ernest L. Williams Jr.
Next: Re: Next R3.14.9 version: -pre2 or -RC1? Andrew Johnson
Index: 2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 02 Feb 2012 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·