[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

found MPCI Layer problem?



I think that I have found my trouble with MPCI layer, but now I'm not able to
resolve it...
The _RTEMS_tasks_Information structure,which seem to be instanziated in the file 
cpukit/rtems/include/rtems/rtems/tasks.h, isn't inizialized. In particoular the
camp _RTEMS_tasks_Information->global_table seem to be null.Is needed a cast or
I must inizialite this camp, if yes how and where?
Thanks to all Francesco

Francesco Poletti wrote:
>  
> Hy,
> I have seen to the function _RTEMS_tasks_MP_Process_packet in the file
> cpukit/rtems/src/taskmp.c. as Joel suggested: all seem works well...
> I think that the problem may be in the formulation of the packet or in the
> object table. If anyone can help me to found the formulation of the packet and
> the object table structure I will be very happy! :-)

The global object table structure is defined in
score/include/rtems/score/objectmp.h.
The "global_table" entry in the Objects_Information control block is a 
pointer to an array of them for each object type.  So something like
this
in gdb 

p _RTEMS_tasks_Information.global_table[NODE]

where NODE is the remote node number.

You should be able to walk through _Objects_MP_Open to see it get added
and _Objects_MP_Global_name_search to watch the search.

The packet in question should be a SHMDR "envelope" or "header" followed
by a packet of the structure RTEMS_tasks_MP_Packet.

One distinct possibility is that when I reworked the object name stuff
to better support variable length string names I messed up the MP
portion
of this.  If it doesn't look right when it gets to those routines above
ping me and I will rerun the mp test suite.  I thought it had been run
recently.  But for sure, you are at the point where it would be helpful
to feel good. :)

It might even be worth your time to get the powerpc/psim environment
running to see how another working MP target behaves.

> Tanks to all Francesco.
> Francesco Poletti wrote:
> >
> > Hy, I have booted rtems on my two arm simulator, for implementing MPCI Layer
> > I'm using the shared memory, like this I use the driver in the shmdr
> > dyrectory.
> > I'm using a little test examples in which every node generate a global task
> > and after call:
> > rtems_task_ident( Task_name[ remote_node ], RTEMS_SEARCH_ALL_NODES,
> > &test_tid);
> > That function returned invalid object, I have looked into the MPCI layer using
> > the debugger and I have seen that when the node generate the global task
> > there is a right communication with the other node, but after the
> > rtems_task_ident there isn't communication beetwen the node...
> > Where the node put the Object table? Where can understand how this table
> > function?
> 
> For each class of object, there is local and global object id
> information.
> It is maintained on each node.  The creation of that task should have
> resulted
> in an entry being added to the global object table for classic tasks on
> the
> other node.
> 
> See if you get to the RTEMS_TASKS_MP_ANNOUNCE_CREATE case lable in the
> function _RTEMS_tasks_MP_Process_packet in the file
> cpukit/rtems/src/taskmp.c.
> 
> > Thanks to all Francesco.
> 
> --
> Joel Sherrill, Ph.D.             Director of Research & Development
> joel at OARcorp.com                 On-Line Applications Research
> Ask me about RTEMS: a free RTOS  Huntsville AL 35805
> Support Available                (256) 722-9985

-- 
Joel Sherrill, Ph.D.             Director of Research & Development
joel at OARcorp.com                 On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
Support Available                (256) 722-9985