EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: EPICS_TIMEZONE and TZ on RTEMS
From: Matt Rippa <[email protected]>
To: Michael Davidsaver <[email protected]>
Cc: Talk EPICS Tech <[email protected]>
Date: Tue, 26 Apr 2016 17:43:19 -0500
Great news. Thanks for the patch to base, Michael.

I tested this with zoneset("HST10"), zoneset("UTC0") and it worked as I expected on rtems 4.10.2.
I ran your test harness just now. Couldn't easily grab all the results, but I attached the epicsTimeZoneTest and the epicsSockResolveTest which failed 2 tests using strings in aToIPAddr(). Perhaps that's another setup issues with my board.

-Matt

On Tue, Apr 26, 2016 at 4:13 AM, Michael Davidsaver <[email protected]> wrote:
> epicsEnvSet("TZ", "HST10")

For rtems 4.9.6 (newlib 1.18.0) I have to set "HST10HST10" to get correct behavior.  This is strictly speaking incorrect, and doesn't behave right on Linux.  I've added cases to epicsTimeZoneTest which I'd ask you to check and try running (it's run as part of the usual rtems test harness executable).

https://github.com/mdavidsaver/epics-base/blob/rtemstz/src/libCom/test/epicsTimeZoneTest.c#L81

git clone --branch rtemstz https://github.com/mdavidsaver/epics-base.git


On 04/26/2016 07:56 AM, Michael Davidsaver wrote:
Matt,

Could you try the attached patch for Base?  It adds an iocsh function zoneset().  For US eastern time I can use 'zoneset("EST5EDT")' and see the change reflected in generalTimeReport().

Michael


On 04/25/2016 07:13 PM, Matt Rippa wrote:
Turns out access to NVRAM variables like epics-tz only work with MOTLOAD firmware (mvme-6100).
On the PPC1-BUG firmware (mvme-2700) there isn't an obvious way.

For now, I'll have to define this in base/configure/CONFIG_SITE_ENV for each of our sites Hawaii and Chile.
For Chile, this is a terrible situation. They can't make up their mind about standard time. They will be starting daylight saving time in May.
So it looks like we'll have to rebuild EPICS Base each time their clocks change? Or choose a different BSP?

Can anyone confirm that the "epics-tz" variable is the preferred solution for the mvme-6100 (beatnik) BSP?

Thank you all for input!
-Matt

On Mon, Apr 25, 2016 at 12:45 PM, Matt Rippa <[email protected]> wrote:
Thanks. I just looked into this and src/RTEMS/base/setBootConfigFromNVRAM.c

Looks like the epics-tz variable is what I want.

-Matt

On Mon, Apr 25, 2016 at 12:36 PM, Michael Davidsaver <[email protected]> wrote:
On 04/25/2016 05:12 PM, Matt Rippa wrote:
> epicsEnvSet("TZ", "HST10")

You'll need to arrange a call to tzset() before anything happens.

http://man7.org/linux/man-pages/man3/tzset.3.html

Init() does this, but has probably already run.  As I look at it, there
doesn't seem to be a good way to set TZ for the standard rtems app...

http://bazaar.launchpad.net/~epics-core/epics-base/3.16/view/head:/src/libCom/RTEMS/rtems_init.c#L631






***** epicsSockResolveTest *****
1..33
# Tests of aToIPAddr
ok  1 - aToIPAddr("127.0.0.1", 4000) -> 0
ok  2 -   IP correct
ok  3 -   Port correct
ok  4 - aToIPAddr("127.0.0.1:42", 4000) -> 0
ok  5 -   IP correct
ok  6 -   Port correct
not ok  7 - aToIPAddr("localhost", 4000) -> -1
ok  8 # SKIP   aToIPAddr() failed
ok  9 # SKIP   aToIPAddr() failed
not ok 10 - aToIPAddr("localhost:42", 4000) -> -1
ok 11 # SKIP   aToIPAddr() failed
ok 12 # SKIP   aToIPAddr() failed
ok 13 - aToIPAddr("2424", 4000) -> 0
ok 14 -   IP correct
ok 15 -   Port correct
ok 16 - aToIPAddr("2424:42", 4000) -> 0
ok 17 -   IP correct
ok 18 -   Port correct
ok 19 - aToIPAddr("255.255.255.255", 4000) -> 0
ok 20 -   IP correct
ok 21 -   Port correct
ok 22 - aToIPAddr("255.255.255.255:65535", 4000) -> 0
ok 23 -   IP correct
ok 24 -   Port correct
ok 25 - aToIPAddr("127.0.0.hi", 4000) -> -1
ok 26 - aToIPAddr("127.0.0.hi:42", 4000) -> -1
ok 27 - aToIPAddr("16invalidhostname", 4000) -> -1
ok 28 - aToIPAddr("16invalidhostname:42", 4000) -> -1
ok 29 - aToIPAddr("256.255.255.255", 4000) -> -1
ok 30 - aToIPAddr("255.256.255.255", 4000) -> -1
ok 31 - aToIPAddr("255.255.256.255", 4000) -> -1
ok 32 - aToIPAddr("255.255.255.256", 4000) -> -1
ok 33 - aToIPAddr("255.255.255.255:65536", 4000) -> -1

