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]>, [email protected], "Kasemir, Kay" <[email protected]>
Date: Fri, 01 Dec 2006 11:05:07 -0500
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
Only in base-3.14.9-pre1-SNS/config: CONFIG_HOST_ARCH.linux-x86_64
Only in base-3.14.9-pre1-SNS/config: CONFIG.Host.linux-x86_64
Only in base-3.14.9-pre1-SNS/config: CONFIG_SITE.Host.linux-x86_64
Only in base-3.14.9-pre1-SNS/config: CONFIG_SITE.Vx.linux-x86_64
diff -cr base-3.14.9-pre1/configure/CONFIG.CrossCommon base-3.14.9-pre1-SNS/configure/CONFIG.CrossCommon
*** base-3.14.9-pre1/configure/CONFIG.CrossCommon	2006-01-30 10:21:34.000000000 -0500
--- base-3.14.9-pre1-SNS/configure/CONFIG.CrossCommon	2006-11-30 11:26:38.000000000 -0500
***************
*** 21,27 ****
  GNU_TARGET_INCLUDE_DIR = $(GNU_DIR)/$(GNU_TARGET)/include
  GNU_TARGET_LIB_DIR = $(GNU_DIR)/$(GNU_TARGET)/lib
  
! export GCC_EXEC_PREFIX = $(GNU_LIB)/gcc-lib/
  
  CROSS_INCLUDES = $(addprefix -I,$(GNU_TARGET_INCLUDE_DIR))
  CROSS_LDFLAGS = $(addprefix -L,$(GNU_TARGET_LIB_DIR))
--- 21,37 ----
  GNU_TARGET_INCLUDE_DIR = $(GNU_DIR)/$(GNU_TARGET)/include
  GNU_TARGET_LIB_DIR = $(GNU_DIR)/$(GNU_TARGET)/lib
  
! 
! # ==========================================================================================
! # Where is cc1, cc1plus, get_feature, etc...?
! # Need to add since vxWorks 6.3
! # Do not set GCC_EXEC_PREFIX for vxWorks 5.5.1 and higher.
! # the GCC library has this path builtin and we don't want
! # to override it.
! #
! ##export GCC_EXEC_PREFIX = $(GNU_LIB)/gcc-lib/
! ##export GCC_EXEC_PREFIX = /ade/vxWorks/6.3/gnu/3.4.4-vxworks-6.3/x86-linux2/libexec/gcc/
! # ===========================================================================================
  
  CROSS_INCLUDES = $(addprefix -I,$(GNU_TARGET_INCLUDE_DIR))
  CROSS_LDFLAGS = $(addprefix -L,$(GNU_TARGET_LIB_DIR))
diff -cr base-3.14.9-pre1/configure/CONFIG_SITE base-3.14.9-pre1-SNS/configure/CONFIG_SITE
*** base-3.14.9-pre1/configure/CONFIG_SITE	2006-11-14 14:40:36.000000000 -0500
--- base-3.14.9-pre1-SNS/configure/CONFIG_SITE	2006-11-30 10:23:17.000000000 -0500
***************
*** 68,73 ****
--- 68,74 ----
  #       vxWorks-ppc603_long
  #       vxWorks-ppc604
  #       vxWorks-ppc604_long
+ #       vxWorks-mpc8540
  #       RTEMS-gen68360
  #       RTEMS-mcp750
  #       RTEMS-mvme167
***************
*** 82,89 ****
  # configure/os/CONFIG_SITE.<host>.Common files will
  # override 
  #
! CROSS_COMPILER_TARGET_ARCHS=
  #CROSS_COMPILER_TARGET_ARCHS=vxWorks-68040
  
  #  If only a subset of the host architectures perform
  #  the build for the CROSS_COMPILER_TARGET_ARCHS
--- 83,91 ----
  # configure/os/CONFIG_SITE.<host>.Common files will
  # override 
  #
! #CROSS_COMPILER_TARGET_ARCHS=
  #CROSS_COMPILER_TARGET_ARCHS=vxWorks-68040
+ CROSS_COMPILER_TARGET_ARCHS= vxWorks-ppc603_long vxWorks-ppc604_long vxWorks-mpc8540
  
  #  If only a subset of the host architectures perform
  #  the build for the CROSS_COMPILER_TARGET_ARCHS
***************
*** 155,161 ****
  #  NOTE: Set to YES only if you have existing R3.13 ioc applications
  #  and extensions to be built with this base
  #
! COMPAT_313=NO
  
  #  Installation directory
  # If you don't want to install into $(TOP) dir then
--- 157,163 ----
  #  NOTE: Set to YES only if you have existing R3.13 ioc applications
  #  and extensions to be built with this base
  #
