found MPCI Layer problem?

Joel Sherrill joel.sherrill at OARcorp.com
Thu Jan 9 20:05:21 UTC 2003



Francesco Poletti wrote:
> 
> Because, I don't know why but the function _Objects_Initialize_information
> is never called with parameter supports_global with value true.

Found it.  Global editting gone crazy.  Try the attached patch
and let me know if it helps.

I have run the mptests on the Linux simulator port and they pass there.

--joel

> Francesco Poletti wrote:
> >
> > 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?
> 
> Why isn't it being initialized around line 166 in
> score/src/objectinitializeinformation.c
> (_Objects_Initialize_information)?
> Did you configure with multiprocessing enabled?
> 
> --joel
> 
> > 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
> 
> --
> 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
-------------- next part --------------
cvs server: Diffing .
cvs server: Diffing aclocal
cvs server: Diffing ada
cvs server: Diffing automake
cvs server: Diffing include
cvs server: Diffing include/rtems
cvs server: Diffing itron
cvs server: Diffing itron/include
cvs server: Diffing itron/include/itronsys
cvs server: Diffing itron/include/rtems
cvs server: Diffing itron/include/rtems/itron
cvs server: Diffing itron/inline
cvs server: Diffing itron/inline/rtems
cvs server: Diffing itron/inline/rtems/itron
cvs server: Diffing itron/macros
cvs server: Diffing itron/macros/rtems
cvs server: Diffing itron/macros/rtems/itron
cvs server: Diffing itron/src
cvs server: Diffing libblock
cvs server: Diffing libblock/include
cvs server: Diffing libblock/include/rtems
cvs server: Diffing libblock/src
cvs server: Diffing libcsupport
cvs server: Diffing libcsupport/include
cvs server: Diffing libcsupport/include/motorola
cvs server: Diffing libcsupport/include/rtems
Index: libcsupport/include/rtems/libio.h
===================================================================
RCS file: /usr1/CVS/rtems/cpukit/libcsupport/include/rtems/libio.h,v
retrieving revision 1.40
diff -u -r1.40 libio.h
--- libcsupport/include/rtems/libio.h	2 Dec 2002 19:13:21 -0000	1.40
+++ libcsupport/include/rtems/libio.h	9 Jan 2003 20:03:33 -0000
@@ -468,7 +468,7 @@
 
 #include <unistd.h>
 
