EPICS Home

Experimental Physics and Industrial Control System


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

Subject: Re: RTEMS5 with epics-base
From: Gedare Bloom via Core-talk <[email protected]>
To: Michael Davidsaver <[email protected]>
Cc: EPICS Core Talk <[email protected]>
Date: Thu, 28 Mar 2019 10:29:23 -0400
On Wed, Nov 7, 2018 at 10:26 AM Michael Davidsaver
<[email protected]> wrote:
>
> The commit with this API change, dated 23 March 2018, is
>
> https://git.rtems.org/rtems/commit/?h=4.10&id=b50468c6bff4e770aa038b9f87e514a2a1da906b
>
> On 11/7/18 7:02 AM, Heinz P. Junkes wrote:
> > they changed the Thread_Control_struct
> >
> > I applied the following changes to epics-base:
>
> Would this break 4.9.x?  Probably yet another ifdef is required...
> (maybe defining an accessor macro)
>

We did not back-port this change to 4.9.

I guess currently rtems-4.10 HEAD will break on 3.15 due to the thread
structure mismatch also.

>
> > diff --git a/modules/libcom/src/osi/os/RTEMS/osdThread.c b/modules/libcom/src/osi/os/RTEMS/osdThread.c
> > index 769e958..2db1ca5 100644
> > --- a/modules/libcom/src/osi/os/RTEMS/osdThread.c
> > +++ b/modules/libcom/src/osi/os/RTEMS/osdThread.c
> > @@ -640,17 +640,17 @@ showInternalTaskInfo (rtems_id tid)
> >       * that priority should be displayed, not the value truncated to
> >       * the EPICS range.
> >       */
> > -    epicsPri = 199-thread.real_priority;
> > +    epicsPri = 199-thread.Priority_node.real_priority;
> >      if (epicsPri < 0)
> >          fprintf(epicsGetStdout(),"   <0");
> >      else if (epicsPri > 99)
> >          fprintf(epicsGetStdout(),"  >99");
> >      else
> >          fprintf(epicsGetStdout()," %4d", epicsPri);
> > -    if (thread.current_priority == thread.real_priority)
> > -        fprintf(epicsGetStdout(),"%4d    ", (int)thread.current_priority);
> > +    if (thread.Priority_node.current_priority == thread.Priority_node.real_priority)
> > +        fprintf(epicsGetStdout(),"%4d    ", (int)thread.Priority_node.current_priority);
> >      else
> > -        fprintf(epicsGetStdout(),"%4d/%-3d", (int)thread.real_priority, (int)thread.current_priority);
> > +        fprintf(epicsGetStdout(),"%4d/%-3d", (int)thread.Priority_node.real_priority, (int)thread.Priority_node.current_priority);
> >      showBitmap (bitbuf, thread.current_state, taskState);
> >      fprintf(epicsGetStdout(),"%8.8s", bitbuf);
> >      if (thread.current_state & (STATES_WAITING_FOR_SEMAPHORE |
> >
> >
> > On 11/6/18 8:21 PM, Michael Davidsaver wrote:
> >> On 11/6/18 11:07 AM, Heinz P. Junkes wrote:
> >>> Hi Mike,
> >>>
> >>> thank you for your mail.
> >>>
> >>> On 11/6/18 7:00 PM, Michael Davidsaver wrote:
> >>>> How did you get this toolchain?  I'm wondering if you have some "contamination"
> >>>> from other/newer toolchains?
> >>> The usual way but with branch 4.10 instead of master.
> >> Ha, what "usual" way?  My recipe differs from this.
> >>
> >> https://github.com/mdavidsaver/rsb/blob/4.10/.ci/build.sh
> >>
> >> I was going to suggest that you try to run this yourself, but then I noticed
> >> that the most recent travis-ci run had failed because a source file
> >> http://www.multiprecision.org/mpc/download/mpc-0.8.1.tar.gz
> >> has vanished (now a 500).
> >>
> >> This may be fixed on the 4.10 branch of the upstream rsb repository,
> >> but I don't have the patience to update right now.  The rtems-source-builder
> >> has been nothing but trouble for me.  Old version or new, it seems to be
> >> perpetually broken in one way or the other.
> >>
> >>
> >>> git clone git://git.rtems.org/rtems.git
> >>> git clone git://git.rtems.org/rtems-tools.git
> >>> git clone git://git.rtems.org/rtems-source-builder.git
> >>>
> >>> cd into rtems: git checkout origin/4.10
> >>>
> >>> cd into rtems-tools: git checkout origin/4.10
> >>>
> >>> cd into rtems-source-builder: git checkout origin/4.10
> >>>
> >>> waf configure --prefix=/home/h1/RTEMS/rtems/4.10 build install
> >>>
> >>> source-builder/sb-set-builder --log log.i386.4.10.log --prefix=/home/h1/RTEMS/rtems/4.10 4.10/rtems-i386
> >>>
> >>> rtems-source-builder/source-builder/sb-bootstrap
> >>>
> >>> rtems/configure --enable-maintainer-mode --prefix=/home/h1/RTEMS/rtems/4.10 --target=i386-rtems4.10 --enable-rtemsbsp="pc386" --enable-cxx --enable-networking --enable-tests=samples
> >>>
> >>> In RTEMS/rtems/4.10/i386-rtems4.10/pc386/lib/include/rtems/score/thread.h
> >>>
> >>> real_priority is defined in struct Thread_Priority_node
> >>>
> >>> ...
> >>>
> >>> /**
> >>>   * @brief Encapsulates base and inherited priority.
> >>>   */
> >>> typedef struct Thread_Priority_node {
> >>>    Chain_Node                   Node;
> >>>    /** current priority = min(real_priority, min(Inherited_priorities)) */
> >>>    Priority_Control             current_priority;
> >>>    /** base priority irrespective of inheritance/ceiling */
> >>>    Priority_Control             real_priority;
> >>>    /** NULL if not waiting, or the mutex blocked upon
> >>>     * if waiting. If not NULL, then this Priority_node is on the mutex holder's
> >>>     * Priority_node.Inherited_priorities list. */
> >>>    struct CORE_mutex_Control   *waiting_to_hold;
> >>>    /** Priority Queue of thread Priority_nodes blocked by this one, thus
> >>>     * possibly contributing their priority to the current_priority. */
> >>>    Chain_Control                Inherited_priorities;
> >>> } Thread_Priority_node;
> >>> ...
> >>>
> >>> I will investigate further,
> >>>
> >>> Heinz
> >>>
> >>>> If you want you can try to test using the pre-built toolchain I created for the travis-ci builder.
> >>>> These are built for use in an Ubuntu Linux environment.
> >>>>
> >>>> https://github.com/mdavidsaver/rsb/releases
> >>>>
> >>>> In this toolchain the Thread_Control struct is
> >>>>
> >>>> /home/travis/.rtems/i386-rtems4.10/pc386/lib/include/rtems/score/thread.h
> >>>>
> >>>> and 'real_priority' and 'current_priority' are unconditional members.
> >>>>
> >>>>
> >>>> On 11/6/18 9:44 AM, Heinz P. Junkes wrote:
> >>>>> Try to compile epics-base against rtems 4.10 for i368 target (pc368) and get
> >>>>>
> >>>>> /home/h1/RTEMS/rtems/4.10/bin/i386-rtems4.10-gcc --pipe -B/home/h1/RTEMS/rtems/4.10/i386-rtems4.10/pc386/lib/ -specs bsp_specs -qrtems   -fasm   -mtune=i386 -DUNIX      -O2 -g -g   -Wall           -I. -I../O.Common -I. -I../../src/osi/compiler/gcc -I../../src/osi/compiler/default -I. -I../../src/osi/os/RTEMS -I../../src/osi/os/posix -I../../src/osi/os/default -I.. -I../../src/as -I../../src/bucketLib -I../../src/calc -I../../src/cvtFast -I../../src/cppStd -I../../src/cxxTemplates -I../../src/dbmf -I../../src/ellLib -I../../src/env -I../../src/error -I../../src/fdmgr -I../../src/flex -I../../src/freeList -I../../src/gpHash -I../../src/iocsh -I../../src/log -I../../src/macLib -I../../src/misc -I../../src/osi -I../../src/pool -I../../src/ring -I../../src/taskwd -I../../src/timer -I../../src/yacc -I../../src/yacc -I../../src/yajl -I/home/h1/WIP/EPICS_PORT/4.10/epics-base/epics-base/include/compiler/gcc -I/home/h1/WIP/EPICS_PORT/4.10/epics-base/epics-base/include/os/RTEMS
> >>>>> -I/home/h1/WIP/EPICS_PORT/4.10/epics-base/epics-base/include -I/home/h1/WIP/EPICS_PORT/4.10/epics-base/epics-base/include/compiler/gcc -I/home/h1/WIP/EPICS_PORT/4.10/epics-base/epics-base/include/os/RTEMS -I/home/h1/WIP/EPICS_PORT/4.10/epics-base/epics-base/include -c ../../src/osi/os/RTEMS/osdThread.c
> >>>>> ../../src/osi/os/RTEMS/osdThread.c: In function 'showInternalTaskInfo':
> >>>>> ../../src/osi/os/RTEMS/osdThread.c:643: error: 'Thread_Control' has no member named 'real_priority'
> >>>>> ../../src/osi/os/RTEMS/osdThread.c:650: error: 'Thread_Control' has no member named 'current_priority'
> >>>>> ../../src/osi/os/RTEMS/osdThread.c:650: error: 'Thread_Control' has no member named 'real_priority'
> >>>>> ../../src/osi/os/RTEMS/osdThread.c:651: error: 'Thread_Control' has no member named 'current_priority'
> >>>>> ../../src/osi/os/RTEMS/osdThread.c:653: error: 'Thread_Control' has no member named 'real_priority'
> >>>>> ../../src/osi/os/RTEMS/osdThread.c:653: error: 'Thread_Control' has no member named 'current_priority'
> >>>>> /home/h1/WIP/EPICS_PORT/4.10/epics-base/epics-base/configure/RULES_BUILD:232: recipe for target 'osdThread.o' failed
> >>>>> make[4]: *** [osdThread.o] Error 1
> >>>>>
> >>>>> Heinz
> >>>>>
> >>>>>
> >>>>>
> >>>>>     11/3/18 12:12 PM, Heinz Junkes wrote:
> >>>>>
> >>>>>> Hello friends,
> >>>>>>
> >>>>>> unfortunately, it's only now that I get back to taking care of rtems-5 for epics-base.
> >>>>>>
> >>>>>> And unfortunately, I haven't really taken care of travis-ci yet. I found the last "travis-run” for rtems 4.10:
> >>>>>> https://travis-ci.org/epics-base/epics-base/jobs/450069785.
> >>>>>> I'm going to try to replay this on my computer first.
> >>>>>>
> >>>>>> Do I see it right that I should then try to do exactly that with rtems-5. So on the qemu-system-x86 with the rtems i386 bsp?
> >>>>>>
> >>>>>> The next step would then be on my hardware mvme6100? And maybe also on the qemu for mvme3100?
> >>>>>> @Michael: Can you write me again where I can get the qemu mvme3100 from?
> >>>>>> I'll try my luck and hope to make it to Melbourne.
> >>>>>> Heinz
> >>>>>>
> >>>>> ----------------------------------------------------------------------
> >>>>> Das FHI verarbeitet, speichert und loescht Daten im Rahmen seiner
> >>>>> Geschaeftstaetigkeit gemaess der Datenschutz-Grundverordnung (DSGVO)
> >>>>> [General Data Protection Regulation (GDPR)] der Europaeischen Union.
> >>>>>
> >
> >
> > ----------------------------------------------------------------------
> > Das FHI verarbeitet, speichert und loescht Daten im Rahmen seiner
> > Geschaeftstaetigkeit gemaess der Datenschutz-Grundverordnung (DSGVO)
> > [General Data Protection Regulation (GDPR)] der Europaeischen Union.
> >
>

Navigate by Date:
Prev: Build failed in Jenkins: EPICS-3.14 #256 Jenkins EPICS PSI via Core-talk
Next: Re: Get sub field of Union Marty Kraimer via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Jenkins build is back to normal : EPICS-3.14 #257 Jenkins EPICS PSI via Core-talk
Next: Launchpad: Validate your team's contact email address Launchpad Email Validator via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  <20192020  2021  2022  2023  2024