! COMPAT_313=YES
  
  #  Installation directory
  # If you don't want to install into $(TOP) dir then
***************
*** 163,169 ****
  #INSTALL_LOCATION=<fullpathname>
  
  # Use POSIX thread priority scheduling (YES or NO)
! USE_POSIX_THREAD_PRIORITY_SCHEDULING = NO
  
  #  Site version number, if set will append '-' and this string to the
  #  EPICS version number string that is reported by many tools
--- 165,171 ----
  #INSTALL_LOCATION=<fullpathname>
  
  # Use POSIX thread priority scheduling (YES or NO)
! USE_POSIX_THREAD_PRIORITY_SCHEDULING = YES
  
  #  Site version number, if set will append '-' and this string to the
  #  EPICS version number string that is reported by many tools
diff -cr base-3.14.9-pre1/configure/CONFIG_SITE_ENV base-3.14.9-pre1-SNS/configure/CONFIG_SITE_ENV
*** base-3.14.9-pre1/configure/CONFIG_SITE_ENV	2006-11-16 11:09:15.000000000 -0500
--- base-3.14.9-pre1-SNS/configure/CONFIG_SITE_ENV	2006-11-30 10:27:46.000000000 -0500
***************
*** 40,46 ****
--- 40,50 ----
  # EPICS_TS_NTP_INET
  #	NTP or Unix time server ip address.  Uses boot host if not set.
  
+ # Central Time Zone:
  EPICS_TIMEZONE=CUS::360:031102:110402
+ # Eastern Time Zone:
+ EPICS_TIMEZONE=CUS::300:031102:110402
+ 
  #EPICS_TIMEZONE=MET::-60:032502:102802
  EPICS_TS_NTP_INET=
  
diff -cr base-3.14.9-pre1/configure/os/CONFIG.Common.vxWorksCommon base-3.14.9-pre1-SNS/configure/os/CONFIG.Common.vxWorksCommon
*** base-3.14.9-pre1/configure/os/CONFIG.Common.vxWorksCommon	2006-11-16 17:44:34.000000000 -0500
--- base-3.14.9-pre1-SNS/configure/os/CONFIG.Common.vxWorksCommon	2006-11-30 12:58:39.000000000 -0500
***************
*** 91,97 ****
  #--------------------------------------------------
  # vxWorks directory definitions
  VX_DIR_5 = $(WIND_BASE)
! VX_DIR_6 = $(WIND_BASE)/vxWorks-$(VXWORKS_VERSION)
  VX_DIR = $(VX_DIR_$(VXWORKS_MAJOR_VERSION))
  
  VX_INCLUDE_DIRS_5 = $(VX_DIR)/target/h
--- 91,97 ----
  #--------------------------------------------------
  # vxWorks directory definitions
  VX_DIR_5 = $(WIND_BASE)
! VX_DIR_6 = $(WIND_BASE)/vxworks-$(VXWORKS_VERSION)
  VX_DIR = $(VX_DIR_$(VXWORKS_MAJOR_VERSION))
  
  VX_INCLUDE_DIRS_5 = $(VX_DIR)/target/h
***************
*** 132,137 ****
--- 132,138 ----
  OP_SYS_INCLUDE_CPPFLAGS_5.5 += -include $(VX_DIR)/target/h/vxWorks.h
  OP_SYS_INCLUDE_CPPFLAGS = $(OP_SYS_INCLUDE_CPPFLAGS_$(VXWORKS_VERSION))
  
+ 
  #--------------------------------------------------
  # code flags
  CODE_CFLAGS =
***************
*** 146,152 ****
  
  #--------------------------------------------------
  # posix c preprocessor flags
! POSIX_CPPFLAGS = -D_POSIX_SOURCE
  
  #--------------------------------------------------
  # no shared libs for vxWorks
--- 147,168 ----
  
  #--------------------------------------------------
  # posix c preprocessor flags
! # Must comment out; vxWorks 6.3 does not like this.
! #
! ##POSIX_CPPFLAGS = -D_POSIX_SOURCE
! 
! # The use of _POSIX_SOURCE is obsolete.
! # The version of POSIX we try to conform to is PSE52,
! # which requires the user application to set _POSIX_C_SOURCE to 200112L.
! ##POSIX_CPPFLAGS = -D_POSIX_C_SOURCE=200112L
! 
! # An XSI-conforming application should ensure that the feature test macro _XOPEN_SOURCE
! # is defined with the value 600 before inclusion of any header.
! # This is needed to enable the functionality described in
! # The _POSIX_C_SOURCE Feature Test Macro and in addition to enable the XSI extension.
! ##POSIX_CPPFLAGS += -D_XOPEN_SOURCE=600
! 
! 
  
  #--------------------------------------------------
  # no shared libs for vxWorks