-union __dev_t {
+union __rtems_dev_t {
   dev_t device;
   struct {
      rtems_device_major_number major;
@@ -481,7 +481,7 @@
   rtems_device_minor_number _minor
 )
 {
-  union __dev_t temp;
+  union __rtems_dev_t temp;
 
   temp.__overlay.major = _major;
   temp.__overlay.minor = _minor;
@@ -492,7 +492,7 @@
   dev_t device
 )
 {
-  union __dev_t temp;
+  union __rtems_dev_t temp;
 
   temp.device = device;
   return temp.__overlay.major;
@@ -503,7 +503,7 @@
   dev_t device
 )
 {
-  union __dev_t temp;
+  union __rtems_dev_t temp;
 
   temp.device = device;
   return temp.__overlay.minor;
cvs server: Diffing libcsupport/include/sys
cvs server: Diffing libcsupport/include/zilog
cvs server: Diffing libcsupport/src
cvs server: Diffing libfs
cvs server: Diffing libfs/src
cvs server: Diffing libfs/src/dosfs
cvs server: Diffing libfs/src/imfs
cvs server: Diffing libmisc
cvs server: Diffing libmisc/capture
cvs server: Diffing libmisc/cpuuse
cvs server: Diffing libmisc/devnull
cvs server: Diffing libmisc/dummy
cvs server: Diffing libmisc/dumpbuf
cvs server: Diffing libmisc/monitor
cvs server: Diffing libmisc/mw-fb
cvs server: Diffing libmisc/rtmonuse
cvs server: Diffing libmisc/serdbg
cvs server: Diffing libmisc/shell
cvs server: Diffing libmisc/stackchk
cvs server: Diffing libmisc/untar
cvs server: Diffing libmisc/wrapup
cvs server: Diffing libnetworking
cvs server: Diffing libnetworking/arpa
cvs server: Diffing libnetworking/kern
cvs server: Diffing libnetworking/lib
cvs server: Diffing libnetworking/libc
cvs server: Diffing libnetworking/machine
cvs server: Diffing libnetworking/net
cvs server: Diffing libnetworking/netinet
cvs server: Diffing libnetworking/nfs
cvs server: Diffing libnetworking/rtems
cvs server: Diffing libnetworking/sys
cvs server: Diffing libnetworking/vm
cvs server: Diffing libnetworking/wrapup
cvs server: Diffing librpc
cvs server: Diffing librpc/include
cvs server: Diffing librpc/include/rpc
cvs server: Diffing librpc/include/rpcsvc
cvs server: Diffing librpc/src
cvs server: Diffing librpc/src/rpc
cvs server: Diffing librpc/src/rpc/PSD.doc
cvs server: Diffing librpc/src/xdr
cvs server: Diffing posix
cvs server: Diffing posix/include
cvs server: Diffing posix/include/rtems
cvs server: Diffing posix/include/rtems/posix
cvs server: Diffing posix/inline
cvs server: Diffing posix/inline/rtems
cvs server: Diffing posix/inline/rtems/posix
cvs server: Diffing posix/macros
cvs server: Diffing posix/macros/rtems
cvs server: Diffing posix/macros/rtems/posix
cvs server: Diffing posix/src
cvs server: Diffing rtems
cvs server: Diffing rtems/include
cvs server: Diffing rtems/include/rtems
cvs server: Diffing rtems/include/rtems/rtems
cvs server: Diffing rtems/inline
cvs server: Diffing rtems/inline/rtems
cvs server: Diffing rtems/inline/rtems/rtems
cvs server: Diffing rtems/macros
cvs server: Diffing rtems/macros/rtems
cvs server: Diffing rtems/macros/rtems/rtems
cvs server: Diffing rtems/src
Index: rtems/src/msg.c
===================================================================
RCS file: /usr1/CVS/rtems/cpukit/rtems/src/msg.c,v
retrieving revision 1.26
diff -u -r1.26 msg.c
--- rtems/src/msg.c	1 Jul 2002 22:32:31 -0000	1.26
+++ rtems/src/msg.c	9 Jan 2003 20:03:36 -0000
@@ -58,8 +58,8 @@
     RTEMS_MAXIMUM_NAME_LENGTH  /* maximum length of each object's name */
 #if defined(RTEMS_MULTIPROCESSING)
     ,
-    FALSE,                     /* TRUE if this is a global object class */
-    NULL                       /* Proxy extraction support callout */
+    TRUE,                      /* TRUE if this is a global object class */
+    _Message_queue_MP_Send_extract_proxy  /* Proxy extraction support callout */
 #endif
   );
 
Index: rtems/src/part.c
===================================================================
RCS file: /usr1/CVS/rtems/cpukit/rtems/src/part.c,v
retrieving revision 1.17
diff -u -r1.17 part.c
--- rtems/src/part.c	1 Jul 2002 22:32:31 -0000	1.17
+++ rtems/src/part.c	9 Jan 2003 20:03:36 -0000
@@ -48,8 +48,8 @@
     RTEMS_MAXIMUM_NAME_LENGTH    /* maximum length of an object name */
 #if defined(RTEMS_MULTIPROCESSING)
     ,
-    FALSE,                       /* TRUE if this is a global object class */
-    NULL                         /* Proxy extraction support callout */
+    TRUE,                        /* TRUE if this is a global object class */
+    _Partition_MP_Send_extract_proxy  /* Proxy extraction support callout */
 #endif
   );
 
Index: rtems/src/sem.c
===================================================================
RCS file: /usr1/CVS/rtems/cpukit/rtems/src/sem.c,v
retrieving revision 1.21
diff -u -r1.21 sem.c
--- rtems/src/sem.c	1 Jul 2002 22:32:31 -0000	1.21
+++ rtems/src/sem.c	9 Jan 2003 20:03:36 -0000
@@ -71,8 +71,8 @@
     RTEMS_MAXIMUM_NAME_LENGTH    /* maximum length of an object name */
 #if defined(RTEMS_MULTIPROCESSING)
     ,
-    FALSE,                       /* TRUE if this is a global object class */
-    NULL                         /* Proxy extraction support callout */
+    TRUE,                        /* TRUE if this is a global object class */
+    _Semaphore_MP_Send_extract_proxy /* Proxy extraction support callout */
 #endif
   );
  
Index: rtems/src/tasks.c
===================================================================
RCS file: /usr1/CVS/rtems/cpukit/rtems/src/tasks.c,v
retrieving revision 1.38
diff -u -r1.38 tasks.c
--- rtems/src/tasks.c	1 Jul 2002 22:32:31 -0000	1.38
+++ rtems/src/tasks.c	9 Jan 2003 20:03:37 -0000
@@ -258,7 +258,7 @@
     RTEMS_MAXIMUM_NAME_LENGTH  /* maximum length of an object name */
 #if defined(RTEMS_MULTIPROCESSING)
     ,
-    FALSE,                     /* TRUE if this is a global object class */
+    TRUE,                      /* TRUE if this is a global object class */
     NULL                       /* Proxy extraction support callout */
 #endif
   );