Results
=======
Tests: 33 
Passed:  31 = 93.94%
Failed:   2 =  6.06%
Skipped:   4 = 12.12%

***** taskwdTest *****
    1..8
    ok  1 - monInsert(tid=0xa010010)
ok  2 - monInsert(tid=0xa010011)
# Task suspending
    ok  3 - monNotify(tid=0xa010011, suspended=1)
ok  4 - anyNotify(tid=0xa010011)
    ok  5 - taskNotify
    Thread testTask2 (0xa010011) suspended
# Alive again
ok  6 - monNotify(tid=0xa010011, suspended=0)
    epicsThreadResume failed: thread is in wrong state
    ok  7 - monRemove(tid=0xa010010)
ok  8 - monRemove(tid=0xa010011)

    Results
    =======
    Tests: 8  
    Passed:   8 = 100.00%

    ***** 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 - threadB destroying pinfo
    ok  4 - threadA reached atExit
    ok  5 - threadA terminating
    ok  6 - threadA destroying pinfo
    ok  7 - Reached mainExit

    Results
    =======
    Tests: 7  
    Passed:   7 = 100.00%


    EPICS Test Harness Results
    ==========================

    Failing Program           Tests  Faults
    ---------------------------------------
    epicsSockResolveTest         33       2
    4 subtests skipped

    Failed 1/27 test programs. 2/2204 subtests failed.
    Programs=27, Tests=2204, 558 wallclock secs





   Results
       =======
              Tests: 192
                    Passed: 192 = 100.00%

                    ***** epicsTimeZoneTest *****
                    1..160
                    # POSIX 1445259616
                    # TZ = "EST5EDT"
                    # test_localtime(1445259616, ...)
                    ok  1 - epicsTime_localtime() success
                    ok  2 - sec 16==16
                    ok  3 - min 0==0
                    ok  4 - hour 9==9
                    ok  5 - mday 19==19
                    ok  6 - mon 9==9
                    ok  7 - year 2015==2015
                    ok  8 - wday 1==1
                    ok  9 - yday 291==291
                    ok 10 - isdst 1==1
                    # test_gmtime(1445259616, ...)
                    ok 11 - epicsTime_localtime() success
                    ok 12 - sec 16==16
                    ok 13 - min 0==0
                    ok 14 - hour 13==13
                    ok 15 - mday 19==19
                    ok 16 - mon 9==9
                    ok 17 - year 2015==2015
                    ok 18 - wday 1==1
                    ok 19 - yday 291==291
                    ok 20 - isdst 0==0
                    # TZ = "CST6CDT"
                    # test_localtime(1445259616, ...)
                    ok 21 - epicsTime_localtime() success
                    ok 22 - sec 16==16
                    ok 23 - min 0==0
                    ok 24 - hour 8==8
                    ok 25 - mday 19==19
                    ok 26 - mon 9==9
                    ok 27 - year 2015==2015
                    ok 28 - wday 1==1
                    ok 29 - yday 291==291
                    ok 30 - isdst 1==1
                    # test_gmtime(1445259616, ...)
                    ok 31 - epicsTime_localtime() success
                    ok 32 - sec 16==16
                    ok 33 - min 0==0
                    ok 34 - hour 13==13
                    ok 35 - mday 19==19
                    ok 36 - mon 9==9
                    ok 37 - year 2015==2015
                    ok 38 - wday 1==1
                    ok 39 - yday 291==291
                    ok 40 - isdst 0==0
                    # TZ = "HST10HST10"
                    # test_localtime(1445259616, ...)
                    ok 41 - epicsTime_localtime() success
                    ok 42 - sec 16==16
                    ok 43 - min 0==0
                    ok 44 - hour 3==3
                    ok 45 - mday 19==19
                    ok 46 - mon 9==9
                    ok 47 - year 2015==2015
                    ok 48 - wday 1==1
                    ok 49 - yday 291==291
                    ok 50 - isdst 0==0
                    # test_gmtime(1445259616, ...)
                    ok 51 - epicsTime_localtime() success
                    ok 52 - sec 16==16
                    ok 53 - min 0==0
                    ok 54 - hour 13==13
                    ok 55 - mday 19==19
                    ok 56 - mon 9==9
                    ok 57 - year 2015==2015
                    ok 58 - wday 1==1
                    ok 59 - yday 291==291
                    ok 60 - isdst 0==0
                    # TZ = "UTC0"
                    # test_localtime(1445259616, ...)
                    ok 61 - epicsTime_localtime() success
                    ok 62 - sec 16==16
                    ok 63 - min 0==0
                    ok 64 - hour 13==13
                    ok 65 - mday 19==19
                    ok 66 - mon 9==9
                    ok 67 - year 2015==2015
                    ok 68 - wday 1==1
                    ok 69 - yday 291==291
                    ok 70 - isdst 0==0
                    # test_gmtime(1445259616, ...)
                    ok 71 - epicsTime_localtime() success
                    ok 72 - sec 16==16
                    ok 73 - min 0==0
                    ok 74 - hour 13==13
                    ok 75 - mday 19==19
                    ok 76 - mon 9==9
                    ok 77 - year 2015==2015
                    ok 78 - wday 1==1
                    ok 79 - yday 291==291
                    ok 80 - isdst 0==0
                    # POSIX 1421244931
                    # TZ = "EST5EDT"
                    # test_localtime(1421244931, ...)
                    ok 81 - epicsTime_localtime() success
                    ok 82 - sec 31==31
                    ok 83 - min 15==15
                    ok 84 - hour 9==9
                    ok 85 - mday 14==14
                    ok 86 - mon 0==0
                    ok 87 - year 2015==2015
                    ok 88 - wday 3==3
                    ok 89 - yday 13==13
                    ok 90 - isdst 0==0
                    # test_gmtime(1421244931, ...)
                    ok 91 - epicsTime_localtime() success
                    ok 92 - sec 31==31
                    ok 93 - min 15==15
                    ok 94 - hour 14==14
                    ok 95 - mday 14==14
                    ok 96 - mon 0==0
                    ok 97 - year 2015==2015
                    ok 98 - wday 3==3
                    ok 99 - yday 13==13
                    ok 100 - isdst 0==0
                    # TZ = "CST6CDT"
                    # test_localtime(1421244931, ...)
                    ok 101 - epicsTime_localtime() success
                    ok 102 - sec 31==31
                    ok 103 - min 15==15
                    ok 104 - hour 8==8
                    ok 105 - mday 14==14
                    ok 106 - mon 0==0
                    ok 107 - year 2015==2015
                    ok 108 - wday 3==3
                    ok 109 - yday 13==13
                    ok 110 - isdst 0==0
                    # test_gmtime(1421244931, ...)
                    ok 111 - epicsTime_localtime() success
                    ok 112 - sec 31==31
                    ok 113 - min 15==15
                    ok 114 - hour 14==14
                    ok 115 - mday 14==14
                    ok 116 - mon 0==0
                    ok 117 - year 2015==2015
                    ok 118 - wday 3==3
                    ok 119 - yday 13==13
                    ok 120 - isdst 0==0
                    # TZ = "HST10HST10"
                    # test_localtime(1421244931, ...)
                    ok 121 - epicsTime_localtime() success
                    ok 122 - sec 31==31
                    ok 123 - min 15==15
                    ok 124 - hour 4==4
                    ok 125 - mday 14==14
                    ok 126 - mon 0==0
                    ok 127 - year 2015==2015
                    ok 128 - wday 3==3
                    ok 129 - yday 13==13
                    ok 130 - isdst 0==0
                    # test_gmtime(1421244931, ...)
                    ok 131 - epicsTime_localtime() success
                    ok 132 - sec 31==31
                    ok 133 - min 15==15
                    ok 134 - hour 14==14
                    ok 135 - mday 14==14
                    ok 136 - mon 0==0
                    ok 137 - year 2015==2015
                    ok 138 - wday 3==3
                    ok 139 - yday 13==13
                    ok 140 - isdst 0==0
                    # TZ = "UTC0"
                    # test_localtime(1421244931, ...)
                    ok 141 - epicsTime_localtime() success
                    ok 142 - sec 31==31
                    ok 143 - min 15==15
                    ok 144 - hour 14==14
                    ok 145 - mday 14==14
                    ok 146 - mon 0==0
                    ok 147 - year 2015==2015
                    ok 148 - wday 3==3
                    ok 149 - yday 13==13
                    ok 150 - isdst 0==0
                    # test_gmtime(1421244931, ...)
                    ok 151 - epicsTime_localtime() success
                    ok 152 - sec 31==31
                    ok 153 - min 15==15
                    ok 154 - hour 14==14
                    ok 155 - mday 14==14
                    ok 156 - mon 0==0
                    ok 157 - year 2015==2015
                    ok 158 - wday 3==3
                    ok 159 - yday 13==13
                    ok 160 - isdst 0==0

                        Results
                            =======
                                   Tests: 160
                                         Passed: 160 = 100.00%




