Only in base-3.14.9-pre1-SNS/configure/os: CONFIG.Common.vxWorks-mpc8540
diff -cr base-3.14.9-pre1/configure/os/CONFIG.Common.vxWorks-ppc603 base-3.14.9-pre1-SNS/configure/os/CONFIG.Common.vxWorks-ppc603
*** base-3.14.9-pre1/configure/os/CONFIG.Common.vxWorks-ppc603	2004-04-05 10:25:06.000000000 -0400
--- base-3.14.9-pre1-SNS/configure/os/CONFIG.Common.vxWorks-ppc603	2006-11-30 14:48:17.000000000 -0500
***************
*** 17,22 ****
  
  # Architecture specific build flags
  ARCH_DEP_CPPFLAGS = -DCPU=PPC603  
! ARCH_DEP_CFLAGS = -mcpu=603 -mstrict-align
  
  GNU_TARGET = powerpc-wrs-vxworks
--- 17,22 ----
  
  # Architecture specific build flags
  ARCH_DEP_CPPFLAGS = -DCPU=PPC603  
! ARCH_DEP_CFLAGS = -mcpu=603 -mstrict-align -nostdlib
  
  GNU_TARGET = powerpc-wrs-vxworks
diff -cr base-3.14.9-pre1/configure/os/CONFIG.Common.vxWorks-ppc603_long base-3.14.9-pre1-SNS/configure/os/CONFIG.Common.vxWorks-ppc603_long
*** base-3.14.9-pre1/configure/os/CONFIG.Common.vxWorks-ppc603_long	2004-04-05 10:25:06.000000000 -0400
--- base-3.14.9-pre1-SNS/configure/os/CONFIG.Common.vxWorks-ppc603_long	2006-11-30 14:48:02.000000000 -0500
***************
*** 17,22 ****
  
  # Architecture specific build flags
  ARCH_DEP_CPPFLAGS = -DCPU=PPC603  
! ARCH_DEP_CFLAGS = -mcpu=603 -mstrict-align -mlongcall
  
  GNU_TARGET = powerpc-wrs-vxworks
--- 17,22 ----
  
  # Architecture specific build flags
  ARCH_DEP_CPPFLAGS = -DCPU=PPC603  
! ARCH_DEP_CFLAGS = -mcpu=603 -mstrict-align -mlongcall -nostdlib
  
  GNU_TARGET = powerpc-wrs-vxworks
diff -cr base-3.14.9-pre1/configure/os/CONFIG.Common.vxWorks-ppc604 base-3.14.9-pre1-SNS/configure/os/CONFIG.Common.vxWorks-ppc604
*** base-3.14.9-pre1/configure/os/CONFIG.Common.vxWorks-ppc604	2004-04-05 10:25:06.000000000 -0400
--- base-3.14.9-pre1-SNS/configure/os/CONFIG.Common.vxWorks-ppc604	2006-11-30 14:46:58.000000000 -0500
***************
*** 17,22 ****
  
  # Architecture specific build flags
  ARCH_DEP_CPPFLAGS = -DCPU=PPC604
! ARCH_DEP_CFLAGS = -mcpu=604 -mstrict-align
  
  GNU_TARGET = powerpc-wrs-vxworks
--- 17,22 ----
  
  # Architecture specific build flags
  ARCH_DEP_CPPFLAGS = -DCPU=PPC604
! ARCH_DEP_CFLAGS = -mcpu=604 -mstrict-align -mno-implicit-fp -maltivec -nostdlib
  
  GNU_TARGET = powerpc-wrs-vxworks
diff -cr base-3.14.9-pre1/configure/os/CONFIG.Common.vxWorks-ppc604_long base-3.14.9-pre1-SNS/configure/os/CONFIG.Common.vxWorks-ppc604_long
*** base-3.14.9-pre1/configure/os/CONFIG.Common.vxWorks-ppc604_long	2004-04-05 10:25:06.000000000 -0400
--- base-3.14.9-pre1-SNS/configure/os/CONFIG.Common.vxWorks-ppc604_long	2006-11-30 14:47:25.000000000 -0500
***************
*** 17,22 ****
  
  # Architecture specific build flags
  ARCH_DEP_CPPFLAGS = -DCPU=PPC604
! ARCH_DEP_CFLAGS = -mcpu=604 -mstrict-align -mlongcall
  
  GNU_TARGET = powerpc-wrs-vxworks
--- 17,22 ----
  
  # Architecture specific build flags
  ARCH_DEP_CPPFLAGS = -DCPU=PPC604
! ARCH_DEP_CFLAGS = -mcpu=604 -mstrict-align -mlongcall -mno-implicit-fp -maltivec -nostdlib
  
  GNU_TARGET = powerpc-wrs-vxworks