cvs server: Diffing sapi
cvs server: Diffing sapi/include
cvs server: Diffing sapi/include/rtems
cvs server: Diffing sapi/inline
cvs server: Diffing sapi/inline/rtems
cvs server: Diffing sapi/macros
cvs server: Diffing sapi/macros/rtems
cvs server: Diffing sapi/src
cvs server: Diffing score
cvs server: Diffing score/cpu
cvs server: Diffing score/cpu/a29k
cvs server: Diffing score/cpu/a29k/rtems
cvs server: Diffing score/cpu/a29k/rtems/score
cvs server: Diffing score/cpu/arm
cvs server: Diffing score/cpu/arm/rtems
cvs server: Diffing score/cpu/arm/rtems/score
cvs server: Diffing score/cpu/c4x
cvs server: Diffing score/cpu/c4x/rtems
cvs server: Diffing score/cpu/c4x/rtems/score
cvs server: Diffing score/cpu/h8300
cvs server: Diffing score/cpu/h8300/rtems
cvs server: Diffing score/cpu/h8300/rtems/score
cvs server: Diffing score/cpu/hppa1.1
cvs server: Diffing score/cpu/hppa1.1/rtems
cvs server: Diffing score/cpu/hppa1.1/rtems/score
cvs server: Diffing score/cpu/i386
cvs server: Diffing score/cpu/i386/rtems
cvs server: Diffing score/cpu/i386/rtems/score
cvs server: Diffing score/cpu/i960
cvs server: Diffing score/cpu/i960/rtems
cvs server: Diffing score/cpu/i960/rtems/score
cvs server: Diffing score/cpu/m68k
cvs server: Diffing score/cpu/m68k/rtems
cvs server: Diffing score/cpu/m68k/rtems/score
cvs server: Diffing score/cpu/mips
cvs server: Diffing score/cpu/mips/rtems
cvs server: Diffing score/cpu/mips/rtems/score
cvs server: Diffing score/cpu/mips64orion
cvs server: Diffing score/cpu/mips64orion/rtems
cvs server: Diffing score/cpu/mips64orion/rtems/score
cvs server: Diffing score/cpu/no_cpu
cvs server: Diffing score/cpu/no_cpu/rtems
cvs server: Diffing score/cpu/no_cpu/rtems/score
cvs server: Diffing score/cpu/or32
cvs server: Diffing score/cpu/or32/rtems
cvs server: Diffing score/cpu/or32/rtems/score
cvs server: Diffing score/cpu/powerpc
cvs server: Diffing score/cpu/powerpc/rtems
cvs server: Diffing score/cpu/powerpc/rtems/new-exceptions
cvs server: Diffing score/cpu/powerpc/rtems/old-exceptions
cvs server: Diffing score/cpu/powerpc/rtems/powerpc
cvs server: Diffing score/cpu/powerpc/rtems/score
cvs server: Diffing score/cpu/sh
cvs server: Diffing score/cpu/sh/rtems
cvs server: Diffing score/cpu/sh/rtems/score
cvs server: Diffing score/cpu/sparc
cvs server: Diffing score/cpu/sparc/rtems
cvs server: Diffing score/cpu/sparc/rtems/score
cvs server: Diffing score/cpu/unix
cvs server: Diffing score/cpu/unix/rtems
cvs server: Diffing score/cpu/unix/rtems/score
cvs server: Diffing score/include
cvs server: Diffing score/include/rtems
cvs server: Diffing score/include/rtems/score
cvs server: Diffing score/inline
cvs server: Diffing score/inline/rtems
cvs server: Diffing score/inline/rtems/score
cvs server: Diffing score/macros
cvs server: Diffing score/macros/rtems
cvs server: Diffing score/macros/rtems/score
cvs server: Diffing score/src
Index: score/src/objectmp.c
===================================================================
RCS file: /usr1/CVS/rtems/cpukit/score/src/objectmp.c,v
retrieving revision 1.13
diff -u -r1.13 objectmp.c
--- score/src/objectmp.c	17 Nov 1999 17:50:39 -0000	1.13
+++ score/src/objectmp.c	9 Jan 2003 20:03:39 -0000
@@ -163,7 +163,7 @@
   Chain_Control      *the_chain;
   Chain_Node         *the_node;
   Objects_MP_Control *the_object;
-  unsigned32          name_to_use = *(unsigned32 *)the_name;  /* XXX variable */
+  unsigned32          name_to_use = the_name;  /* XXX only fixed length names */
 
   if ( nodes_to_search > _Objects_Maximum_nodes )
     return OBJECTS_INVALID_NODE;
cvs server: Diffing wrapup


More information about the users mailing list