++++++++++++++++++++++++++++++

esults
    =======
           Tests: 192
                 Passed: 192 = 100.00%

                 ***** epicsTimeZoneTest *****
                 1..160
                 # POSIX 1445259616
                 # TZ = "EST5EDT"
                 # test_localtime(1445259616, ...)
                 ok  1 - epicsTime_localtime() success
                 ok  2 - sec 16==16
                 ok  3 - min 0==0
                 ok  4 - hour 9==9
                 ok  5 - mday 19==19
                 ok  6 - mon 9==9
                 ok  7 - year 2015==2015
                 ok  8 - wday 1==1
                 ok  9 - yday 291==291
                 ok 10 - isdst 1==1
                 # test_gmtime(1445259616, ...)
                 ok 11 - epicsTime_localtime() success
                 ok 12 - sec 16==16
                 ok 13 - min 0==0
                 ok 14 - hour 13==13
                 ok 15 - mday 19==19
                 ok 16 - mon 9==9
                 ok 17 - year 2015==2015
                 ok 18 - wday 1==1
                 ok 19 - yday 291==291
                 ok 20 - isdst 0==0
                 # TZ = "CST6CDT"
                 # test_localtime(1445259616, ...)
                 ok 21 - epicsTime_localtime() success
                 ok 22 - sec 16==16
                 ok 23 - min 0==0
                 ok 24 - hour 8==8
                 ok 25 - mday 19==19
                 ok 26 - mon 9==9
                 ok 27 - year 2015==2015
                 ok 28 - wday 1==1
                 ok 29 - yday 291==291
                 ok 30 - isdst 1==1
                 # test_gmtime(1445259616, ...)
                 ok 31 - epicsTime_localtime() success
                 ok 32 - sec 16==16
                 ok 33 - min 0==0
                 ok 34 - hour 13==13
                 ok 35 - mday 19==19
                 ok 36 - mon 9==9
                 ok 37 - year 2015==2015
                 ok 38 - wday 1==1
                 ok 39 - yday 291==291
                 ok 40 - isdst 0==0
                 # TZ = "HST10HST10"
                 # test_localtime(1445259616, ...)
                 ok 41 - epicsTime_localtime() success
                 ok 42 - sec 16==16
                 ok 43 - min 0==0
                 ok 44 - hour 3==3
                 ok 45 - mday 19==19
                 ok 46 - mon 9==9
                 ok 47 - year 2015==2015
                 ok 48 - wday 1==1
                 ok 49 - yday 291==291
                 ok 50 - isdst 0==0
                 # test_gmtime(1445259616, ...)
                 ok 51 - epicsTime_localtime() success
                 ok 52 - sec 16==16
                 ok 53 - min 0==0
                 ok 54 - hour 13==13
                 ok 55 - mday 19==19
                 ok 56 - mon 9==9
                 ok 57 - year 2015==2015
                 ok 58 - wday 1==1
                 ok 59 - yday 291==291
                 ok 60 - isdst 0==0
                 # TZ = "UTC0"
                 # test_localtime(1445259616, ...)
                 ok 61 - epicsTime_localtime() success
                 ok 62 - sec 16==16
                 ok 63 - min 0==0
                 ok 64 - hour 13==13
                 ok 65 - mday 19==19
                 ok 66 - mon 9==9
                 ok 67 - year 2015==2015
                 ok 68 - wday 1==1
                 ok 69 - yday 291==291
                 ok 70 - isdst 0==0
                 # test_gmtime(1445259616, ...)
                 ok 71 - epicsTime_localtime() success
                 ok 72 - sec 16==16
                 ok 73 - min 0==0
                 ok 74 - hour 13==13
                 ok 75 - mday 19==19
                 ok 76 - mon 9==9
                 ok 77 - year 2015==2015
                 ok 78 - wday 1==1
                 ok 79 - yday 291==291
                 ok 80 - isdst 0==0
                 # POSIX 1421244931
                 # TZ = "EST5EDT"
                 # test_localtime(1421244931, ...)
                 ok 81 - epicsTime_localtime() success
                 ok 82 - sec 31==31
                 ok 83 - min 15==15
                 ok 84 - hour 9==9
                 ok 85 - mday 14==14
                 ok 86 - mon 0==0
                 ok 87 - year 2015==2015
                 ok 88 - wday 3==3
                 ok 89 - yday 13==13
                 ok 90 - isdst 0==0
                 # test_gmtime(1421244931, ...)
                 ok 91 - epicsTime_localtime() success
                 ok 92 - sec 31==31
                 ok 93 - min 15==15
                 ok 94 - hour 14==14
                 ok 95 - mday 14==14
                 ok 96 - mon 0==0
                 ok 97 - year 2015==2015
                 ok 98 - wday 3==3
                 ok 99 - yday 13==13
                 ok 100 - isdst 0==0
                 # TZ = "CST6CDT"
                 # test_localtime(1421244931, ...)
                 ok 101 - epicsTime_localtime() success
                 ok 102 - sec 31==31
                 ok 103 - min 15==15
                 ok 104 - hour 8==8
                 ok 105 - mday 14==14
                 ok 106 - mon 0==0
                 ok 107 - year 2015==2015
                 ok 108 - wday 3==3
                 ok 109 - yday 13==13
                 ok 110 - isdst 0==0
                 # test_gmtime(1421244931, ...)
                 ok 111 - epicsTime_localtime() success
                 ok 112 - sec 31==31
                 ok 113 - min 15==15
                 ok 114 - hour 14==14
                 ok 115 - mday 14==14
                 ok 116 - mon 0==0
                 ok 117 - year 2015==2015
                 ok 118 - wday 3==3
                 ok 119 - yday 13==13
                 ok 120 - isdst 0==0
                 # TZ = "HST10HST10"
                 # test_localtime(1421244931, ...)
                 ok 121 - epicsTime_localtime() success
                 ok 122 - sec 31==31
                 ok 123 - min 15==15
                 ok 124 - hour 4==4
                 ok 125 - mday 14==14
                 ok 126 - mon 0==0
                 ok 127 - year 2015==2015
                 ok 128 - wday 3==3
                 ok 129 - yday 13==13
                 ok 130 - isdst 0==0
                 # test_gmtime(1421244931, ...)
                 ok 131 - epicsTime_localtime() success
                 ok 132 - sec 31==31
                 ok 133 - min 15==15
                 ok 134 - hour 14==14
                 ok 135 - mday 14==14
                 ok 136 - mon 0==0
                 ok 137 - year 2015==2015
                 ok 138 - wday 3==3
                 ok 139 - yday 13==13
                 ok 140 - isdst 0==0
                 # TZ = "UTC0"
                 # test_localtime(1421244931, ...)
                 ok 141 - epicsTime_localtime() success
                 ok 142 - sec 31==31
                 ok 143 - min 15==15
                 ok 144 - hour 14==14
                 ok 145 - mday 14==14
                 ok 146 - mon 0==0
                 ok 147 - year 2015==2015
                 ok 148 - wday 3==3
                 ok 149 - yday 13==13
                 ok 150 - isdst 0==0
                 # test_gmtime(1421244931, ...)
                 ok 151 - epicsTime_localtime() success
                 ok 152 - sec 31==31
                 ok 153 - min 15==15
                 ok 154 - hour 14==14
                 ok 155 - mday 14==14
                 ok 156 - mon 0==0
                 ok 157 - year 2015==2015
                 ok 158 - wday 3==3
                 ok 159 - yday 13==13
                 ok 160 - isdst 0==0

                     Results
                         =======
                                Tests: 160
                                      Passed: 160 = 100.00%



References:
EPICS_TIMEZONE and TZ on RTEMS Matt Rippa
Re: EPICS_TIMEZONE and TZ on RTEMS Michael Davidsaver
Re: EPICS_TIMEZONE and TZ on RTEMS Matt Rippa
Re: EPICS_TIMEZONE and TZ on RTEMS Matt Rippa
Re: EPICS_TIMEZONE and TZ on RTEMS Michael Davidsaver
Re: EPICS_TIMEZONE and TZ on RTEMS Michael Davidsaver

Navigate by Date:
Prev: Connection to Siemens S7 PLC saeed haghtalab
Next: calc question Gofron, Kazimierz
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: EPICS_TIMEZONE and TZ on RTEMS Michael Davidsaver
Next: Xming MEDM scaled fonts pthomas
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  <20162017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 15 Jul 2016 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·