diff -cr base-3.14.9-pre1/configure/os/CONFIG_SITE.Common.vxWorksCommon base-3.14.9-pre1-SNS/configure/os/CONFIG_SITE.Common.vxWorksCommon
*** base-3.14.9-pre1/configure/os/CONFIG_SITE.Common.vxWorksCommon	2006-11-13 15:31:07.000000000 -0500
--- base-3.14.9-pre1-SNS/configure/os/CONFIG_SITE.Common.vxWorksCommon	2006-11-30 10:36:28.000000000 -0500
***************
*** 9,20 ****
  
  # Note: vxWorks 5.3 (Tornado 1.x) is not supported
  
! VXWORKS_VERSION = 5.4
  #VXWORKS_VERSION = 5.5
  #VXWORKS_VERSION = 6.0
  #VXWORKS_VERSION = 6.1
  #VXWORKS_VERSION = 6.2
! #VXWORKS_VERSION = 6.3
  
  
  # Sites may override the following path for a particular host
--- 9,20 ----
  
  # Note: vxWorks 5.3 (Tornado 1.x) is not supported
  
! #VXWORKS_VERSION = 5.4
  #VXWORKS_VERSION = 5.5
  #VXWORKS_VERSION = 6.0
  #VXWORKS_VERSION = 6.1
  #VXWORKS_VERSION = 6.2
! VXWORKS_VERSION = 6.3
  
  
  # Sites may override the following path for a particular host
***************
*** 24,31 ****
  # WIND_BASE is where you installed the Wind River software.
  # Under vxWorks 6.x this is not the same as the old VX_DIR setting
  
! WIND_BASE = /usr/local/vw/tornado202p1
  #WIND_BASE = /usr/local/vw/tornado22-$(ARCH_CLASS)
  #WIND_BASE = /usr/local/vw/vxWorks-$(VXWORKS_VERSION)
! #WIND_BASE = /ade/vxWorks/$(VXWORKS_VERSION)
  
--- 24,31 ----
  # WIND_BASE is where you installed the Wind River software.
  # Under vxWorks 6.x this is not the same as the old VX_DIR setting
  
! #WIND_BASE = /usr/local/vw/tornado202p1
  #WIND_BASE = /usr/local/vw/tornado22-$(ARCH_CLASS)
  #WIND_BASE = /usr/local/vw/vxWorks-$(VXWORKS_VERSION)
! WIND_BASE = /ade/vxWorks/$(VXWORKS_VERSION)
  
Only in base-3.14.9-pre1-SNS/configure/os: CONFIG_SITE.Common.vxWorks-mpc8540
diff -cr base-3.14.9-pre1/configure/os/CONFIG_SITE.linux-x86_64.Common base-3.14.9-pre1-SNS/configure/os/CONFIG_SITE.linux-x86_64.Common
*** base-3.14.9-pre1/configure/os/CONFIG_SITE.linux-x86_64.Common	2005-10-28 11:31:32.000000000 -0400
--- base-3.14.9-pre1-SNS/configure/os/CONFIG_SITE.linux-x86_64.Common	2006-11-30 10:42:18.000000000 -0500
***************
*** 9,12 ****
--- 9,13 ----
  #CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040 solaris-sparc
  #CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040
  #CROSS_COMPILER_TARGET_ARCHS = RTEMS-mvme2100
+ WIND_HOST_TYPE = x86-linux2
  
diff -cr base-3.14.9-pre1/src/libCom/test/Makefile base-3.14.9-pre1-SNS/src/libCom/test/Makefile
*** base-3.14.9-pre1/src/libCom/test/Makefile	2006-11-16 17:15:51.000000000 -0500
--- base-3.14.9-pre1-SNS/src/libCom/test/Makefile	2006-11-30 14:07:51.000000000 -0500
***************
*** 87,96 ****
--- 87,99 ----
  testHarness_SRCS += epicsMutexTest.cpp
  TESTS += epicsMutexTest
  
+ ifneq ($(OS_CLASS),vxWorks)
  TESTPROD_HOST += epicsExceptionTest
  epicsExceptionTest_SRCS += epicsExceptionTest.cpp
  testHarness_SRCS += epicsExceptionTest.cpp
  TESTS += epicsExceptionTest
+ endif
+ 
  
  TESTPROD_HOST += epicsMessageQueueTest
  epicsMessageQueueTest_SRCS += epicsMessageQueueTest.cpp

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

Navigate by Date:
Prev: Re: More strict aliasing Kay-Uwe Kasemir
Next: Re: Next R3.14.9 version: -pre2 or -RC1? Ernest L. Williams Jr.
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? Gasper Jansa
Next: Re: Next R3.14.9 version: -pre2 or -RC1? Ernest L. Williams Jr.
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 ·