Re: [Xenomai-core] [Xenomai-help] XUM - Xenomai User's Meeting

2009-07-21 Thread Niklaus Giger
Am Dienstag 21 Juli 2009 16.05:12 schrieb Wolfgang Denk:
 [Sorry if you recieved this twice; I posted this information before
 in the Xenomai groups as a reply in thread RT_PREEMPT patch and
 other things..., but this did not catch some of the potentially
 interested eyes, so here it goes again.]


 We at DENX are trying to organize something like a Xenomai User's
 Meeting at this year's Real-Time Linux Workshop (September 28 to 30,
 in Dresden, Germany).
Excellent idea. I will try to come.
..

Best regards and thanks for your iniative.

-- 
Niklaus Giger
Wieshoschet 6
CH-8753 Mollis
+41  (0)55 612 20 54 P
+41  (0)55 618 64 68 G

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] zombie thread would not die

2009-03-01 Thread Niklaus Giger
Hi

I successfully ported our basic IO library to Xenomai with the vxWorks
skin running on our PPC405GPr based HCU4 (which was accepted into Linux 
2.6.28). I just added support for one external interrrupt (occurring every 
millisecond) and two CAN interrupts (not yet currently activated).

Now my program starts up, recognizes the HW but stops sometimes after 5 
seconds, sometimes after 30 seconds. Always with a zombie message. Can anyboy 
tell me, where the error is or what I have to check?

I am using  svn://svn.gna.org/svn/xenomai/trunk (Revision 4662).
uname -a gives
Linux hcu4 2.6.28.5-dirty #12 Sun Mar 1 13:45:44 CET 2009 ppc ppc ppc 
GNU/Linux
cat /proc/ipipe/version
2.4-04
cat /proc/interrupts
   CPU0
 16:220   UIC   Level serial
 17:   7971   UIC   Level MAL TX EOB
 18:  12537   UIC   Level MAL RX EOB
 19:  0   UIC   Level CAN1
 20:  0   UIC   Level CAN2
 21:  0   UIC   Level MAL SERR
 22:  0   UIC   Level MAL TX DE
 23:  0   UIC   Level MAL RX DE
 24:  0   UIC   Level EMAC
 25:  0   UIC   Level CPLD
BAD:  0


 Xenomai: fatal: zombie thread iTsk_25 (c18e3e20) would not die...
 CPU  PIDPRI  TIMEOUT  STAT  NAME
  0  0  231  000200080  ROOT
   0  1032   211(45)  100100184  root
   0  1034   231(25)  000100380  tUtilLog
   0  1036   246(10)  000100182  tBBprio
   0  1039   216(40)  000100182  BSysThreadPool0
   0  1040   216(40)  000100182  BSysThreadPool1
   0  1041   216(40)  000100182  BSysThreadPool2
   0  1042   216(40)  000100182  BSysThreadPool3
   0  1043   216(40)  000100182  BSysThreadPool4
   0  1044   216(40)  000100182  BSysThreadPool5
   0  1045   216(40)  000100182  BSysThreadPool6
   0  1046   216(40)  000100182  BSysThreadPool7
   0  1047   216(40)  000100182  BSysThreadPool8
   0  1048   216(40)  000100182  BSysThreadPool9
   0  1049   254(2)   200100186  tBBmsec
Master time base: clock=273984265688

Call Trace:
[c1a8de50] [c0006c7c] show_stack+0x44/0x16c (unreliable)
[c1a8de90] [c00584d8] __xnpod_schedule+0x444/0x634
[c1a8dee0] [c00546b8] xnintr_clock_handler+0x1c4/0x1d8
[c1a8df10] [c004f844] __ipipe_dispatch_wired_nocheck+0x80/0xf4
[c1a8df30] [c0008a74] __ipipe_grab_timer+0x78/0xd4
[c1a8df40] [c0010244] __ipipe_ret_from_except+0x0/0xc

Best regards

-- 
Niklaus Giger


___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] vxWorks.skin: Error in taskActivate

2008-10-30 Thread Niklaus Giger
Hi

While testing my application I found an error in the vxWorks skin.

When calling it on my PPC405 system I found that taskInit does not mimick 
exactly the behaviour.  As the WIND_TDB in xenomai/vxworks is just an integer
one has to add an ifdef if one wants to use this function properly

E.g. I added the following switch in my code

   status = taskInit (tcb_base,..mor parameters);
#ifdef RUNNING_XENOMAI_VXWORKS_SKIN
  status = taskActivate(*(int *)tcb_base);
#else
   status = taskActivate((int)tcb_base);
#endif
 
Is my interpretation correct? Shouldn't this behaviour be documented under 
doc/skins/vxworks-skin.txt?

My proposal is:

Index: doc/txt/vxworks-skin.txt
===
--- doc/txt/vxworks-skin.txt(Revision 4311)
+++ doc/txt/vxworks-skin.txt(Arbeitskopie)
@@ -13,7 +13,7 @@
 The VxWorks (R) emulation module currently mimicks the following
 services:

-taskSpawn, taskInit, taskActivate, taskDelete, taskDeleteForce, taskSuspend,
+taskSpawn, taskInit, taskActivate, taskDelete, taskDeleteForce, taskSuspend,
 taskResume, taskPrioritySet, taskPriorityGet, taskLock, taskUnlock, 
taskIdSelf,
 taskSafe, taskUnsafe, taskDelay, taskIdVerify, taskTcb, taskRestart

@@ -52,6 +52,12 @@

 - taskInit gives a default name if NULL was passed as argument.

+- taskInit stores in WIND_TCB pointed by *pTcb a integer, which can be used
+  in the subsequent call to taskActivate. E.g. change your code from
+  status = taskActivate((int)pTcb);
+  to
+  status = taskActivate(*(int *)pTcb);
+
 - For the moment, the status member of task control blocks is never updated 
to
   reflect the status of a task.



Best regards

Niklaus

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] [PATCH] solo/vxWorks: add rngLib (with testsuite)

2008-10-28 Thread Niklaus Giger
Am Sonntag 26 Oktober 2008 17.02:08 schrieb Philippe Gerum:
 Niklaus Giger wrote:
  Hi
 
  I just found the time to prepare a patch for a substitute for the vxWorks
  rngLib library I have written quite some time ago.
..
Thank you for your review. Attached a corrected version of my patch.
But there a some more points, which I would like to discuss.
 Fair enough, but we would have to pin all VxWorks tasks to the same CPU on
 SMP systems; otherwise, out-of-order memory accesses would kill that code.

Can you do it this?

I am not familiar with this kind of problem as I am still running single 
processor boards. But I am quite sure that our next board will have two (or 
more) processore cores sitting on it. Though I have quite an interest in 
providing a correct solution.

I am not familiar with vxWorks-SMP and therefore I am not sure whether it is a 
good idea to pin all vxWorks tasks to one CPU or whether the user should be 
able to select the tasks he wants. E.g. you might want only the reader and the 
writer of a ring or list on one CPU and other ones to other CPU(s).

.. 
   vxworks/Makefile.in |   18 -
   vxworks/rngLib.c|  152
  +++ vxworks/rngLib.h|
34 ++

 Something must be missing here. vxworks/rngLib.h should contain internal
 definitions, used by the ring buffer implementation code, and that is
 correct in your code. However, include/vxworks/rngLib.h should provide the
 interface to applications; it seems we are missing such a file.
Sorry, I forgot to do git add include/vxworks/rngLib.h, which is attached now 
and  which provides the (opaque) interface to the vxWorks users.
 Since we don't want to export the innards of a ring buffer implementation
 to applications, the interface header should only define the opaque ring
 buffer handle type (i.e. typedef intptr_t RING_ID), and the RNG routine
 prototypes.

..
 Please use the linux-c coding style, basically KR + preposterously large
 indent tabs (8 chars)

Thank you for code snippets for emacs and ident (did put it into my notes as 
it is not the first time I have to deal with such problems).
 Emacs can be taught this way:

 (defun linux-c-mode ()
   C mode with adjusted defaults for use with Xenomai.
   (interactive)
   (c-mode)
   (c-set-style KR)
   (setq tab-width 8)
   (setq indent-tabs-mode t)
   (setq c-basic-offset 8))

 Indent will reformat almost properly with (-T should be used to teach
 indent about the known non-standard types as well):

 $ indent -npro -kr -i8 -ts8 -sob -l80 -ss -ncs -cp1

  +   ring_mem = malloc( sizeof(RING_DESCRIPTOR*) + nbytes);

 The sizeof() argument is wrong. Out-of-bound memory writes are knocking at
 the door.
Thanks for catching this error. The following code should be correct.
ring_mem = xnmalloc(sizeof(RING_DESCRIPTOR) + nbytes + 1);
I need 1 additional byte to be able to use only the read/write-position. This 
allows that the reader only modifies the readPosition and ther writer only
the writePosition.


 Also, please use xnmalloc(). This call will pull memory from the allocator
 selected at built time for the SOLO stack, either TLSF, or standard
 malloc(). --enable-malloc is false by default (i.e. TLSF enabled).
  +   if ( ring_mem == 0) { errno = errnoSet(S_memLib_NOT_ENOUGH_MEMORY);
  return 0; } +
Ack.

 Please compare pointers to NULL (and return null pointers the same way),
 that gives a better hint about the pointerness of the data involved.

Ack.
  +   ring = (RING_DESCRIPTOR *) ring_mem;

 Cast is useless; let's remove visual clutter as much as we can. Actually,
 ring_mem is useless as well; you could optimally work only using the ring
 variable directly. Reducing the number of variable hops allows people to
 work late at night with half a brain.
Ack.

  +   ring-magic = WIND_RING_MAGIC;
  +   ring-bufSize = nbytes;
  +   ring-readPos = 0;
  +   ring-writePos = 0;

 Nitpicking alert: line-feed please. It is visually easier to locate the
 main return value.
Ack.

  +   return (RING_ID) ring_mem;
  +}
  +
  +
  +void rngDelete(RING_ID ring_id)
  +{
  +   RING_DESCRIPTOR *ring = (RING_DESCRIPTOR *) ring_id;
  +   if (ring-magic != WIND_RING_MAGIC) return;

Ack.
 KR

  +   ring-magic = 0;
  +   free(ring);

 xnfree() is the converse call for xnmalloc().
Ack.

..
 linefeed please. Splitting declarations and pure executable statements
 makes it easier for the eyes as well.
Ack.

  +   if (ring-magic != WIND_RING_MAGIC) return -ENOSYS;

 Mm, I guess VxWorks is not even checking there, right? If it does not, then
 I would rather raise an assertion when a bad magic is detected, that would
 only trigger with --enable-debug/--enable-assert.

It is true, that vxWorks does not use a magic. 

What is your prefered way to raise an exception? 

  +   for (j=0; j  maxbytes; j++)
  +   {
  +   if ((ring-readPos) % (ring-bufSize + 1) == savedWritePos)

 ring-readPos should never be out of bounds anyway. Do we

[Xenomai-core] [PATCH] solo/vxWorks: add rngLib (with testsuite)

2008-10-24 Thread Niklaus Giger
Hi

I just found the time to prepare a patch for a substitute for the vxWorks
rngLib library I have written quite some time ago.

The remark from the vxWorks description applies here too
In particular, ring buffers by themselves provide no task synchronization or 
mutual exclusion.
(http://www.slac.stanford.edu/exp/glast/flight/sw/vxdocs/vxworks/ref/rngLib.html)

Therefore this library is only good were there is exactly one writer an one 
reader
envolved.

It would be nice if it could find a place in the xenomai-solo. I am willing to
address any criticism/nitpicking needed to get it into a good shape.

Best regards

Signed-off-by: Niklaus Giger [EMAIL PROTECTED]
---
 include/vxworks/Makefile.am |1 +
 include/vxworks/Makefile.in |1 +
 vxworks/Makefile.am |2 +
 vxworks/Makefile.in |   18 -
 vxworks/rngLib.c|  152 +++
 vxworks/rngLib.h|   34 ++
 vxworks/testsuite/Makefile  |2 +-
 vxworks/testsuite/rng-1.c   |  118 +
 8 files changed, 323 insertions(+), 5 deletions(-)
 create mode 100644 vxworks/rngLib.c
 create mode 100644 vxworks/rngLib.h
 create mode 100644 vxworks/testsuite/rng-1.c

diff --git a/include/vxworks/Makefile.am b/include/vxworks/Makefile.am
index 06dcab2..0c20861 100644
--- a/include/vxworks/Makefile.am
+++ b/include/vxworks/Makefile.am
@@ -7,6 +7,7 @@ includesub_HEADERS =\
lstLib.h\
memPartLib.h\
msgQLib.h   \
+   rngLib.h\
semLib.h\
sysLib.h\
taskInfo.h  \
diff --git a/include/vxworks/Makefile.in b/include/vxworks/Makefile.in
index 0fdc3c4..ad10fd1 100644
--- a/include/vxworks/Makefile.in
+++ b/include/vxworks/Makefile.in
@@ -205,6 +205,7 @@ includesub_HEADERS = \
lstLib.h\
memPartLib.h\
msgQLib.h   \
+   rngLib.h\
semLib.h\
sysLib.h\
taskInfo.h  \
diff --git a/vxworks/Makefile.am b/vxworks/Makefile.am
index 08e7cc8..a64141e 100644
--- a/vxworks/Makefile.am
+++ b/vxworks/Makefile.am
@@ -11,6 +11,8 @@ libvxworks_la_SOURCES = \
memPartLib.h\
msgQLib.c   \
msgQLib.h   \
+   rngLib.c\
+   rngLib.h\
semLib.c\
semLib.h\
taskLib.c   \
diff --git a/vxworks/Makefile.in b/vxworks/Makefile.in
index b8d0ce7..2d08bbd 100644
--- a/vxworks/Makefile.in
+++ b/vxworks/Makefile.in
@@ -57,10 +57,10 @@ libvxworks_la_LIBADD =
 am_libvxworks_la_OBJECTS = libvxworks_la-errnoLib.lo \
libvxworks_la-intLib.lo libvxworks_la-kernelLib.lo \
libvxworks_la-lstLib.lo libvxworks_la-memPartLib.lo \
-   libvxworks_la-msgQLib.lo libvxworks_la-semLib.lo \
-   libvxworks_la-taskLib.lo libvxworks_la-taskInfo.lo \
-   libvxworks_la-tickLib.lo libvxworks_la-wdLib.lo \
-   libvxworks_la-sysLib.lo
+   libvxworks_la-msgQLib.lo libvxworks_la-rngLib.lo \
+   libvxworks_la-semLib.lo libvxworks_la-taskLib.lo \
+   libvxworks_la-taskInfo.lo libvxworks_la-tickLib.lo \
+   libvxworks_la-wdLib.lo libvxworks_la-sysLib.lo
 libvxworks_la_OBJECTS = $(am_libvxworks_la_OBJECTS)
 libvxworks_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
@@ -232,6 +232,8 @@ libvxworks_la_SOURCES = \
memPartLib.h\
msgQLib.c   \
msgQLib.h   \
+   rngLib.c\
+   rngLib.h\
semLib.c\
semLib.h\
taskLib.c   \
@@ -324,6 +326,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
 @AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
 @AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
[EMAIL PROTECTED]@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
 @AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
 @AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
 @AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
@@ -394,6 +397,13 @@ libvxworks_la-msgQLib.lo: msgQLib.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@  DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(libvxworks_la_CPPFLAGS) 
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libvxworks_la-msgQLib.lo `test -f 
'msgQLib.c' || echo '$(srcdir)/'`msgQLib.c

+libvxworks_la-rngLib.lo: rngLib.c
[EMAIL PROTECTED]@  $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) 
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(libvxworks_la_CPPFLAGS) 
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libvxworks_la-rngLib.lo -MD -MP -MF 
$(DEPDIR)/libvxworks_la-rngLib.Tpo -c -o

[Xenomai-core] [PATCH] vxWorks/lstLib: Check for nil-pointer

2008-10-23 Thread Niklaus Giger
Here some trivial fixes with their respective tests to handle the case of nil 
pointers corrrectly.

Signed-off-by: Niklaus Giger [EMAIL PROTECTED]
---
 include/vxworks/lstLib.h  |6 +++---
 vxworks/lstLib.c  |4 +++-
 vxworks/testsuite/lst-1.c |   17 +++--
 3 files changed, 13 insertions(+), 14 deletions(-)

diff --git a/include/vxworks/lstLib.h b/include/vxworks/lstLib.h
index b78c2c3..38f0598 100644
--- a/include/vxworks/lstLib.h
+++ b/include/vxworks/lstLib.h
@@ -65,7 +65,7 @@ static inline void lstDelete(LIST *l, NODE *n)

 static inline NODE *lstFirst(LIST *l)
 {
-   if (list_empty(l-list))
+   if (l == NULL || list_empty(l-list))
return NULL;

return list_first_entry(l-list, struct NODE, link);
@@ -75,7 +75,7 @@ static inline NODE *lstGet(LIST *l)
 {
struct NODE *n;

-   if (list_empty(l-list))
+   if (l == NULL || list_empty(l-list))
return NULL;

n = list_pop_entry(l-list, struct NODE, link);
@@ -100,7 +100,7 @@ static inline void lstInsert(LIST *l, NODE *nprev, NODE *n)

 static inline NODE *lstLast(LIST *l)
 {
-   if (list_empty(l-list))
+   if (l == NULL || list_empty(l-list))
return NULL;

return list_last_entry(l-list, struct NODE, link);
diff --git a/vxworks/lstLib.c b/vxworks/lstLib.c
index 58358f0..56880b4 100644
--- a/vxworks/lstLib.c
+++ b/vxworks/lstLib.c
@@ -44,7 +44,7 @@ NODE *lstNth(LIST *l, int nodenum)
struct holder *holder;
int nth;

-   if (nodenum = 0)
+   if (l == 0 || nodenum = 0)
return NULL;

if (nodenum = l-count  2) { /* nodenum is 1-based. */
@@ -89,6 +89,8 @@ int lstFind(LIST *l, NODE *n)
 {
struct holder *holder;
int nth = 1;
+   if (l == 0)
+   return ERROR;

list_for_each(holder, l-list) {
if (holder == n-link)
diff --git a/vxworks/testsuite/lst-1.c b/vxworks/testsuite/lst-1.c
index 8b42692..d95d8b8 100644
--- a/vxworks/testsuite/lst-1.c
+++ b/vxworks/testsuite/lst-1.c
@@ -12,16 +12,15 @@ void rootTask(long a0, long a1, long a2, long a3, long a4,
 {
NODE first, second, third, fourth;
LIST list;
-   int ret;

traceobj_enter(trobj);

-/*
-  traceobj_assert(trobj, 0 == lstNth (0, 1));
-  traceobj_assert(trobj, 0 == lstFirst(0));
-  traceobj_assert(trobj, 0 == lstLast(0));
-*/
-   lstInit(list);
+   traceobj_assert(trobj, 0 == lstNth (0, 1));
+   traceobj_assert(trobj, 0 == lstFirst(0));
+   traceobj_assert(trobj, 0 == lstLast(0));
+   traceobj_assert(trobj, 0 == lstGet(0));
+
+   lstInit(list);
traceobj_assert(trobj, 0 == lstCount(list));
traceobj_assert(trobj, NULL == lstFirst(list));
traceobj_assert(trobj, 0 == lstNth(list, 0));
@@ -41,7 +40,7 @@ void rootTask(long a0, long a1, long a2, long a3, long a4,
traceobj_assert(trobj, 2 == lstCount(list));
traceobj_assert(trobj, first == lstFirst(list));
traceobj_assert(trobj, second == lstLast(list));
-   traceobj_assert(trobj, NULL == lstPrevious(first)); // breaks here 
under xenomai-solo
+   traceobj_assert(trobj, NULL == lstPrevious(first));
traceobj_assert(trobj, 0 == lstNth(list, 0));
traceobj_assert(trobj, first  == lstNth(list, 1));
traceobj_assert(trobj, second == lstNth(list, 2));
@@ -127,8 +126,6 @@ void rootTask(long a0, long a1, long a2, long a3, long a4,
traceobj_assert(trobj, 0 == lstNth(list, 4));
traceobj_assert(trobj, 0 == lstNth(list, 5));

-   traceobj_assert(trobj, ret == OK);
-
traceobj_exit(trobj);
 }

--
1.6.0.2



___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Updated ksrc/skins/native/snippet/user_irq.c

2008-09-30 Thread Niklaus Giger
Hi

While I struggled to test the Xenomai interrupt handling on my PPC405 system, 
I finally found at least a nice example to see that a few things are indeed 
working fine.

I attach the modified user_irq.c, which I used to add a custom interrupt
handling routine to the ethernet receive interrupt and propagating it
afterwards to the Linux kernel.

I think it is quite a neat example and should be able to run on a variety of 
platforms if the user selects an appropriate IRQ.

Is the attached patch good enough or did I made any mistakes?

Best regards

-- 
NIklaus Giger

Index: ksrc/skins/native/snippets/user_irq.c
===
--- ksrc/skins/native/snippets/user_irq.c	(Revision 4192)
+++ ksrc/skins/native/snippets/user_irq.c	(Arbeitskopie)
@@ -1,57 +1,111 @@
+/*
+ * (c) 2008 Niklaus Giger, [EMAIL PROTECTED]
+ *
+ * A small example which shows how to use the native xenomai skin to
+ * catch an interrupt and forward it afterwards to the Linux kernel.
+ *
+ * Take some care to choose the interrupt you want to use.
+ * Use one, which shows up in /proc/interrupts and which has quite few
+ * occurences. E.g. I did choose 18 as my /proc/interrupts looked like
+ * 	 CPU0
+ * 16:194   UIC   Level serial
+ * 17:   7932   UIC   Level MAL TX EOB
+ * 18:  12895   UIC   Level MAL RX EOB
+ * After running the interrupt service routine we will forward the interrupt to
+ * the linux kernel. Therefore no harm should be done by intercepting it.
+ *
+ */
+#define IRQ_NR18
+
 #include sys/mman.h
 #include native/task.h
 #include native/intr.h
+#include unistd.h
+#include stdlib.h
 
-#define IRQ_NUMBER 7  /* Intercept interrupt #7 */
 #define TASK_PRIO  99 /* Highest RT priority */
 #define TASK_MODE  0  /* No flags */
 #define TASK_STKSZ 0  /* Stack size (use default one) */
 
+void cleanup (void);
+
 RT_INTR intr_desc;
-
 RT_TASK server_desc;
 
+static int counter;
+
 void irq_server (void *cookie)
-
 {
-for (;;) {
+	int j;
+	for (;;) {
 
-   /* Wait for the next interrupt on channel #7. */
-   err = rt_intr_wait(intr_desc,TM_INFINITE);
-
-   if (!err) {
-   /* Process interrupt. */
-   }
-}
+		/* Wait for the next interrupt. */
+		j = rt_intr_wait(intr_desc,TM_INFINITE);
+		if (j == -EIDRM) {
+			printf(%s: interrupt descriptor deleted. Exit?\n,
+__FUNCTION__);
+			return;
+		}
+		if (j0) {
+			printf(%s: error %d occured. We will exit\n,
+__FUNCTION__, j);
+			return;
+		}
+		/* j is the nr of times the interrupt occured */
+		counter+= j;
+		/* Process interrupt.
+		 * Do you have any LED where you can see your progress ?
+		 *sysLedSet(counter);
+		 */
+	}
 }
 
 int main (int argc, char *argv[])
-
 {
-int err;
+	int err;
+	atexit(cleanup);
+	mlockall(MCL_CURRENT|MCL_FUTURE);
 
-mlockall(MCL_CURRENT|MCL_FUTURE);
-
-/* ... */
-
-err = rt_intr_create(intr_desc,MyIrq,IRQ_NUMBER,0);
-
-/* ... */
-
-err = rt_task_create(server_desc,
-			 MyIrqServer,
-			 TASK_STKSZ,
-			 TASK_PRIO,
-			 TASK_MODE);
-if (!err)
-	rt_task_start(server_desc,irq_server,NULL);
-
-/* ... */
+	/* Do not forget to pass I_PROPAGATE as the last parameter
+	 * or your Linux will hang or not function properly.
+	 * You have be warned!!
+	 */
+	err = rt_intr_create(intr_desc,myIrq,IRQ_NR, I_PROPAGATE);
+	if (err == -ENOSYS) {
+		printf(%s: rt_intr_create returned ENOSYS\n, __FUNCTION__);
+		printf(Did your forget to set CONFIG_XENO_OPT_NATIVE_INTR\n);
+		printf(in the kernel config under:\n);
+		printf(Real-Time Subsystem..Interfaces..Native-API..\n);
+		return 2;
+	}
+	if (err) {
+		printf(%s: rt_intr_create failed with error %d\n,
+			__FUNCTION__, err);
+		return 2;
+	}
+	err = rt_task_create(server_desc,
+MyIrqServer,
+TASK_STKSZ,
+TASK_PRIO,
+TASK_MODE);
+	if (err) {
+		printf(%s: rt_task_create failed with error %d\n,
+			__FUNCTION__, err);
+		return 2;
+	}
+	printf(ISR test program: Started successfully the irq task\n);
+	printf(Please generate some interrupts on IRQ %d.\n,
+		IRQ_NR);
+	printf(Number of interrupts serviced will be shown in 10 seconds.\n);
+	err = rt_task_start(server_desc,irq_server, 0xbeef);
+	sleep(10); /* or do you prefer pause() to wait for Ctrl-C ? */
+	printf(All okay. Did see %d interrupts\n, counter);
+	return 0;
 }
 
 void cleanup (void)
-
 {
-rt_intr_delete(intr_desc);
-rt_task_delete(server_desc);
+	rt_intr_delete(intr_desc);
+	rt_task_delete(server_desc);
+	printf(Cleaning up. Did see %d interrupts\n, counter);
 }
/*
 * (c) 2008 Niklaus Giger, [EMAIL PROTECTED]
 *
 * A small example which shows how to use the native xenomai skin to
 * catch an interrupt and forward it afterwards to the Linux kernel.
 *
 * Take some care to choose the interrupt you want to use.
 * Use one, which shows up in /proc/interrupts and which has quite few
 * occurences. E.g. I did choose 18 as my /proc/interrupts looked like
 * 	 CPU0
 * 16:194   UIC

Re: [Xenomai-core] Problems using rt_intr_wait on PowerPC

2008-09-29 Thread Niklaus Giger
Hi

I still could not figure out, what is going wrong. It seem that no
interrupt is coming through. I would appreciate if anybody could take
a look at the attached program.

Since yesterday I fixed the following two errors:
rt_intr_create returned ENOSYS, as CONFIG_XENO_OPT_NATIVE_INTR was
not enabled.

Secondly I erronously ignored the -EIDRM return value from rt_intr_wait.

I am puzzled that (as seen on this input) that  rt_intr_enable returns ENODEV.
It seems that is used to check the validity include/asm-powerpc/wrappers.h
but I cannot figure out the reason why it fails.
 main: counter1 0 errors 0 irq_number 25
 main: rt_intr_create returns 0 ENOSYS ist 38
 main: rt_task_create returns 0
 main: before enabling interrupts
 enableInt: rt_intr_enable failed -19 ENODEV 19
 irq_server: Starting. intrDesc 0x10048184 cookie 0xbeef
 main: rt_task_start returns 0
 enableInt: rt_intr_enable failed -19 ENODEV 19
 main: counter 0 errors 0 done
 irq_server: deleted interrupt object descriptor -43
 cleanup: counter 0 errors 0 done
What I see however in /proc/interrupts that my interrupt 25
does not show up, e.g. 
  cat /proc/interrupts
CPU0
  16:   2371   UIC   Level serial
  17:   8996   UIC   Level MAL TX EOB
  18:  14879   UIC   Level MAL RX EOB
  19:  0   UIC   Level MAL SERR
  20:  0   UIC   Level MAL TX DE
  21:  0   UIC   Level MAL RX DE
  22:  0   UIC   Level EMAC
 BAD:  0
I am a little bit confused about what I have to do to get my interrupt
handler working.

Best regards

Am Sonntag 28 September 2008 23.21:24 schrieb Niklaus Giger:
 Hi

 Based on the user_irq.c I created a simple test program for my PPC405GPr
 board.

 We have a FPGA which generates an interrupt every millisecond.
 It seems to work as simple test (fire it once and assure that it
 sets the interrupt-bit).

 When I connect it to the irq_server however (letting the main task
 sleep 1 second) I get around 2321964 error and not a single OK from
 rt_intr_wait.
 Also my debug LED flicker very fast.
Th
 The FPGA is connected to the External Interrupt 0, which has the number 25.

 I think that I either got the polarity/level/edge register wrong or
 I am playing with the wrong interrupt.

 Could anybody tell me, whether I used the correct interrupt number?
 Does Linux somewhere overwrite the values for the UIC polarity/level, etc
 settings written by U-Boot (e.g. for my board in board_early_init_f)

 Any hints are welcome.

 Best regards

-- 
NIklaus Giger

#include sys/mman.h
#include native/task.h
#include native/intr.h
#include bsp_def.h
#include unistd.h
#include stdlib.h

#define TASK_PRIO  99 /* Highest RT priority */
#define TASK_MODE  0  /* No flags */
#define TASK_STKSZ 0  /* Stack size (use default one) */

RT_INTR intr_desc;

RT_TASK server_desc;
static int counter, errCounter;
int s_tickResetValue  = TICK_INT_ENABLE | TICK_INT_RESET | TICK_START | TICK_INTERVAL_1000_US;
int s_tickEnableValue = TICK_INT_ENABLE  | TICK_START | TICK_INTERVAL_1000_US;
void cleanup (void);

void enableInt()
{
	int err;
	sys_set_tick_control_register_value(TICK_INT_RESET);
	sys_set_tick_control_register_value(s_tickResetValue);
	sys_set_tick_control_register_value(s_tickEnableValue);
	err = rt_intr_enable(intr_desc);
	printf(%s: rt_intr_enable failed %d ENODEV %d\n, __FUNCTION__, err, ENODEV);
}

void irq_server (void *cookie)
{
	int err;
	printf(%s: Starting. intrDesc %p cookie %p\n, __FUNCTION__, intr_desc, cookie);
	for (;;) {

		/* Wait for the next interrupt on channel #7. */
		err = rt_intr_wait(intr_desc,TM_INFINITE);
		if (err == -EIDRM) { printf(%s: deleted interrupt object descriptor %d\n, __FUNCTION__, err); return; }
		if (err) errCounter++; 
		else {
			/* Process interrupt. */
			counter++;
			sys_set_tick_control_register_value(s_tickResetValue);
			sys_set_tick_control_register_value(s_tickEnableValue);
		}
		sysLedSet((errCounter+counter)/1000);
		if ((counter + errCounter)  80) 
		{
			printf(%s: Done. counter1 %d errors %d\n, __FUNCTION__, counter, errCounter);
			return;
		}
	}
}

int main (int argc, char *argv[])
{
	int err;
	int irq_number;
	atexit(cleanup);
	mlockall(MCL_CURRENT|MCL_FUTURE);
	bsp_init();
	irq_number = sys_get_imc_interrupt_vector(IMC_BUS_INTERRUPT_0);

	counter = 0;
	errCounter = 0;
	sysLedSet(3);

	printf(%s: counter1 %d errors %d irq_number %d\n, __FUNCTION__, counter, errCounter,irq_number);
	err = rt_intr_create(intr_desc,Ext Int 0,irq_number, 0);
	printf(%s: rt_intr_create returns %d ENOSYS ist %d\n, __FUNCTION__, err, ENOSYS);
	if (err) {
		printf(%s: rt_intr_create failed %d ENOSYS ist %d\n, __FUNCTION__, err, ENOSYS);
		printErrno(-err);
		return 2;
	}
	err = rt_task_create(server_desc,
MyIrqServer,
TASK_STKSZ,
TASK_PRIO,
TASK_MODE);
	printf(%s: rt_task_create returns %d\n, __FUNCTION__, err);
	if (err) {
		printf(%s: rt_task_create failed %d\n, __FUNCTION__, err);
		printErrno(-err

[Xenomai-core] Problems using rt_intr_wait on PowerPC

2008-09-28 Thread Niklaus Giger
Hi

Based on the user_irq.c I created a simple test program for my PPC405GPr 
board.

We have a FPGA which generates an interrupt every millisecond.
It seems to work as simple test (fire it once and assure that it
sets the interrupt-bit).

When I connect it to the irq_server however (letting the main task
sleep 1 second) I get around 2321964 error and not a single OK from 
rt_intr_wait.
Also my debug LED flicker very fast.
The FPGA is connected to the External Interrupt 0, which has the number 25.

I think that I either got the polarity/level/edge register wrong or
I am playing with the wrong interrupt.

Could anybody tell me, whether I used the correct interrupt number?
Does Linux somewhere overwrite the values for the UIC polarity/level, etc
settings written by U-Boot (e.g. for my board in board_early_init_f)

Any hints are welcome.

Best regards

-- 
NIklaus Giger


___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] xenomai-solo-vxWorks: Calling sem Give twice on a binary semaphore should not return an er ror

2008-09-22 Thread Niklaus Giger
Hi 

Thanks a lot. This patch does indeed fix my problem.

Best regards

Niklaus
Am Montag 22 September 2008 16.49:01 schrieb Philippe Gerum:
 Niklaus Giger wrote:
  Hi
 
  Examining errors in my big testsuite I discovered that giving a second
  time a binary semaphore xenomai returns an error where vxWorks reports
  OK.

 Thanks for reporting. That patch should fix this issue:

 diff --git a/vxworks/semLib.c b/vxworks/semLib.c
 index 62f9326..6467354 100644
 --- a/vxworks/semLib.c
 +++ b/vxworks/semLib.c
 @@ -104,8 +104,11 @@ static STATUS xsem_give(struct wind_sem *sem)
   if (syncobj_lock(sem-u.xsem.sobj, syns))
   return S_objLib_OBJ_ID_ERROR;

 - if (sem-u.xsem.value = sem-u.xsem.maxvalue)
 - ret = S_semLib_INVALID_OPERATION;
 + if (sem-u.xsem.value = sem-u.xsem.maxvalue) {
 + if (sem-u.xsem.maxvalue == INT_MAX)
 + /* No wrap around. */
 + ret = S_semLib_INVALID_OPERATION;
 + }
   else if (++sem-u.xsem.value = 0)
   syncobj_post(sem-u.xsem.sobj);

  See the attached test case.
 
  sudo  ../../bin/BSys/mak/xeno_vx-solo/debug/tst
  assert passed at testTask line 65
  assert passed at testTask line 66
  assert failed at testTask line 67
  testTask done
  Xenomai/SOLO: failed to remove registry mount point /mnt/xenomai/4569
  (errno=16)
 
  Best regards
 
 
 
  
 
  ___
  Xenomai-core mailing list
  Xenomai-core@gna.org
  https://mail.gna.org/listinfo/xenomai-core

-- 
NIklaus Giger


___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] [PATCH] Adding some .gitignore

2008-09-22 Thread Niklaus Giger
After a ./configure in my git clone, git status cluttered my screen withe a lot 
of uninteresting files. In order to get rid of them I created the attached 
.gitignore files.

Signed-off-by: Niklaus Giger [EMAIL PROTECTED]

---
 .gitignore   |   47 
++
 base/.gitignore  |8 +++
 config/.gitignore|9 
 include/.gitignore   |8 +++
 include/psos/.gitignore  |8 +++
 include/vxworks/.gitignore   |8 +++
 include/xenomai/.gitignore   |8 +++
 psos/.gitignore  |8 +++
 scripts/.gitignore   |9 
 vxworks/.gitignore   |8 +++
 vxworks/testsuite/.gitignore |   10 +
 11 files changed, 131 insertions(+), 0 deletions(-)
 create mode 100644 .gitignore
 create mode 100644 base/.gitignore
 create mode 100644 config/.gitignore
 create mode 100644 include/.gitignore
 create mode 100644 include/psos/.gitignore
 create mode 100644 include/vxworks/.gitignore
 create mode 100644 include/xenomai/.gitignore
 create mode 100644 psos/.gitignore
 create mode 100644 scripts/.gitignore
 create mode 100644 vxworks/.gitignore
 create mode 100644 vxworks/testsuite/.gitignore

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000..af911eb
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,47 @@
+#
+# NOTE! Don't add files that are generated in specific
+# subdirectories here. Add them in the .gitignore file
+# in that subdirectory instead.
+#
+# Normal rules
+#
+
+*.rej
+*.orig
+*.a
+*.o
+*~
+*.la
+*.lo
+
+#
+# Top-level generic files
+#
+
+#
+# Generated files
+#
+/conf2*
+*.depend
+.deps
+.libs
+*.lineno
+libtool
+config.log
+/Makefile
+stamp-h1
+xeno_config.h
+config.status
+
+# for output of format-patch
+00*
+
+# stgit generated dirs
+patches-*
+
+# quilt's files
+patches
+series
+
+# cscope files
+cscope.*
diff --git a/base/.gitignore b/base/.gitignore
new file mode 100644
index 000..13daaa8
--- /dev/null
+++ b/base/.gitignore
@@ -0,0 +1,8 @@
+#
+# NOTE! Don't add files that are generated in specific
+# subdirectories here. Add them in the .gitignore file
+# in that subdirectory instead.
+#
+# Generated files
+#
+/Makefile
diff --git a/config/.gitignore b/config/.gitignore
new file mode 100644
index 000..e96352c
--- /dev/null
+++ b/config/.gitignore
@@ -0,0 +1,9 @@
+#
+# NOTE! Don't add files that are generated in specific
+# subdirectories here. Add them in the .gitignore file
+# in that subdirectory instead.
+#
+# Generated files
+#
+/Makefile
+*.lineno
diff --git a/include/.gitignore b/include/.gitignore
new file mode 100644
index 000..13daaa8
--- /dev/null
+++ b/include/.gitignore
@@ -0,0 +1,8 @@
+#
+# NOTE! Don't add files that are generated in specific
+# subdirectories here. Add them in the .gitignore file
+# in that subdirectory instead.
+#
+# Generated files
+#
+/Makefile
diff --git a/include/psos/.gitignore b/include/psos/.gitignore
new file mode 100644
index 000..13daaa8
--- /dev/null
+++ b/include/psos/.gitignore
@@ -0,0 +1,8 @@
+#
+# NOTE! Don't add files that are generated in specific
+# subdirectories here. Add them in the .gitignore file
+# in that subdirectory instead.
+#
+# Generated files
+#
+/Makefile
diff --git a/include/vxworks/.gitignore b/include/vxworks/.gitignore
new file mode 100644
index 000..13daaa8
--- /dev/null
+++ b/include/vxworks/.gitignore
@@ -0,0 +1,8 @@
+#
+# NOTE! Don't add files that are generated in specific
+# subdirectories here. Add them in the .gitignore file
+# in that subdirectory instead.
+#
+# Generated files
+#
+/Makefile
diff --git a/include/xenomai/.gitignore b/include/xenomai/.gitignore
new file mode 100644
index 000..13daaa8
--- /dev/null
+++ b/include/xenomai/.gitignore
@@ -0,0 +1,8 @@
+#
+# NOTE! Don't add files that are generated in specific
+# subdirectories here. Add them in the .gitignore file
+# in that subdirectory instead.
+#
+# Generated files
+#
+/Makefile
diff --git a/psos/.gitignore b/psos/.gitignore
new file mode 100644
index 000..13daaa8
--- /dev/null
+++ b/psos/.gitignore
@@ -0,0 +1,8 @@
+#
+# NOTE! Don't add files that are generated in specific
+# subdirectories here. Add them in the .gitignore file
+# in that subdirectory instead.
+#
+# Generated files
+#
+/Makefile
diff --git a/scripts/.gitignore b/scripts/.gitignore
new file mode 100644
index 000..d618ccb
--- /dev/null
+++ b/scripts/.gitignore
@@ -0,0 +1,9 @@
+#
+# NOTE! Don't add files that are generated in specific
+# subdirectories here. Add them in the .gitignore file
+# in that subdirectory instead.
+#
+# Generated files
+#
+/Makefile
+xeno-config
diff --git a/vxworks/.gitignore b/vxworks/.gitignore
new file mode 100644
index 000..13daaa8
--- /dev/null
+++ b/vxworks/.gitignore
@@ -0,0 +1,8 @@
+#
+# NOTE! Don't add files that are generated in specific
+# subdirectories here. Add them in the .gitignore file
+# in that subdirectory instead.
+#
+# Generated files

[Xenomai-core] [PATCH] vxworks: Adding tests for lstLib

2008-09-22 Thread Niklaus Giger
While testing I found that the behaviour of lstLib is not mimicked
correctly by Xenomai-Solo.

I wrote a simple testsuite which passed all assertions on my
vxWorks 6.6 system. It compiles under xxWorks and xenomai-solo.

I do not object, if you remove the conditional __SOLO__. Personally I 
appreciate if I am able to run my testsuits without manual changes under 
xenomai-solo and vxworks.

At the moment they fail miserably under xenomai-solo.

It does not test splitting/merging lists.

Signed-off-by: Niklaus Giger [EMAIL PROTECTED]
---
 vxworks/testsuite/Makefile |2 +-
 vxworks/testsuite/lst-1.c  |  190 

 2 files changed, 191 insertions(+), 1 deletions(-)
 create mode 100644 vxworks/testsuite/lst-1.c

diff --git a/vxworks/testsuite/Makefile b/vxworks/testsuite/Makefile
index 4967151..d1ce203 100644
--- a/vxworks/testsuite/Makefile
+++ b/vxworks/testsuite/Makefile
@@ -5,7 +5,7 @@ ifeq ($(prefix),)
 $(error Please add xenomai-install-path/bin to your PATH variable)
 endif
 
-TESTS := task-1 task-2 msgQ-1 msgQ-2 msgQ-3 wd-1 sem-1 sem-2 sem-3 sem-4
+TESTS := task-1 task-2 msgQ-1 msgQ-2 msgQ-3 wd-1 sem-1 sem-2 sem-3 sem-4 
lst-1
 
 CFLAGS := $(shell $(XENO_CONFIG) --cflags) -g
 LDFLAGS := -lvxworks $(shell $(XENO_CONFIG) --ldflags)
diff --git a/vxworks/testsuite/lst-1.c b/vxworks/testsuite/lst-1.c
new file mode 100644
index 000..2b19511
--- /dev/null
+++ b/vxworks/testsuite/lst-1.c
@@ -0,0 +1,190 @@
+#ifdef __SOLO__
+#include stdio.h
+#include stdlib.h
+#include xenomai/traceobj.h
+#include vxworks/errnoLib.h
+#include vxworks/taskLib.h
+#include vxworks/lstLib.h
+
+static struct traceobj trobj;
+
+static int tseq[] = {
+   10, 11, 12, 13, 20,
+   1, 14, 15, 2, 3, 4,
+   5, 6, 7, 8, 16, 17, 18,
+   9, 21, 19
+};
+#else
+#include stdio.h
+#include unistd.h
+#include stdlib.h
+#include errnoLib.h
+#include taskLib.h
+#include semLib.h
+
+#define traceobj_init(a, b, c)
+#define traceobj_enter(trobj)
+#define traceobj_exit(trobj)
+#define traceobj_join(trobj)
+
+static int nrPassed;
+
+#define traceobj_assert(obj, cond) \
+  if (cond)   nrPassed ++; \
+  else printf(assert failed at %s line %d\n, __FUNCTION__, __LINE__);\
+
+#define traceobj_mark(a, b)
+#define traceobj_verify(a, b, c)
+#endif
+
+void rootTask(long a0, long a1, long a2, long a3, long a4,
+ long a5, long a6, long a7, long a8, long a9)
+{
+   int ret;
+
+   traceobj_enter(trobj);
+
+   traceobj_mark(trobj, 1);
+
+LIST list;
+NODE  first, second, third, fourth;
+traceobj_assert(trobj, 0 == lstNth (0, 1));
+/*
+traceobj_assert(trobj, 0 == lstFirst(0));
+traceobj_assert(trobj, 0 == lstLast(0));
+ */
+lstInit(list);
+traceobj_assert(trobj, 0 == lstCount(list));
+traceobj_assert(trobj, 0 == lstFirst(list));
+traceobj_assert(trobj, 0 == lstNth (list, 0));
+traceobj_assert(trobj, 0 == lstNth (list, 1));
+
+lstAdd(list, first);
+traceobj_assert(trobj, 1 == lstCount(list));
+traceobj_assert(trobj, first == lstFirst(list));
+traceobj_assert(trobj, first == lstLast(list));
+traceobj_assert(trobj, 0 == lstPrevious (first));
+traceobj_assert(trobj, 0 == lstNext (first));
+traceobj_assert(trobj, 0 == lstNth (list, 0));
+traceobj_assert(trobj, first == lstNth (list, 1));
+traceobj_assert(trobj, 0 == lstNth (list, 2));
+
+lstAdd(list, second);
+traceobj_assert(trobj, 2 == lstCount(list));
+traceobj_assert(trobj, first == lstFirst(list));
+traceobj_assert(trobj, second == lstLast(list));
+traceobj_assert(trobj, 0 == lstPrevious (first)); // breaks here under 
xenomai-solo
+traceobj_assert(trobj, 0 == lstNth (list, 0));
+traceobj_assert(trobj, first  == lstNth (list, 1));
+traceobj_assert(trobj, second == lstNth (list, 2));
+traceobj_assert(trobj, 0 == lstNth (list, 3));
+
+lstAdd(list, third);
+traceobj_assert(trobj, 3 == lstCount(list));
+traceobj_assert(trobj, 0 == lstPrevious (first));
+traceobj_assert(trobj, third == lstLast(list));
+traceobj_assert(trobj, 0 == lstNth (list, 0));
+traceobj_assert(trobj, first  == lstNth (list, 1));
+traceobj_assert(trobj, second == lstNth (list, 2));
+traceobj_assert(trobj, third  == lstNth (list, 3));
+traceobj_assert(trobj, 0 == lstNth (list, 4));
+
+lstAdd(list, fourth);
+traceobj_assert(trobj, 4 == lstCount(list));
+traceobj_assert(trobj, 0 == lstPrevious (first));
+traceobj_assert(trobj, fourth == lstLast(list));
+traceobj_assert(trobj, 0 == lstNth (list, 0));
+traceobj_assert(trobj, first  == lstNth (list, 1));
+traceobj_assert(trobj, second == lstNth (list, 2));
+traceobj_assert(trobj, third  == lstNth (list, 3));
+traceobj_assert(trobj, fourth == lstNth (list, 4));
+traceobj_assert(trobj, 0 == lstNth (list, 5));
+
+lstDelete(list, third);
+traceobj_assert(trobj, 3 == lstCount(list));
+traceobj_assert(trobj, 0 == lstPrevious

[Xenomai-core] xenomai-solo-vxWorks: Calling semGive twice on a binary semaphore should not return an error

2008-09-21 Thread Niklaus Giger
Hi

Examining errors in my big testsuite I discovered that giving a second
time a binary semaphore xenomai returns an error where vxWorks reports OK.

See the attached test case.
 sudo  ../../bin/BSys/mak/xeno_vx-solo/debug/tst
 assert passed at testTask line 65
 assert passed at testTask line 66
 assert failed at testTask line 67
 testTask done
 Xenomai/SOLO: failed to remove registry mount point /mnt/xenomai/4569
 (errno=16)

Best regards

-- 
NIklaus Giger

#include stdio.h
#include unistd.h
#include stdlib.h


#define assert(cond) \
  if (!cond) printf(assert failed at %s line %d\n, __FUNCTION__, __LINE__); \
  else  printf(assert passed at %s line %d\n, __FUNCTION__, __LINE__);


#if defined(__SOLO__) || defined(_WRS_VXWORKS_MAJOR)
// #include vxWorks.h
#include semLib.h
#include taskLib.h
#include tickLib.h
#include kernelLib.h
#include errnoLib.h

void testTask(long a1, long a2, long a3, long a4, long a5,
	long a6, long a7, long a8, long a9, long a10);
bool finished;

  extern C void task1(long int, long int, long int, long int, long int, long int, long int, long int, long int, long int)
  {
	assert(1);
	taskDelay(30);	
	assert(2);
	finished = true;
  }

#endif

/**
 *  Main functions
 */
#if defined(PLAT_VXWORKS) || defined(_WRS_VXWORKS_MAJOR)
  extern C int tSysMain(const char* arg)
  {
const char* argv[2];
argv[0]  = undefined;
argv[1]  = arg;
int argc = sizeof(argv) / sizeof(char*);
#else

  int main(int argc, char *const argv[])
  {
#endif

#ifdef __SOLO__

kernelInit(testTask, argc, argv);
while(!finished) { sleep(1); }
exit(0);
}

void testTask(long a1, long a2, long a3, long a4, long a5,
	long a6, long a7, long a8, long a9, long a10)
{
   int argc=0; char *const argv[]={0};
#endif

   // Initialisierung
   SEM_ID testBSem1 = semBCreate (0, SEM_EMPTY);

   assert(semTake(testBSem1, 10) == ERROR);  // Empty
   assert(semGive(testBSem1) == OK);
   assert(semGive(testBSem1) == OK);// wie VxWorks

  printf(%s done\n, __FUNCTION__);
#ifdef __SOLO__
  finished = true;
  return;
#else
  return 0;
#endif
}


//  ___
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] xenomai-solo vxWorks: know whether a task is safe or not

2008-09-21 Thread Niklaus Giger
Hi

For various reasons we were forced to examine under vxWorks 5.5 the private
WIND_TCB safeCnt field to determine whether a task was safe or not.

With the attached patch I try to add a taskIsSafe procedure to xenomai-solo.
It is probably not free from race condition, as I do not know how to access
a pthread_mutex.

Would such (may be improved) patch find its way into the official trunk?

Best regards

-- 
NIklaus Giger

diff --git a/include/vxworks/taskInfo.h b/include/vxworks/taskInfo.h
index 61315d5..27b3cc6 100644
--- a/include/vxworks/taskInfo.h
+++ b/include/vxworks/taskInfo.h
@@ -50,6 +50,8 @@ TASK_ID taskNameToId(const char *name);
 
 TASK_ID taskIdDefault(TASK_ID task_id);
 
+BOOL taskIsSafe(TASK_ID task_id);
+
 BOOL taskIsReady(TASK_ID task_id);
 
 BOOL taskIsSuspended (TASK_ID task_id);
diff --git a/vxworks/taskLib.c b/vxworks/taskLib.c
index f6253b2..7dd52ae 100644
--- a/vxworks/taskLib.c
+++ b/vxworks/taskLib.c
@@ -595,7 +595,7 @@ STATUS taskSafe(void)
 	}
 
 	pthread_mutex_lock(current-safelock);
-
+	current-safeCnt = 1;
 	return OK;
 }
 
@@ -615,11 +615,24 @@ STATUS taskUnsafe(void)
 		return ERROR;
 	}
 
+	current-safeCnt = 0;
 	pthread_mutex_unlock(current-safelock);
 
 	return OK;
 }
 
+BOOL taskIsSafe(TASK_ID tid)
+{
+	struct wind_task *task = find_wind_task(tid);
+
+	if (task == NULL) {
+		errno = S_objLib_OBJ_ID_ERROR;
+		return ERROR;
+	}
+
+	return (task-safeCnt  0);
+}
+
 STATUS taskIdVerify(TASK_ID tid)
 {
 	struct wind_task *task = find_wind_task(tid);
diff --git a/vxworks/taskLib.h b/vxworks/taskLib.h
index 299d059..f743270 100644
--- a/vxworks/taskLib.h
+++ b/vxworks/taskLib.h
@@ -42,6 +42,7 @@ struct wind_task_args {
 struct wind_task {
 
 	pthread_mutex_t safelock;
+	int	safeCnt;
 	sem_t barrier;
 
 	struct WIND_TCB *tcb;
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] SOLO: Too limited priorities for vxWorks threads

2008-05-18 Thread Niklaus Giger
Hi

I just tried to get a sample test program to run under Xenomai-SOLO
and run into this panic message:
Xenomai/SOLO: current implementation restricts VxWorkspriority levels to range 
[-2..0]
looking at the code I found at taskLib.c
 263 {
 264 if (wind_prio  0 || wind_prio  255) /* In theory. */
 265 return S_taskLib_ILLEGAL_PRIORITY;
 266
 267 if (wind_prio = threadobj_max_prio - 1) /* In practice. */
 268 panic(current implementation restricts VxWorks
 269   priority levels to range [%d..0],
 270   threadobj_max_prio - 2);
 271 return OK;
Therefore I seem to have only the option of priority 0 which is way too limited.

I took a look at vxworks/testsuite/task-1.c and found that it spawns a task
with priority 70. Calling make check compiled a few more files but did not run
any checks.

After calling make in vxworks/testsuite and callling ./task-1 I got the same
error.

I am running the (unpatched) Debian kernel 2.6.24-1-686, as I just wanted to
run some test without requiring any realtime behaviour. Reading 
http://www.denx.de/cgi-bin/gitweb.cgi?p=xenomai-solo.git;a=blob;f=README
I found the sentence SOLO may also be used with non-PREEMPT_RT kernels, likely
for basic debugging tasks which do not involve strict real-time requirements
and concluded therefore that I should be able to use for my test a normal
kernel.

As glibc I use the Debian lenny version 2.7-10.

Best regards

Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] SOLO: Too limited priorities for vxWorks threads

2008-05-18 Thread Niklaus Giger
Am Sonntag, 18. Mai 2008 schrieb Philippe Gerum:
 Niklaus Giger wrote:
  Hi
  
  I just tried to get a sample test program to run under Xenomai-SOLO
  and run into this panic message:
  Xenomai/SOLO: current implementation restricts VxWorkspriority levels to 
  range [-2..0]
  looking at the code I found at taskLib.c
  263 {
  264 if (wind_prio  0 || wind_prio  255) /* In theory. */
  265 return S_taskLib_ILLEGAL_PRIORITY;
  266
  267 if (wind_prio = threadobj_max_prio - 1) /* In practice. */
  268 panic(current implementation restricts VxWorks
  269   priority levels to range [%d..0],
  270   threadobj_max_prio - 2);
  271 return OK;
  Therefore I seem to have only the option of priority 0 which is way too 
  limited.
  
 
 The SOLO version is purely Linux native, so you only get what the underlying
 kernel provides you, including in terms of available priority scales. Since RT
 threads are members of the SCHED_FIFO class, you get 99 priority levels, 
 unless
 you patch the vanilla kernel to handle more. The way to solve this properly 
 for
 SOLO is to write a patch against PREEMPT_RT that allows wider priority scales,
 and to get it merged upstream.
Sorry, but you did not get my point. I tried to call it with priority 50, which
should be in this range, which I verified with gdb
(gdb) info stack
#0  panic (fmt=0xb7eebb90 current implementation restricts VxWorkspriority 
levels to range [%d..0]) at panic.c:45
#1  0xb7eea1ac in check_task_priority (wind_prio=50) at taskLib.c:268
#2  0xb7eea1d9 in __taskInit (task=0x9eda0e0, tcb=0x9eda10c, name=0xbfc43760 
BSysAsyncTimerMgrThread, prio=50, flags=0,
entry=0x81281c4 BSysOsWrapperThread_callback(int), stacksize=51200) at 
taskLib.c:284
...

I am happy with the rang 0.99 and also will no run any latency tests, as
xenomai-SOLO is for me at the moment just a test bed to check for compiler
error etc, as at the moment I have no running powerpc kernel for my PPC440
target.

Best regards

-- 

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Errors running simulator test tmq

2008-03-11 Thread Niklaus Giger
Hi

Since quite some time there is a error running the simulator test:
The daily build reports (e.g. 
http://ngiger.dyndns.org/buildbot/builders/sim_f/builds/80/steps/check_sim/logs/stdio)
 Will call tmq
 Xenomai/sim: real-time nucleus v2.5-devel (Flying In A Blue Dream) loaded.
 starting POSIX services.
 Xenoscope: lt-tmq: fatal in MvmIrq (time=40838.314452):
 test interrupted by watchdog.

I have no ideas why the builds after each check-in give me also
errors like (e.g. 
http://ngiger.dyndns.org/buildbot/builders/sim_q/builds/170/steps/check_sim/logs/stdio)
 vxworks-trestart:: starting VxWorks services.
 vxworks-t010726-2:: starting VxWorks services.
 vxworks-t010820-1:: starting VxWorks services.
 vxworks-t010823-2:: starting VxWorks services.

I will investigate this problem later 

Best regard

Niklaus

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Errors building tarball

2008-03-11 Thread Niklaus Giger
Hi

My HCU3 daily build (which is the only one to build a tarball) reports
the following error when running distcheck (see
http://ngiger.dyndns.org/buildbot/builders/hcu3_f/builds/75/steps/tarball/logs/stdio):

 /home/buildbot/slave/hcu3_f/xenomai/configure successfull
 Exec in /home/buildbot/slave/hcu3_f/build_dist: make SUDO=false distcheck
 make: *** No rule to make target `debian/xenomai.postinst', needed by
 `distdir'.  Stop. make SUDO=false distcheck failed

Commands were
rm -rf /home/buildbot/slave/hcu3_f/build_dist
/home/buildbot/slave/hcu3_f/xenomai/configure
make SUDO=false distcheck

Best regards

Niklaus
 

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Still an error in the simulator for v2.3.x

2007-12-27 Thread Niklaus Giger
Hi

Philippe fixed the error I reported in less than 6 minutes. Wonderful work!
But my buildbot machines are a lot slower and take almost one hour
for all builds.

But now the simulator gives on the v2.3 branch again one of (rather silly and
easily corrected errors) like this:
Some problems were reported in:
vxworks-t010823-2:../../../../xenomai/sim/skins/vxworks/testsuite/t010823-2.c:163:
 Expected sequence: SEQ(Test2,2004); got SEQ(Test2,1954)
vxworks-t010823-2: 
../../../../xenomai/sim/skins/vxworks/testsuite/t010823-2.c:166, test finished: 
1 failures/ 33 tests
For Details look at 
http://ngiger.dyndns.org/buildbot/builders/sim_q/builds/29/steps/check_sim/logs/stdio
and 
http://ngiger.dyndns.org/buildbot/builders/sim_q/builds/29

The other builds for the 2.3.x branch are okay.
The failures from i386 and tqm will be fixed by correcting the buildbot 
configuration.

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Buildbot: Error building sim on branch 2.3

2007-12-26 Thread Niklaus Giger
Hi

Thanks everybody for helping to clean up the errors! I have a lot more
successful build now than three days ago. 

As soon as I have some more time to spend on the buildbot. I will try
to cleanup the remaining failures which are probably more problems with
the buildbot setup than in the xenomai source.

But the sim has a regression (only in the 2.3 branch) as shown in
http://ngiger.dyndns.org/buildbot/builders/sim_q/builds/26
http://ngiger.dyndns.org/buildbot/builders/sim_q/builds/26/steps/make_sim/logs/stdio
building the simulator failed with:
make[1]: Entering directory `/var/buildbot/slave/sim_q/build/nucleus'
../gcic/gcic -DHAVE_CONFIG_H -I. -I../include -I../../xenomai/sim/nucleus  
-D__IN_XENO__ --gcic-backend=/var/buildbot/test/bin/sim/libexec/gcic 
--kernel-code  -I../../xenomai/sim/nucleus/../include 
-I../../xenomai/sim/../include   -g -MT heap.o -MD -MP -MF .deps/heap.Tpo -c -o 
heap.o ../../xenomai/sim/../ksrc/nucleus/heap.c
../../xenomai/sim/../ksrc/nucleus/heap.c: In function `xnheap_alloc':
../../xenomai/sim/../ksrc/nucleus/heap.c:491: `CONFIG_XENO_OPT_DEBUG_NUCLEUS' 
undeclared (first use in this function)
../../xenomai/sim/../ksrc/nucleus/heap.c:491: (Each undeclared identifier is 
reported only once
../../xenomai/sim/../ksrc/nucleus/heap.c:491: for each function it appears in.)
../../xenomai/sim/../ksrc/nucleus/heap.c: In function `xnheap_test_and_free':
../../xenomai/sim/../ksrc/nucleus/heap.c:698: `CONFIG_XENO_OPT_DEBUG_NUCLEUS' 
undeclared (first use in this function)
make[1]: *** [heap.o] Fehler 1
make[1]: Leaving directory `/var/buildbot/slave/sim_q/build/nucleus'

The build #27 for the v.2.4 branch completed successfully as shown in
http://ngiger.dyndns.org/buildbot/builders/sim_q/builds/27.

No problems with the trunk neither as shown in
http://ngiger.dyndns.org/buildbot/builders/sim_f/builds/4

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Buildbot is back (and reporting errors)

2007-12-23 Thread Niklaus Giger
Hi
Am Sonntag, 23. Dezember 2007 schrieb Gilles Chanteperdrix:
 Niklaus Giger wrote:
 
 Are you sure these errors are related to Xenomai, do not you get the
 same errors if you build the kernel without Xenomai enabled ? Also,
 you should tell us which versions of Linux you used, and post a link to
 the kernel configuration.
 
I tweaked the buildbot to also produce a link to the config used.
Is it better for you if I post only the link to a failed build like
http://ngiger.dyndns.org/buildbot/builders/tqm_f/builds/
or
http://ngiger.dyndns.org/buildbot/builders/ppc_q/builds/22

There you can by clicking on the link go to the stdio of the failing step 
to the standard output. You find also in the same step (or for the tqm case
in the step before) a link to 'config'.

On the same page you get also info about the revision and
branch used of the Xenomai tree. With the link to 'cmd2run' you
get info about which linux version the buildbot uses.

Aggregating all this information into one single page would demand 
quite some effort. I am at this moment not sure whether it is worth
the effort, but once running the tests on my board is incorporated
into the buildbot, I will take another look at this challenge.

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Buildbot is back (and reporting errors)

2007-12-23 Thread Niklaus Giger
Am Sonntag, 23. Dezember 2007 schrieb Gilles Chanteperdrix:
 Niklaus Giger wrote:
   a) The simulator fails in two tests with the vxworks skins. In
   
 http://ngiger.dyndns.org/buildbot/builders/sim_f/builds/1/steps/check_sim/logs/stdio
   you will find at the end the lines
Some problems were reported in:
vxworks-t010726-1::
vxworks-t010823-2::
   Going back one finds:
starting VxWorks services.
Xenoscope: lt-t010823-2: fatal in MvmIrq (time=3718.974563):
test interrupted by watchdog.
   and
starting VxWorks services.
Xenoscope: lt-t010726-1: fatal in MvmIrq (time=3718.974820):
test interrupted by watchdog.
 
 The problem is that the root task priority is 0, and that now, 0 is a
 priority with a special meaning. However, VxWorks priority range is from
 0 to 255, not from 1 to 255.
 
Usually only the excTask runs with priority 0 on a vxWorks system. I would
therefore suggest that we forbid starting a vxworks task with priority 0.
If a error is returned and this exception is documented in
the doc/txt/vxworks-skin.txt I could live with it without any problems.

Thanks anyway for your explanation.

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Buildbot: sim fails ../../ksrc/nucleus/pod.c:1440: label `unlock_and_exit' used but not defined

2007-02-18 Thread Niklaus Giger
Hi

Since February 12 building the sim fails with
if ../gcic/gcic -DHAVE_CONFIG_H -I. -I. -I../include  -D__IN_XENO__ 
--gcic-backend=/var/buildbot/bin/sim/libexec/gcic --kernel-code  -I./../include 
-I../../include   -g -MT 
pod.o -MD -MP -MF .deps/pod.Tpo -c -o pod.o ../../ksrc/nucleus/pod.c; \
then mv -f .deps/pod.Tpo .deps/pod.Po; else rm -f .deps/pod.Tpo; 
exit 1; fi
../../ksrc/nucleus/pod.c:59: warning: parameter names (without types) in 
function declaration
../../ksrc/nucleus/pod.c:59: warning: data definition has no type or storage 
class
../../ksrc/nucleus/pod.c: In function `xnpod_suspend_thread':
../../ksrc/nucleus/pod.c:1440: label `unlock_and_exit' used but not defined
make[1]: *** [pod.o] Fehler 1
make[1]: Leaving directory `/var/buildbot/slave/sim_f/build/sim/nucleus'

For details look at:
http://ngiger.dyndns.org/buildbot-full/sim_f/builds/98/step-make_sim/1

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] buildbot: how to setup for ppc with 2.6.19 kernel?

2007-02-18 Thread Niklaus Giger
Hi

Compiling ppc fails for me with 2.6.19 kernels. 
( I compile on a Pegasos PPC 601 Debian Linux).

If I use ARCH=ppc then I get the following error:
   CHK include/linux/version.h
   CHK include/linux/utsrelease.h
   CHK include/linux/compile.h
 gcc: include/asm/byteorder.h: No such file or directory
 gcc: no input files
   CC  arch/ppc/xenomai/hal.o
 arch/ppc/xenomai/hal.c: In function 'rthal_arch_init':
 arch/ppc/xenomai/hal.c:353: error: invalid type argument of '-'
 make[1]: *** [arch/ppc/xenomai/hal.o] Fehler 1

Trying to use ARCH=powerpc fails already while configuring the kernel
like this:
  make ARCH=powerpc menuconfig
   HOSTCC  scripts/kconfig/mconf.o
   HOSTLD  scripts/kconfig/mconf
 scripts/kconfig/mconf arch/powerpc/Kconfig
 init/Kconfig:564:warning: 'select' used by config symbol 'XENOMAI' refer to
 undefined symbol 'IPIPE' #
 # configuration written to .config
 #
And a make gives me
  make ARCH=powerpc menuconfig
   HOSTCC  scripts/kconfig/mconf.o
   HOSTLD  scripts/kconfig/mconf
 scripts/kconfig/mconf arch/powerpc/Kconfig
 init/Kconfig:564:warning: 'select' used by config symbol 'XENOMAI' refer to
 undefined symbol 'IPIPE' #
 # configuration written to .config
 #
What is wrong? Did I miss something in my setup? Wrong config?

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Buildbot: uses 2.6.19 kernel. Sim has a problem

2007-02-05 Thread Niklaus Giger
Hi

After spending a week skiing I discovered that I had to update the buildbot to 
use the 2.6.19 kernels everywhere. Seems to work.

I also found that since February 2 I get the following error message
 
g++ -DHAVE_CONFIG_H -I. -I. -I../include -fno-exceptions -D__XENO_SIM__ -I./.. 
-O2 -MT 
libmvm_la-thread.lo -MD -MP -MF .deps/libmvm_la-thread.Tpo -c 
thread.cc  -fPIC -DPIC -o .libs/libmvm_la-thread.o
thread.cc:66: error: 'int MvmThread::globalTrace' is not a static member 
of 'class MvmThread'
make[1]: *** [libmvm_la-thread.lo] Fehler 1
For details look at 
http://ngiger.dyndns.org/buildbot-full/sim_f/builds/86/step-make_sim/1

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] PPC405: DMA-problem solved!

2007-01-21 Thread Niklaus Giger
(Forgot to cc @xenomai-core this e-mail sent yesterday to Jan)
Am Samstag, 20. Januar 2007 09:04 schrieben Sie:
 Niklaus Giger wrote:
..
 This demo is about how to use the driver API (/wrt interrupts) + how to
 do PPC4xx-specific DMA. So my suggestion:

 examples/rtdm/driver-api/dma-ppc4xx.c
Agreed. See new version in the attached patch.

 In any case, we need to resolve the arch dependency somehow. I guess
 it will  currently not fly when I kick the full build in examples/ for a
 non-PPC platform. Any *simple* way to catch this? Would also be
 applicable to the heartbeat-x86 example then, though this will not cause
 build troubles.
Is my proposed solution in the Makefile okay for you?
How do you kick your full build? Does it still work now?

..
  + * The following patches must be applied to your kernel to fix bugs

 Which kernel? I guess this issue will not persist forever.
  + *
  http://ozlabs.org/pipermail/linuxppc-embedded/2007-January/025697.html +
  * http://ozlabs.org/pipermail/linuxppc-embedded/2007-January/025700.html
  + *
  + * Beware!
  + * The kernel option PPC4xx DMA must be activated for this test.

 Please provide the full CONFIG_OPTION_NAME here.
Fixed.
..
 Why do we have a compiler warning here, why not a comment?
Fixed.
  +#warning flush_dcache_all is a performance killer, but I do not know at
  the +#warning moment how to flush only the parts needed

 Can we resolve this? Wolfgang?
  +   flush_dcache_all(); /* from arch/ppc/kernel/misc.S */
I think we cannot fix this, as it is probably a weakness of the port to
PPC4xx. I tried various procedures *dcache* procedure which all lead to kernel 
oops. I changed the comment a little to reflect the change.

I looked also at dma_alloc_coherent, but this need a driver structure which I 
do not have in this example. I have no time at this moment to really dig 
deeper into the 4xx-DMA problems. But I might be forced to do it later once I 
get hands on our new PPC440EPx based board later (around March/April this 
year). I remember spending quite a few hours on this problem years ago on our 
first PPC403GA board (but running vxWorks).

..

 This demo will go to trunk, thus rtdm_irq_enable is no longer needed.

Didn't know. Fixed.
..
 Disabling is typically not needed, unless it is the only way to silence
 the IRQ source. Keep in mind that this disabling would be fatal if the
 IRQ happened to be shared (though unusual on PPC, AFAIK).

Thanks for catching this error. Fixed.
..
  +install::   $(APPLICATIONS)
  +   cp $(APPLICATIONS) $(EXEC_PREFIX)/
  +

 NACK. I'd rather like to keep the makefile focused (the next step would
 be to add uninstall, then ...).
Added a comment on top of the Makefile about how to call it for cross 
compiling.

I changed the target to modules_install, but still think that this is useful 
for my use, eg. without it I have no direct way to access the kernel module 
from my NFS-mounted rootfs when I want to run a test on my target board.
Another solution would be to add an example script to cross compile like the 
following (tested) snippet
 make \
 -C   /usr/src/linux-2.6.19.1 \
 KSRC=/usr/src/linux-2.6.19.1 \
 ARCH=ppc \
 O=/usr/src/build-hcu3-2.6.19.1 \
 INSTALL_MOD_PATH=/home/hcu/rootfs/niklaus_2.6.19 \
 CROSS_COMPILE=ppc_4xx-  \
 PATH=/opt/eldk/4_0/usr/bin:$PATH \
 SUBDIRS=`pwd` \
 modules modules_install

Thanks for your careful review.

Best regards
---
Niklaus Giger
Index: examples/rtdm/driver-api/dma-ppc4xx.c
===
--- examples/rtdm/driver-api/dma-ppc4xx.c	(Revision 0)
+++ examples/rtdm/driver-api/dma-ppc4xx.c	(Revision 0)
@@ -0,0 +1,169 @@
+/* * Written by Niklaus Giger [EMAIL PROTECTED]
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ 
+ *
+ * This is an example howto write a Xenomai kernel module which handles a
+ * HW interrupt. The example is PPC4xx specific (testd on a PPC405 board)
+ * Probably also works on a PPC44x (not yet tested, needs a different irq?).
+ *
+ * Beware!
+ * The following patches had to be applied against the 2.6.19.2 linux kernel
+ * to fix bugs in arch/ppc/syslib/ppc4xx_dma.c
+ * http://ozlabs.org/pipermail/linuxppc-embedded/2007-January/025697.html
+ * http://ozlabs.org

Re: [Xenomai-core] PPC405: DMA-problem solved!

2007-01-19 Thread Niklaus Giger
Am Donnerstag, 18. Januar 2007 09:31 schrieb Wolfgang Grandegger:
 Niklaus Giger wrote:
  Hi
 
  I tried to simply an example program how to use interrupts
  with Xenomai (see attached Makefile  dma_4xx_int_module.c).
 
  The interrupt part of the example works, but the DMA transfer (memory to
  memory) using the OnChipMemory fails. I think I must somewhere specify
  that the src/dst adressed should not be cached, but I do not know how to
  do it.

 consistant_alloc() should help. It's used in the kernel in various
 places, e.g. in drivers/net/ibm_emac.

Thank you for your tips.

After fixing two bugs in arch/ppc/syslib/ppc4xx_dma.c. See  
 * http://ozlabs.org/pipermail/linuxppc-embedded/2007-January/025697.html
 * http://ozlabs.org/pipermail/linuxppc-embedded/2007-January/025700.html
my example code worked (tested with DMA channel 0 and DMA channel 3).
..

Interrupt code is ported to RTDM.

@Jan: Can the attached patch be applied?

Best regards

-- 
Niklaus Giger
Index: examples/rtdm/pp4xx_interrupt/dma_4xx_int_module.c
===
--- examples/rtdm/pp4xx_interrupt/dma_4xx_int_module.c	(Revision 0)
+++ examples/rtdm/pp4xx_interrupt/dma_4xx_int_module.c	(Revision 0)
@@ -0,0 +1,167 @@
+/* * Written by Niklaus Giger [EMAIL PROTECTED]
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ 
+ *
+ * This is an example howto write a Xenomai kernel module which handles a
+ * HW interrupt. The example is PPC4xx specific (testd on a PPC405 board)
+ * Probably also works on a PPC44x (not yet tested, needs a different irq?).
+ *
+ * Beware!
+ * The following patches must be applied to your kernel to fix bugs
+ * http://ozlabs.org/pipermail/linuxppc-embedded/2007-January/025697.html
+ * http://ozlabs.org/pipermail/linuxppc-embedded/2007-January/025700.html
+ *
+ * Beware!
+ * The kernel option PPC4xx DMA must be activated for this test.
+ *
+ */
+
+#include linux/init.h
+#include linux/module.h
+#include linux/io.h
+#include asm/ppc4xx_dma.h
+
+#include rtdm/rtdm_driver.h
+#include rtdm/rtdm.h
+rtdm_irq_t irq_handle;
+
+MODULE_DESCRIPTION(PPC4xx DMA3 interrupt demo);
+MODULE_AUTHOR([EMAIL PROTECTED]);
+MODULE_LICENSE(GPL);
+
+#define DMA_NR 3
+int irq = DMA_NR + 5; /* DMA-x interrupt line  on PPC405GPr */
+
+#define TEST_STRING  Could we use a DMA + interrupt to copy a string?
+#define TEST_STRING2 Should be overwritten.
+#define STRING_SIZE 128
+
+char *SRC;
+char *DST;
+
+static ppc_dma_ch_t p_init;
+
+#define show_irq(irq) 	{		\
+	printk(%32s: IRQ %2d uipr 0x%08x uier 0x%08x uisr 0x%08x\n,	\
+		__FUNCTION__, irq, 	\
+		mfdcr(DCRN_UIC_PR(UIC0)), mfdcr(DCRN_UIC_ER(UIC0)),	\
+		mfdcr(DCRN_UIC_SR(UIC0)));\
+	printk(%32s: residue %d status 0x08%x cntrl 0x%08x\n,__FUNCTION__,\
+		ppc4xx_get_dma_residue(DMA_NR),\
+		ppc4xx_get_dma_status(),\
+		mfdcr(DCRN_DMACR0 + (DMA_NR * 0x8)));			\
+	printk(src at %p is %s\ndst at %p is %s\n, (char *)SRC,	\
+		SRC, DST[0], DST[0]); }
+
+void dma_mem_to_mem(void *src, void *dst, unsigned int length,
+			unsigned int use_interrupt)
+{
+#warning Do not use dma_mem_to_mem for OnChipMemory! It will not work.
+	int res = 0;
+	memset((char *)p_init, sizeof(p_init), 0);
+	p_init.polarity = 0;
+	p_init.pwidth   = PW_8;
+ 	res = ppc4xx_init_dma_channel(DMA_NR, p_init);
+	if (res) {
+		printk(%32s: nit_dma_channel return %d %d bytes dest %p\n,
+			__FUNCTION__, res, length, dst);
+	}
+	res = ppc4xx_clr_dma_status(DMA_NR);
+	if (res) { 
+		printk(%32s: ppc4xx_clr_dma_status %d\n, __FUNCTION__, res);
+	}
+#warning flush_dcache_all is a performance killer, but I do not know at the 
+#warning moment how to flush only the parts needed
+	flush_dcache_all(); /* from arch/ppc/kernel/misc.S */
+
+	ppc4xx_set_dma_mode(DMA_NR, DMA_MODE_MM);
+	ppc4xx_set_src_addr(DMA_NR, virt_to_bus(src));
+	ppc4xx_set_dst_addr(DMA_NR, virt_to_bus(dst));
+	ppc4xx_set_dma_count(DMA_NR, length);
+	ppc4xx_enable_dma(DMA_NR);
+	if (use_interrupt) {
+		res = ppc4xx_enable_dma_interrupt(DMA_NR);
+	} else {
+		res = ppc4xx_disable_dma_interrupt(DMA_NR);
+	}
+	if (res) { 
+		printk(%32s: en/disable_dma_interrupt %d return %d per %d\n,
+		__FUNCTION__, use_interrupt, res, 
+		ppc4xx_get_peripheral_width(DMA_NR

Re: [Xenomai-core] Nocow patch.

2007-01-10 Thread Niklaus Giger
Am Mittwoch, 10. Januar 2007 19:05 schrieb Gilles Chanteperdrix:
 Hi,
..
 This was run on x86, but need further testing before inclusion.
I wanted to give it a try on my PPC board. But trying to apply it (on a  Linxu 
2.6.19.1 kernel patched with 
ksrc/arch/powerpc/patches/adeos-ipipe-2.6.19-ppc-1.5-01.patch gave me the 
error
 Hunk #1 succeeded at 652 (offset -2 lines).
 patching file include/asm-i386/pgalloc.h
 Reversed (or previously applied) patch detected!  Assume -R? [n]
Same problem with ioremap.c.
Is there a problem or did I apply it against the wrong kernel?

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Buildbot update

2006-12-30 Thread Niklaus Giger
Hi

In the last weeks before Christmas I was integrating the new features of the 
Buildbot 0.7.5 release into the Xenomai buildbot. I would like to thank Brian 
Warner (maintainer of Buildbot) for integrating my suggestions into the 
buildbot framework.

The changes were:
* In December 2006 I upgraded to buildbot 0.7.5 and used the new 
features SVNPoller to eliminate the svn_watcher.py script. There are cases, 
where SVNPoll breaks the buildbot if it does not get a correct answer from 
the SVN-repository, then I have to restart the master manually and the 
intermediate revisions are lost.

* The FileUpload and FileDownload in buildbot 0.7.6 allowed me also to 
centralise all configs and scripts on the master.

* Changed the hcu3 builder (PPC405 based boards) using ELDK 4.0 on a 
MacMini running GNU/Debian Linux. (before they were located on a PowerBook 
G4).

* As suggested my Jan and Gilles I switched one of the builders to generate 
first a tarball. An example of this build may be found at:
http://ngiger.dyndns.org/buildbot-full/hcu3_f/builds/55

* As requested by rpm he will receive an email each time the buildbot found an 
error building one of its targets. If somebody else wants to receive these 
emails, he can drop me an email. 
Unfortunately there are sometimes false positives because of
  - Unavailability/errors in my infrastructure (the systems are shared for 
other uses too
   - Changes in the buildbot setup, as I have different machines to test my 
setup and the buildbot master

As always you may consult the documentation at
http://ngiger.dyndns.org/xenomai-data/xeno_buildbot.pdf
All the buildbot configuration files are stored in the SVN repository
http://ngiger.dyndns.org/svn/admin/hcu3_linux/doc/buildbot


Best regards
-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Recommendation for ARM/blackfin based buildbot test machine

2006-12-30 Thread Niklaus Giger
Hi

Can anybody recommend a cheap (Anything below 200 US$ will probably fit into 
our family budget) ARM system, where I could test the ARM port of Xenomai? 
E.g. could I buy a LinkSys NSLU2 (around 100 Euros)? It seems that at least 
Debian is quite popular on it. 

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Buildbot detects failure in recent build

2006-12-23 Thread Niklaus Giger
Hi Philippe

It seems that your revision 1978 or 1979 broke building PSOS+ on ppc and
PPC405. 
See e.g. http://ngiger.dyndns.org/buildbot/hcu3_q/builds/97/step-mk_kernel/1
which complains about
  CC [M]  kernel/xenomai/skins/psos+/syscall.o
kernel/xenomai/skins/psos+/syscall.c: In function '__rn_create':
kernel/xenomai/skins/psos+/syscall.c:1083: error: 'psosrn_t' undeclared (first 
use in this function)
kernel/xenomai/skins/psos+/syscall.c:1083: error: (Each undeclared identifier 
is reported only once
kernel/xenomai/skins/psos+/syscall.c:1083: error: for each function it appears 
in.)
kernel/xenomai/skins/psos+/syscall.c:1083: error: 'rn' undeclared (first use 
in this function)
kernel/xenomai/skins/psos+/syscall.c:1084: warning: ISO C90 forbids mixed 
declarations and code
kernel/xenomai/skins/psos+/syscall.c:1112: error: parse error before ')' token
kernel/xenomai/skins/psos+/syscall.c: In function '__rn_delete':
...

Best regards
-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Buildbot detects failure in recent build

2006-12-23 Thread Niklaus Giger
Am Samstag, 23. Dezember 2006 19:53 schrieb Philippe Gerum:
 On Sat, 2006-12-23 at 19:31 +0100, Niklaus Giger wrote:
  Hi Philippe
 
  It seems that your revision 1978 or 1979 broke building PSOS+ on ppc and
  PPC405.

 Fixed, thanks. Btw, could you ask the buildbot to spam me gently each
 time a commit wrecks the Xenomai boat? It would be easier for me than
 tracking the WEB interface status. TIA,
Sorry for a (wrong positive) mail from my test installation. 

You should receive an email on build failures. I changed the buildbot setup so 
that failures while running the test on my CPU-board are only flagged as 
warnings, as they were often reporting failures in my setup.
As my PPC405 board is also used for may other development work, it is 
sometimes unavailable for the buildbot and the buildbot would also flag this 
as an error.
The sim is reporting error since quite a few weeks, but Gilles never fixed 
this error (which is probably just an expectation or a time value which has 
varied a little bit):
Some problems were reported in:
vxworks-t010823-2:t010823-2.c:163: Expected sequence: SEQ(Test2,2004); got 
SEQ(Test2,1999)
vxworks-t010823-2: t010823-2.c:166, test finished: 1 failures/ 33 tests
If you want I could also made a failure in this buildstep be considered only a 
warning.

If you receive too many emails just let me know and I will try to improve this 
situation.

Joyeux noël

Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Patches: README.install examples/common for cross-compiling

2006-12-23 Thread Niklaus Giger
Am Freitag, 22. Dezember 2006 08:45 schrieb Wolfgang Grandegger:
 Hi Niklaus,

 Niklaus Giger wrote:
  Hi
 
  After switching my development environment to a MacMini and using the
  ELDK 4.0 I discovered that my examples for building using a
  cross-compiler for my PPC405 target were not correct. (Maybe a few of my
  previous problems were caused by not correctly specifying the target
  ARCH.)
 
  Also I would like to adapt and document the examples/common/Makefile to
  the needs for cross-compiling (KSRC/XENOCONFIG/DESTDIR useage). Also I
  added a target install to copy the generated application to
  $(DESTDIR)/usr/xenomai.

 Hm, I don't have examples/common/Makefile in my SVN Xenomai tree. And
Added by revision 1970 only. Makefile came from Jan for my example 
hw_direct_io.
 /usr/xenomai should be the configurable.
Does the attached patch look better for you (using EXEC_PREFIX) ?

Best regards

-- 
Niklaus Giger
Index: examples/common/Makefile
===
--- examples/common/Makefile	(Revision 1980)
+++ examples/common/Makefile	(Arbeitskopie)
@@ -3,9 +3,9 @@
 ### List of applications to be build
 APPLICATIONS = hw_direct_io
 
-### Note: to override the search path for the xeno-config script, use make XENO=...
+### Note: to override the search path for the xeno-config script, use make XENOCONFIG=...
+### Note: if you installed it into a non standard place add DESTDIR=/path/to/installed/xenomai
 
-
 ### List of modules to be build
 MODULES =
 
@@ -14,6 +14,8 @@
 
 ### Note: to override the kernel source path, use make KSRC=...
 
+# default place to install the resulting binaries
+EXEC_PREFIX := $(DESTDIR)/usr/xenomai/bin
 
 
 ## USER SPACE BUILD (no change required normally) ##
@@ -24,7 +26,9 @@
 ### Sanity check
 ifeq ($(XENOCONFIG),)
 all::
-	@echo  Invoke make like this: \make XENO=/path/to/xeno-config\ 
+	@echo  Invoke make like this: \make XENOCONFIG=/path/to/xeno-config\ 
+	@echo  add KSRC=.. to override the default kernel source at /lib/modules/$(shell uname -r)/build 
+	@echo  add DESTDIR=/path/to/installed/xenomai if you installed it into a non standard place 
 	@echo
 endif
 
@@ -40,6 +44,9 @@
 clean::
 	$(RM) $(APPLICATIONS) *.o
 
+install::   $(APPLICATIONS)
+	cp $(APPLICATIONS) $(EXEC_PREFIX)/
+
 endif
 
 
@@ -80,3 +87,4 @@
 	$(RM) -R .tmp*
 
 endif
+
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Patches: README.install

2006-12-23 Thread Niklaus Giger

Am Donnerstag, 21. Dezember 2006 23:40 schrieb Wolfgang Denk:
 Dear Niklaus,

Dear Wolfgang

Thanks your for spotting my errors. I should have rechecked this patch before 
submitting it, as it was based on a outdated script. Please review the 
attached patch again which is based on a script which actually ran and 
produced a running kernel.

I would also thanks you for providing the ELDK. It was really a lot easier
to setup the ELDK once I switched from my PPC PowerBook to a MacMini. I can 
really recommend it.

The only addition to the ELDK I made to run xeno-test was to copy my 
Debian /usr/bin/which to the rootfs.

..

Best regards

-- 
Niklaus Giger
Index: README.INSTALL
===
--- README.INSTALL	(Revision 1980)
+++ README.INSTALL	(Arbeitskopie)
@@ -192,6 +192,12 @@
 from the cross-compilation tools prefix, you will have to manually
 pass the name of all compilation tools on configure command line. 
 
+If you want to avoid to build your own cross compiler, you might if find
+easier to use ELDK (see http://www.denx.de/wiki/DULG/ELDK). It includes
+the GNU cross development tools, such as the compilers, binutils, gdb, 
+etc., and a number of pre-built target tools and libraries necessary
+to provide some functionality on the target system.
+
 See sections 2.2, 2.3 and 2.4 for examples.
 
 1.4 Building the Linux kernel in the user-space support build tree
@@ -276,19 +282,22 @@
 -
 
 A typical cross-compilation setup, in order to build Xenomai for a
-PowerPC-405-based system:
+PowerPC-405-based system. Here we use an ELDK cross-compiler and a
+2.6.14 kernel.
 
-$ $xenomai_root/scripts/prepare-kernel.sh --arch=powerpc \
-  --adeos=$xenomai_root/ksrc/arch/powerpc/patches/adeos-ipipe-2.6.14-ppc-X.Y-ZZ.patch \
+$ $xenomai_root/scripts/prepare-kernel.sh --arch=ppc \
+  --adeos=$xenomai_root/ksrc/arch/powerpc/patches/adeos-ipipe-2.6.14-ppc-1.5-*.patch \
   --linux=$linux_tree
 $ cd $linux_tree
-$ mkdir ../build-powerpc-405-2.6.14
-$ make ARCH=ppc CROSS_COMPILE=powerpc-405-linux-gnu- O=../build-powerpc-405-2.6.14 xconfig/gconfig/menuconfig 
+$ build_root /path/to/eldk
+$ mkdir $build_root
+$ make ARCH=ppc CROSS_COMPILE=ppc_4xx- O=$build_root xconfig/gconfig/menuconfig
 # select the kernel and Xenomai options
-$ make ARCH=ppc CROSS_COMPILE=powerpc-405-linux-gnu- O=../build-powerpc-405-2.6.14 bzImage modules 
-# then install as needed
-$ mkdir $build_root  cd $build_root
-$ $xenomai_root/configure --build=i686-linux --host=powerpc-405-linux-gnu
+$ make ARCH=ppc CROSS_COMPILE=ppc_4xx- O=$build_root bzImage modules \
+  modules_install
+$ cd $build_root
+$ $xenomai_root/configure --build=i686-linux --host=ppc CC=ppc_4xx-gcc \
+  CXX=ppc_4xx-g++ LD=ppc_4xx-ld
 $ make install
 
 2.3 Building for the IPF
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Patches: README.install examples/common for cross-compiling

2006-12-21 Thread Niklaus Giger
Hi

After switching my development environment to a MacMini and using the ELDK 4.0 
I discovered that my examples for building using a cross-compiler for my 
PPC405 target were not correct. (Maybe a few of my previous problems were 
caused by not correctly specifying the target ARCH.)

Also I would like to adapt and document the examples/common/Makefile to the 
needs for cross-compiling (KSRC/XENOCONFIG/DESTDIR useage). Also I added a 
target install to copy the generated application to $(DESTDIR)/usr/xenomai.

Could someone please commit these (or a improved version of it) patches?

Thanks in advance

-- 
Niklaus Giger
Index: examples/common/Makefile
===
--- examples/common/Makefile	(Revision 1970)
+++ examples/common/Makefile	(Arbeitskopie)
@@ -3,9 +3,9 @@
 ### List of applications to be build
 APPLICATIONS = hw_direct_io
 
-### Note: to override the search path for the xeno-config script, use make XENO=...
+### Note: to override the search path for the xeno-config script, use make XENOCONFIG=...
+### Note: if you installed it into a non standard place add DESTDIR=/path/to/installed/xenomai
 
-
 ### List of modules to be build
 MODULES =
 
@@ -24,7 +24,9 @@
 ### Sanity check
 ifeq ($(XENOCONFIG),)
 all::
-	@echo  Invoke make like this: \make XENO=/path/to/xeno-config\ 
+	@echo  Invoke make like this: \make XENOCONFIG=/path/to/xeno-config\ 
+	@echo  add KSRC=.. to override the default kernel source at /lib/modules/$(shell uname -r)/build 
+	@echo  add DESTDIR=/path/to/installed/xenomai if you installed it into a non standard place 
 	@echo
 endif
 
@@ -40,6 +42,9 @@
 clean::
 	$(RM) $(APPLICATIONS) *.o
 
+install:   $(APPLICATIONS)
+	cp $(APPLICATIONS) $(DESTDIR)/usr/xenomai/bin
+
 endif
 
 
@@ -80,3 +85,4 @@
 	$(RM) -R .tmp*
 
 endif
+
Index: README.INSTALL
===
--- README.INSTALL	(Revision 1957)
+++ README.INSTALL	(Arbeitskopie)
@@ -276,19 +276,20 @@
 -
 
 A typical cross-compilation setup, in order to build Xenomai for a
-PowerPC-405-based system:
+PowerPC-405-based system (assuming an ELDK cross-compiler and a 2.6.14 kernel)
 
 $ $xenomai_root/scripts/prepare-kernel.sh --arch=powerpc \
   --adeos=$xenomai_root/ksrc/arch/powerpc/patches/adeos-ipipe-2.6.14-ppc-X.Y-ZZ.patch \
   --linux=$linux_tree
 $ cd $linux_tree
-$ mkdir ../build-powerpc-405-2.6.14
-$ make ARCH=ppc CROSS_COMPILE=powerpc-405-linux-gnu- O=../build-powerpc-405-2.6.14 xconfig/gconfig/menuconfig 
+$ build_root /path/to/build-powerpc-405-2.6.14
+$ mkdir $build_root
+$ make ARCH=ppc CROSS_COMPILE=powerpc-405-linux-gnu- O=$build_root xconfig/gconfig/menuconfig 
 # select the kernel and Xenomai options
-$ make ARCH=ppc CROSS_COMPILE=powerpc-405-linux-gnu- O=../build-powerpc-405-2.6.14 bzImage modules 
+$ make ARCH=ppc CROSS_COMPILE=powerpc-405-linux-gnu- O=$build_root bzImage modules 
 # then install as needed
-$ mkdir $build_root  cd $build_root
-$ $xenomai_root/configure --build=i686-linux --host=powerpc-405-linux-gnu
+$ cd $build_root
+$ $xenomai_root/configure --build=i686-linux --host=powerpc-405-linux-gnu CC=ppc_4xx-gcc CXX=ppc_4xx-g++ LD=ppc_4xx-ld
 $ make install
 
 2.3 Building for the IPF
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Buildbot: Failure building Xenomai kernel for TQM860

2006-12-15 Thread Niklaus Giger
Am Freitag, 8. Dezember 2006 13:43 schrieb Jan Kiszka:
 Wolfgang Grandegger wrote:
  Hi Niklaus,
 
  I just compiled my Linux 2.4 kernel for TQM860L with the latest revision
  of Xenomai and I cannot reproduce your problem. In you linker path there
  are no Xenomai objects. How does it come? Do you use --arch=ppc with
  prepare_kernel (--arch=powerpc is not valid any more for the ppc tree).

 The problem pops up with CONFIG_XENO_OPT_SCALABLE_SCHED.

 The definition of xnlogerr is not visible to queue.h, namely to the
 inline function getmlq. Here is possible solution at XENO_ASSERT level.

 Jan
Why didn't you apply your patch? It solved my problem and I don't see any risk 
why you shouldn't apply it and didn't see any objections on this mailing 
list.

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Buildbot: Failure building Xenomai kernel for TQM860

2006-12-08 Thread Niklaus Giger
Am Freitag, 8. Dezember 2006 13:40 schrieb Wolfgang Grandegger:
 Hi Niklaus,

 I just compiled my Linux 2.4 kernel for TQM860L with the latest revision
 of Xenomai and I cannot reproduce your problem. In you linker path there
 are no Xenomai objects. How does it come? Do you use --arch=ppc with
 prepare_kernel (--arch=powerpc is not valid any more for the ppc tree).
As seen in http://ngiger.dyndns.org:8011/tqm_f/builds/30/step-prep_bb/0
Exec in /var/buildbot/slave/tqm_f/xenomai: 
scripts/prepare-kernel.sh --arch=ppc 
--adeos=ksrc/arch/powerpc/patches/adeos-ipipe-2.4.25-*.patch 
--linux=/var/buildbot/slave/tqm_f/linux
Then in http://ngiger.dyndns.org:8011/tqm_f/builds/30/step-cfg_kernel/0
/var/buildbot/scripts/configure.sh /var/buildbot/configs/TQM860L_defconfig 
CROSS_COMPILE=powerpc-860-linux-gnu- ARCH=ppc
and finally the build with 
make --jobs=4 uImage modules
The http logs also show all environment variables (e.g. CROSS_COMPILE, PATH).

You can navigate between the different builds and buildsteps on 
http://ngiger.dyndns.org:8011/. I tried to make all steps transparent to the 
observer, to enable them to verify themselves all the build step. If you are 
unable to reach this site please tell me so. I updated my apache2 server and 
since this time the proxy/reverse proxy form 
http://ngiger.dyndns.org/buildbot to http://ngiger.dyndns.org:8011/ does not 
work anymore (but that is another problem I am investigating).

I did not change my Buildbot master setup since December 4. The 
prepare_slave.rb was updated on December 3
I updated today the TQM860L_defconfig to enable more CAN drivers etc, but that 
didn't change the error.

Build 28 (revision 1920) completed without any problem on December 6, and the 
build on December 7 (revision 1930). All these build are full build, meaning 
that all the build directories get removed before starting the 
prepare_kernel.sh

Did you also clean rebuild?

Is there somewhere a missing include?
I see that include/xenomai/nucleus/pod.h has 
#define xnlogerr(fmt,args...)  xnarch_logerr(fmt , ##args
But grep finds xnlogerr in the following object files
kernel/xenomai/nucleus/xeno_nucleus.o.
kernel/xenomai/nucleus/built-in.o.

 Wolfgang.

 Niklaus Giger wrote:
  Hi
 
  I get an error building the TQM860 image (2.4 based kernel). Last
  successful build was with revision 1920 (didn't build between).
  Log is available under
  http://ngiger.dyndns.org:8011/tqm_f/builds/30/step-mk_kernel/1
 
  Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Unresolved symbol xnheap_usable_size since r1846 (PPC/vxworks only)

2006-11-18 Thread Niklaus Giger
Hi Philippe

Since your revision 1846 Sanitize size-related heap macros I cannot get link 
anymore the Linux kernel for PPC405 and vxworks. Others targets link without 
problems 

See
http://ngiger.dyndns.org/buildbot/hcu3_vx_q/builds/11/step-mk_kernel/1
which reports:
LD  init/built-in.o
  LD  .tmp_vmlinux1
kernel/built-in.o: In function `__heap_read_proc':
kernel/xenomai/skins/vrtx/heap.c:38: undefined reference to 
`xnheap_usable_size'
make: *** [.tmp_vmlinux1] Fehler 1

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Buildbot: Errors building rtnet since at least r1834

2006-11-18 Thread Niklaus Giger
Hi

Unfortunately I cannot say since when this build is broken, as I had to 
reinstall the buildbot on my main server. But this particular build target 
should not have been affected. (Same compiler, same build slave, same 
scripts)

But since at November 12 I get the following errors in my builds:
See http://ngiger.dyndns.org/buildbot-full/tqm_f/builds/0/step-mk_RTnet/1
libtool: link: warning: library 
`/var/buildbot/install/tqm_f-r1834/usr/xenomai/lib/libpthread_rt.la' was 
moved.
libtool: link: warning: library 
`/var/buildbot/install/tqm_f-r1834/usr/xenomai/lib/librtdm.la' was moved.
libtool: link: warning: library 
`/var/buildbot/install/tqm_f-r1834/usr/xenomai/lib/libpthread_rt.la' was 
moved.
libtool: link: warning: library 
`/var/buildbot/install/tqm_f-r1834/usr/xenomai/lib/librtdm.la' was moved.

Has anybody a hint, what the reason could be?

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] r1827 seems to have broken PPC with vxworks skin

2006-11-12 Thread Niklaus Giger
Hi Philippe

Your commit 1827 Make rthal_thread_switch() return the last current task 
pointer as expected by the vanilla switch code seems to trigger a failure in 
my PPC405 vxworks setup.

See http://ngiger.dyndns.org/buildbot/hcu3_vx_q/builds/2/step-xenotest/0
where I got the following error on startup:

I-pipe: Domain Xenomai registered.
Xenomai: hal/powerpc started.
Xenomai: real-time nucleus v2.3-rc1 (Baroque) loaded.
Xenomai: starting native API services.
Xenomai: starting RTDM services.
Oops: kernel access of bad area, sig: 11 [#1]
NIP: C0063384 LR: C0062168 SP: C02CBF50 REGS: c02cbea0 TRAP: 0300Not 
tainted
MSR: 00021030 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
DAR: 0004, DSISR: 
TASK = c02c0b40[1] 'swapper' THREAD: c02ca000
Last syscall: 120 
GPR00: 0001 C02CBF50 C02C0B40   C0328320 0080 0120 
GPR08:   C0328240 C022DF80 C020  01FFBB00  
GPR16: 01FFF7C8   0080 01FF595C 007FFF00 00200040 C01B 
GPR24: C02CBF98 C023 0007 0080 8000 C0328324 C0328364  
NIP [c0063384] vrtx_get_id+0x40/0x12c
LR [c0062168] sc_hcreate+0xa4/0x248
Call trace:
 [c0062168] sc_hcreate+0xa4/0x248
 [c006258c] vrtxheap_init+0x60/0xec
 [c0063264] __vrtx_skin_init+0x48/0xd4
 [c000245c] init+0x8c/0x254
 [c0005d0c] kernel_thread+0x44/0x60
Kernel panic - not syncing: Attempted to kill init!

As usual you may find the exact .config in
http://ngiger.dyndns.org/buildbot/hcu3_vx_q/builds/2/step-cfg_kernel/0

I am migrating my whole buildbot setup to use ELDK 4.0 as my cross-compile 
environment. xeno-test does not work yet as there are some differences 
between the denx environment and my old home made setup, which I could not 
yet resolve.

But this problem seems to be in a earlier state of the startup and I just 
wanted to inform you about it.

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Cannot compile sim with make --jobs=4

2006-11-12 Thread Niklaus Giger
Hi Gilles

I just noticied that compiling the simulator with make --jobs=4 clean all 
check led errors like:

/bin/sh ../libtool --tag=CXX --mode=link g++  -O2   -o 
libmvmutils.la -rpath /usr/xenomai/lib -version-info 1:0:0 
libmvmutils_la-clock.lo libmvmutils_la-elf.lo libmvmutils_la-hash++.lo 
libmvmutils_la-interface.lo libmvmutils_la-list++.lo libmvmutils_la-object.lo 
libmvmutils_la-statobj.lo libmvmutils_la-string++.lo 
libmvmutils_la-tclist++.lo libmvmutils_la-utils.lo
libtool: link: `libmvmutils_la-clock.lo' is not a valid libtool object

No big deal, I just reverted to the default make --jobs=1, but just wanted you 
let it know.

BTW. I still get the errors:
Some problems were reported in:
vxworks/testsuite/t010823-2.c:163: Expected sequence: SEQ(Test2,2004); got 
SEQ(Test2,1999)
vxworks/testsuite/t010823-2.c:166, test finished: 1 failures/ 33 tests

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Buildbot finds unresolved symbols `xnarch_atomic_xchg'

2006-10-31 Thread Niklaus Giger
Am Dienstag, 31. Oktober 2006 08:51 schrieb Wolfgang Grandegger:
 Hi Niklaus,

 Niklaus Giger wrote:
  Hi
 
  I see the following failure since revision 1771. e.g.
  http://ngiger.dyndns.org/buildbot-full/ppc_f/builds/56/step-mk_kernel/1
 
  kernel/built-in.o: In function `xnintr_irq_handler':
  intr.c:(.text+0x34334): undefined reference to `xnarch_atomic_xchg'
  intr.c:(.text+0x34424): undefined reference to `xnarch_atomic_xchg'
  kernel/built-in.o: In function `xnpod_schedule':
  (.text+0x38470): undefined reference to `xnarch_atomic_xchg'
  kernel/built-in.o: In function `xnpod_schedule_runnable':
  (.text+0x39f28): undefined reference to `xnarch_atomic_xchg'
  kernel/built-in.o: In function `xnpod_init':
  (.text+0x3a770): undefined reference to `xnarch_atomic_xchg'
  make: *** [.tmp_vmlinux1] Fehler 1

 I lost track somehow. What version of the Linux kernel, ADEOS-IPIPE and
 Xenomai are you using?
Usually, quite a recent one. My main target is a custom PPC405 target, running 
U-Boot, Linux 2.6.14, adeos-ipipe-2.6.14-ppc-1.5-01.patch.

When I refer to the buildbot (acontinuos integration tool), I mean the the 
buildbot master, running at http://ngiger.dyndns.org/buildbot/ . It tracks 
the most recent svn version of the buildbot and builds them for various 
target (simulator, ppc405 posix, pp405 vxworks, tqm_q with rtnet, ppc60x).
Each build contains (if one looks at the different build steps) all the 
relevant information (kernel, ipipe-version, .config) etc.

For details of the above mention build go to:
http://ngiger.dyndns.org/buildbot-full/ppc_f/builds/56
and following the different build logs pointed by the stio links.

Documentation about the xenomai buildbot can be found at:
http://ngiger.dyndns.org/xenomai-data/xeno_buildbot.pdf

Best regards
 
-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Bug in taskSuspend for user mode vxworks

2006-10-31 Thread Niklaus Giger
Am Dienstag, 31. Oktober 2006 09:14 schrieb Wolfgang Grandegger:
 Niklaus Giger wrote:
  Am Montag, 30. Oktober 2006 08:31 schrieb Wolfgang Grandegger:
  Niklaus Giger wrote:
  Am Samstag, 28. Oktober 2006 20:36 schrieb Wolfgang Grandegger:
  Niklaus Giger wrote:
  Am Samstag, 28. Oktober 2006 14:54 schrieb Niklaus Giger:
  Am Freitag, 27. Oktober 2006 18:38 schrieb Philippe Gerum:
  On Wed, 2006-10-25 at 23:46 +0200, Niklaus Giger wrote:
  Hi
 
  My impression from our last discussion was that your toolchain is
  somehow broken as I was unable to reproduce your problems on (almost)
  the same hardware
 
  I think I really have to reactivate my old Walnut board to have
  common platform to test with Wolfgang Grandegger.
 
  It would make more sense to use the ELDK4 for comparison. I don't
  think it depends on the hardware.
 
  As I forced my son to run on his MacMini (Intel Core Duo) only Linux
  and no MacOsX (he discovered widelands and was quite happy), I had a
  platform where I could install the CD with ELDK 4.0, which I had laying
  around.
 
  After some setting up of my environment and tweaking my scripts to work
  with ELDK (e.g. adding --host=ppc CC=ppc_4xx-gcc to my
  xenomai/configure) I ended
 
  --host=ppc-linux is already enough with CROSS_COMPILE=ppc_4xx- set.
 
  up with a nice environment and rootfs with much more precompiled
  programs than I had ever before. Debugging on the platform is now as
  good as on my PowerBook.
 
  My situation is now as follows:
  - ELDK 4.0 installed on Debian Etch MacMini
  - Using ELD 4.0 rootfs ppc_4xx
  - compiled the kernel uImage, modules, xenomai using ppc_4xx-gcc
 (but NOT adding any -mcpu=40x flag to the compiler)
 
  The trap 0 in  /proc/xenomai/fault seems to count on each invocation of
  simple 0:   51(Data or instruction access)
  gdb however no does not show anything abnormal, as it says now
 
  This GDB was configured as ppc-linux...Using host libthread_db
  library /lib/tls/libthread_db.so.1.
 
  (gdb) run
  Starting program: /bin/simple
  [Thread debugging using libthread_db enabled]
  [New Thread 805422032 (LWP 639)]
  root_thread_init 4[New Thread 805455088 (LWP 642)]
 
  Program exited normally.
  (gdb) quit
 
  Though I am still puzzled.
 
  Could you please send me your Makefile or the compile command to make
  simple, then I would give it a try on my setup.
 
  Here are the commands
  ppc_4xx-gcc -I../.. -I/home/hcu/rootfs/usr/xenomai/include -D_GNU_SOURCE
  -D_REENTRANT -I/net/ng/mnt/data.ng/hcu/project/vx_skin -D__XENO__ -g
  -DVXWORKS-c -o simple.o simple.c
  ppc_4xx-gcc -o simple
  simple.o -L/home/hcu/rootfs/usr/xenomai/lib -lpthread  -lvxworks

 Again the same question. What versions of kernel, ADEOS-IPIPE and
 Xenomai are you using.I have some problems to get the kernel booted with
 the VxWorks skin emulation. I understood, that I must build the Native
 and POSIX skin as modules and enable the periodic timer support with a
 resonable frequency.
I used revision 1747 of the xenomai trunk, linux 2.4.17 + some small patches 
(attached) for my system, the attached .config, 
adeos-ipipe-2.6.14-ppc-1.5-01.patch.

I have vxworks built-in to enforce that the timers get initialized into the 
periodic mode.

Best regards

-- 
Niklaus Giger


.config.bz2
Description: BZip2 compressed data


hcu3-2.6.14.patch.bz2
Description: BZip2 compressed data
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Bug in taskSuspend for user mode vxworks

2006-10-29 Thread Niklaus Giger
Am Samstag, 28. Oktober 2006 20:36 schrieb Wolfgang Grandegger:
 Niklaus Giger wrote:
  Am Samstag, 28. Oktober 2006 14:54 schrieb Niklaus Giger:
  Am Freitag, 27. Oktober 2006 18:38 schrieb Philippe Gerum:
  On Wed, 2006-10-25 at 23:46 +0200, Niklaus Giger wrote:
  Hi
 My impression from our last discussion was that your toolchain is
 somehow broken as I was unable to reproduce your problems on (almost)
 the same hardware

  I think I really have to reactivate my old Walnut board to have common
  platform to test with Wolfgang Grandegger.

 It would make more sense to use the ELDK4 for comparison. I don't think
 it depends on the hardware.
As I forced my son to run on his MacMini (Intel Core Duo) only Linux and no 
MacOsX (he discovered widelands and was quite happy), I had a platform where 
I could install the CD with ELDK 4.0, which I had laying around.

After some setting up of my environment and tweaking my scripts to work with 
ELDK (e.g. adding --host=ppc CC=ppc_4xx-gcc to my xenomai/configure) I ended 
up with a nice environment and rootfs with much more precompiled programs 
than I had ever before. Debugging on the platform is now as good as on my 
PowerBook.

My situation is now as follows:
- ELDK 4.0 installed on Debian Etch MacMini
- Using ELD 4.0 rootfs ppc_4xx
- compiled the kernel uImage, modules, xenomai using ppc_4xx-gcc 
   (but NOT adding any -mcpu=40x flag to the compiler) 

The trap 0 in  /proc/xenomai/fault seems to count on each invocation of simple
  0:   51(Data or instruction access)
gdb however no does not show anything abnormal, as it says now
 This GDB was configured as ppc-linux...Using host libthread_db library
 /lib/tls/libthread_db.so.1.

 (gdb) run
 Starting program: /bin/simple
 [Thread debugging using libthread_db enabled]
 [New Thread 805422032 (LWP 639)]
 root_thread_init 4[New Thread 805455088 (LWP 642)]

 Program exited normally.
 (gdb) quit

Though I am still puzzled.

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Bug in taskSuspend for user mode vxworks

2006-10-29 Thread Niklaus Giger
Am Montag, 30. Oktober 2006 08:31 schrieb Wolfgang Grandegger:
 Niklaus Giger wrote:
  Am Samstag, 28. Oktober 2006 20:36 schrieb Wolfgang Grandegger:
  Niklaus Giger wrote:
  Am Samstag, 28. Oktober 2006 14:54 schrieb Niklaus Giger:
  Am Freitag, 27. Oktober 2006 18:38 schrieb Philippe Gerum:
  On Wed, 2006-10-25 at 23:46 +0200, Niklaus Giger wrote:
  Hi
 
  My impression from our last discussion was that your toolchain is
  somehow broken as I was unable to reproduce your problems on (almost)
  the same hardware
 
  I think I really have to reactivate my old Walnut board to have common
  platform to test with Wolfgang Grandegger.
 
  It would make more sense to use the ELDK4 for comparison. I don't think
  it depends on the hardware.
 
  As I forced my son to run on his MacMini (Intel Core Duo) only Linux and
  no MacOsX (he discovered widelands and was quite happy), I had a platform
  where I could install the CD with ELDK 4.0, which I had laying around.
 
  After some setting up of my environment and tweaking my scripts to work
  with ELDK (e.g. adding --host=ppc CC=ppc_4xx-gcc to my xenomai/configure)
  I ended

 --host=ppc-linux is already enough with CROSS_COMPILE=ppc_4xx- set.

  up with a nice environment and rootfs with much more precompiled programs
  than I had ever before. Debugging on the platform is now as good as on my
  PowerBook.
 
  My situation is now as follows:
  - ELDK 4.0 installed on Debian Etch MacMini
  - Using ELD 4.0 rootfs ppc_4xx
  - compiled the kernel uImage, modules, xenomai using ppc_4xx-gcc
 (but NOT adding any -mcpu=40x flag to the compiler)
 
  The trap 0 in  /proc/xenomai/fault seems to count on each invocation of
  simple 0:   51(Data or instruction access)
  gdb however no does not show anything abnormal, as it says now
 
  This GDB was configured as ppc-linux...Using host libthread_db library
  /lib/tls/libthread_db.so.1.
 
  (gdb) run
  Starting program: /bin/simple
  [Thread debugging using libthread_db enabled]
  [New Thread 805422032 (LWP 639)]
  root_thread_init 4[New Thread 805455088 (LWP 642)]
 
  Program exited normally.
  (gdb) quit
 
  Though I am still puzzled.

 Could you please send me your Makefile or the compile command to make
 simple, then I would give it a try on my setup.

Here are the commands
ppc_4xx-gcc -I../.. -I/home/hcu/rootfs/usr/xenomai/include -D_GNU_SOURCE 
-D_REENTRANT -I/net/ng/mnt/data.ng/hcu/project/vx_skin -D__XENO__ -g -DVXWORKS  
  -c -o 
simple.o simple.c
ppc_4xx-gcc -o simple 
simple.o -L/home/hcu/rootfs/usr/xenomai/lib -lpthread  -lvxworks

Thanks for your help.

Will be busy till tomorrow evening. 

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Buildbot failure for sim since r1758

2006-10-28 Thread Niklaus Giger
Hi Philippe

Thanks for fixing the compilation issue, but there is now a small error 
running the testsuite, see at the end of 
http://ngiger.dyndns.org/buildbot/sim_q/builds/140/step-check_sim/0
Some problems were reported in:

vxworks/testsuite/t010823-2.c:163: Expected sequence: SEQ(Test2,2004); got 
SEQ(Test2,1999)
vxworks/testsuite/t010823-2.c:166, test finished: 1 failures/ 33 tests

I think that usually Gilles just corrected it by changing the expected value.
But I am not sure about it.

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Bug in taskSuspend for user mode vxworks

2006-10-28 Thread Niklaus Giger
Am Freitag, 27. Oktober 2006 18:38 schrieb Philippe Gerum:
 On Wed, 2006-10-25 at 23:46 +0200, Niklaus Giger wrote:
  Hi
 
  While trying to make a small demo app for Xenomai's registry I stumbled
  about the following bug of the vxWorks skin.
 
  taskSuspend provokes (sometimes) a switch to the secondary mode, e.g. the
 
  output of the attached demo gives:
reg_demo 
   ~ $ Xenomai: Switching ConsumerTask to secondary mode after exception
   #1025

 This is the same issue that you raised back then, and that we did not
 fix yet:
 https://mail.gna.org/public/xenomai-core/2006-09/msg00177.html

 #1025 looks like being an ISI exception due to some unmapped memory
 being referred to. You mentioned CONFIG_XENO_OPT_DEBUG as possibly being
 part of the problem/solution; could you check whether this error still
 occurs when this option is disabled in the nucleus?
I recompiled the kernel with CONFIG_XENO_OPT_DEBUG disabled and the error went 
away.

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Bug in taskSuspend for user mode vxworks

2006-10-28 Thread Niklaus Giger
Am Samstag, 28. Oktober 2006 14:54 schrieb Niklaus Giger:
 Am Freitag, 27. Oktober 2006 18:38 schrieb Philippe Gerum:
  On Wed, 2006-10-25 at 23:46 +0200, Niklaus Giger wrote:
   Hi
  
   While trying to make a small demo app for Xenomai's registry I stumbled
   about the following bug of the vxWorks skin.
  
   taskSuspend provokes (sometimes) a switch to the secondary mode, e.g.
   the
  
   output of the attached demo gives:
 reg_demo 
~ $ Xenomai: Switching ConsumerTask to secondary mode after exception
#1025
 
  This is the same issue that you raised back then, and that we did not
  fix yet:
  https://mail.gna.org/public/xenomai-core/2006-09/msg00177.html
 
  #1025 looks like being an ISI exception due to some unmapped memory
  being referred to. You mentioned CONFIG_XENO_OPT_DEBUG as possibly being
  part of the problem/solution; could you check whether this error still
  occurs when this option is disabled in the nucleus?

 I recompiled the kernel with CONFIG_XENO_OPT_DEBUG disabled and the error
 went away.
Actually I think the problem did not go away, as I did see that 
in /proc/xenomai/faults the following error is incremented when I call the 
attache simple program.
TRAP CPU0
  0:5(Data or instruction access)
(Btw which exception is it attached on a PPC405 system?)

Here is the stack trace of the simplified example attached as seen by the BDI 
with a hardware breakpoint at 0x300
#0  0x0300 in ?? ()
No symbol table info available.
#1  0x100b8c48 in ?? ()
No symbol table info available.
#2  0x100b8c48 in ?? ()
No symbol table info available.
Previous frame inner to this frame (corrupt stack?)
(gdb) 

Setting a breakpoint at xnpod_fault_handler and a full backtrace gives me 
(gdb) bt full
#0  xnpod_fault_handler (fltinfo=0xc1839e18) 
at 
/mnt/data.ng/hcu/kernel/ppc/linux-2.6.14/include/asm-generic/xenomai/system.h:200
thread = (xnthread_t *) 0xc0214f40
#1  0xc0048e90 in xnpod_trap_fault (fltinfo=0xc1839e18) 
at /mnt/data.ng/hcu/kernel/ppc/linux-2.6.14/kernel/xenomai/nucleus/pod.c:2907
No locals.
#2  0xc00438f4 in xnarch_trap_fault (event=3246628376, domid=1480937039, 
data=0xc1839f50) at include2/asm/xenomai/bits/init.h:46
fltinfo = {exception = 0, regs = 0xc1839f50}
#3  0xc011ffb8 in exception_event (event=3221520296, ipd=0x58454e4f, 
data=0xc1839f50)
at /mnt/data.ng/hcu/kernel/ppc/linux-2.6.14/arch/ppc/xenomai/hal.c:385
No locals.
#4  0xc003fecc in __ipipe_dispatch_event (event=0, data=0xc1839f50) 
at /mnt/data.ng/hcu/kernel/ppc/linux-2.6.14/kernel/ipipe/core.c:668
start_domain = (struct ipipe_domain *) 0xc0214f40
this_domain = (struct ipipe_domain *) 0xc0214f40
evhand = (ipipe_event_handler_t) 0xc0048e90 xnpod_trap_fault+100
pos = (struct list_head *) 0xc0214f40
npos = (struct list_head *) 0xc01c6540
flags = 167984
propagate = 1
#5  0xc000b02c in do_page_fault (regs=0xc1839f50, address=266719224, 
error_code=0)
at /mnt/data.ng/hcu/kernel/ppc/linux-2.6.14/arch/ppc/mm/fault.c:119
vma = (struct vm_area_struct *) 0xff86120
mm = (struct mm_struct *) 0xc0200260
info = {si_signo = 1, si_errno = -1071644672, si_code = -1071579136, 
_sifields = {_pad = {0, -1048338784, -1048338608,
  -1071554848, -1070595192, -1048338768, -1073423884, -1048338608, 
-1070595192, -1048338752, -1073422700, 
0, 1, -1048338704,
  -1073418440, -1071710208, 14, 1, -1071733764, -1071710208, -1071880896, 
167984, 0, 16384, -1071880896, -1048338640, -1073479988,
  0, 0}, _kill = {_pid = 0, _uid = 3246628512}, _timer = {_tid = 0, 
_overrun = -1048338784,
  _pad = 
0xc1839e94 
Á\203\237PÀ!^àÀ0\003\210Á\203\236°À\004ÙôÁ\203\237PÀ0\003\210Á\203\236ÀÀ\004Þ\224,
 
_sigval = {
sival_int = -1048338608, sival_ptr = 0xc1839f50}, _sys_private 
= -1071554848}, _rt = {_pid = 0, _uid = 3246628512, _sigval = {
sival_int = -1048338608, sival_ptr = 0xc1839f50}}, _sigchld = {_pid = 
0, _uid = 3246628512, _status = -1048338608,
  _utime = -1071554848, _stime = -1070595192}, _sigfault = {_addr = 0x0}, 
_sigpoll = {_band = 0, _fd = -1048338784}}}
code = 196609
is_write = 0
__func__ = do_page_fault
#6  0xc0003258 in handle_page_fault ()
No locals.
(gdb)   

But I think it has something to do with my toolchain/compiler or my root file 
system setup. I just found out, that compiling it with the same gcc 3.4 
compiler for my PowerBook and linking it statically the error got away.

I think I really have to reactivate my old Walnut board to have common 
platform to test with Wolfgang Grandegger.
 
Best regards
   
-- 
Niklaus Giger
/*
 * Copyright (C) 2006 Niklaus Giger [EMAIL PROTECTED].
 *
 * VxWorks is a registered trademark of Wind River Systems, Inc.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published

Re: [Xenomai-core] Bug in taskSuspend for user mode vxworks

2006-10-28 Thread Niklaus Giger
Am Samstag, 28. Oktober 2006 20:00 schrieb Philippe Gerum:
 On Sat, 2006-10-28 at 19:40 +0200, Niklaus Giger wrote:
   I recompiled the kernel with CONFIG_XENO_OPT_DEBUG disabled and the
   error went away.
 
  Actually I think the problem did not go away, as I did see that
  in /proc/xenomai/faults the following error is incremented when I call
  the attache simple program.
  TRAP CPU0
0:5(Data or instruction access)
  (Btw which exception is it attached on a PPC405 system?)

 0x400, e.g. page fault.

  Here is the stack trace of the simplified example attached as seen by the
  BDI with a hardware breakpoint at 0x300
  #0  0x0300 in ?? ()
  No symbol table info available.
  #1  0x100b8c48 in ?? ()
  No symbol table info available.
  #2  0x100b8c48 in ?? ()
  No symbol table info available.
  Previous frame inner to this frame (corrupt stack?)
  (gdb)
 
  Setting a breakpoint at xnpod_fault_handler and a full backtrace gives me
  (gdb) bt full
  #0  xnpod_fault_handler (fltinfo=0xc1839e18)
  at
  /mnt/data.ng/hcu/kernel/ppc/linux-2.6.14/include/asm-generic/xenomai/syst
 em.h:200 thread = (xnthread_t *) 0xc0214f40
  #1  0xc0048e90 in xnpod_trap_fault (fltinfo=0xc1839e18)
  at
  /mnt/data.ng/hcu/kernel/ppc/linux-2.6.14/kernel/xenomai/nucleus/pod.c:290
 7 No locals.
  #2  0xc00438f4 in xnarch_trap_fault (event=3246628376, domid=1480937039,
  data=0xc1839f50) at include2/asm/xenomai/bits/init.h:46
  fltinfo = {exception = 0, regs = 0xc1839f50}
  #3  0xc011ffb8 in exception_event (event=3221520296, ipd=0x58454e4f,
  data=0xc1839f50)
  at
  /mnt/data.ng/hcu/kernel/ppc/linux-2.6.14/arch/ppc/xenomai/hal.c:385 No
  locals.
  #4  0xc003fecc in __ipipe_dispatch_event (event=0, data=0xc1839f50)
  at /mnt/data.ng/hcu/kernel/ppc/linux-2.6.14/kernel/ipipe/core.c:668
  start_domain = (struct ipipe_domain *) 0xc0214f40
  this_domain = (struct ipipe_domain *) 0xc0214f40
  evhand = (ipipe_event_handler_t) 0xc0048e90
  xnpod_trap_fault+100 pos = (struct list_head *) 0xc0214f40
  npos = (struct list_head *) 0xc01c6540
  flags = 167984
  propagate = 1
  #5  0xc000b02c in do_page_fault (regs=0xc1839f50, address=266719224,
  error_code=0)
  at /mnt/data.ng/hcu/kernel/ppc/linux-2.6.14/arch/ppc/mm/fault.c:119
  vma = (struct vm_area_struct *) 0xff86120
  mm = (struct mm_struct *) 0xc0200260
  info = {si_signo = 1, si_errno = -1071644672, si_code =
  -1071579136, _sifields = {_pad = {0, -1048338784, -1048338608,
-1071554848, -1070595192, -1048338768, -1073423884, -1048338608,
  -1070595192, -1048338752, -1073422700, 0, 1, -1048338704,
-1073418440, -1071710208, 14, 1, -1071733764, -1071710208,
  -1071880896, 167984, 0, 16384, -1071880896, -1048338640, -1073479988,
0, 0}, _kill = {_pid = 0, _uid = 3246628512}, _timer = {_tid = 0,
  _overrun = -1048338784,
_pad =
  0xc1839e94
  Á\203\237PÀ!^àÀ0\003\210Á\203\236°À\004ÙôÁ\203\237PÀ0\003\210Á\203\236ÀÀ
 \004Þ\224, _sigval = {
  sival_int = -1048338608, sival_ptr = 0xc1839f50}, _sys_private
  = -1071554848}, _rt = {_pid = 0, _uid = 3246628512, _sigval = {
  sival_int = -1048338608, sival_ptr = 0xc1839f50}}, _sigchld =
  {_pid = 0, _uid = 3246628512, _status = -1048338608,
_utime = -1071554848, _stime = -1070595192}, _sigfault = {_addr =
  0x0}, _sigpoll = {_band = 0, _fd = -1048338784}}}
  code = 196609
  is_write = 0
  __func__ = do_page_fault
  #6  0xc0003258 in handle_page_fault ()
  No locals.
  (gdb)
 
  But I think it has something to do with my toolchain/compiler or my root
  file system setup. I just found out, that compiling it with the same gcc
  3.4 compiler for my PowerBook and linking it statically the error got
  away.

 I tried to reproduce the issue on a lite5200 here, to no avail. I'm
 using gcc 4.0 from Denx's ELDK 4.0, but I've never had such problem when
 using gcc 3.3.3 from ELDK 3.1 either.

 I wonder if something fishy is not happening with the code gcc generates
 to emit syscalls in some place of the library support.

Could be. I have only a gdbserver running on the PPC405 system. I compiled 
again without ld -static. Then I do the following:
 This GDB was configured as powerpc-linux-gnu...Using host libthread_db
 library /lib/tls/libthread_db.so.1.

 (gdb) set solib-absolute-prefix /mnt/data.ng/hcu/rootfs
 (gdb) dir /mnt/data.ng/hcu/rootfs
 Source directories searched: /mnt/data.ng/hcu/rootfs:$cdir:$cwd
 (gdb) target remote 172.25.1.5:2345
 Remote debugging using 172.25.1.5:2345
 0x3000fa18 in ?? ()
 (gdb) cont
 Continuing.
 [New thread 16384]

 Program received signal SIGILL, Illegal instruction.
 [Switching to thread 16384]
 0x3000ca1c in _dl_name_match_p () from /mnt/data.ng/hcu/rootfs/lib/ld.so.1
 (gdb) bt fu
 #0  0x3000ca1c in _dl_name_match_p () from
 /mnt/data.ng/hcu/rootfs/lib/ld.so.1 No symbol table info available.
 #1  0x30008878 in do_lookup_x () from /mnt

[Xenomai-core] Buildbot failure for sim since r1758

2006-10-27 Thread Niklaus Giger
Hi

I get the following error on my buildbot:
(see http://ngiger.dyndns.org/buildbot/sim_q/builds/133/step-make_sim/1)

make[1]: Entering directory `/var/buildbot/slave/sim_q/build/sim/adapter'
if 
g++ -DHAVE_CONFIG_H -I. -I. -I../include -D__XENO_SIM__ -fno-exceptions -I./.. 
-I./../../include-O2 -MT 
adapter.o -MD -MP -MF .deps/adapter.Tpo -c -o adapter.o adapter.cc; \
then mv -f .deps/adapter.Tpo .deps/adapter.Po; else 
rm -f .deps/adapter.Tpo; exit 1; fi
In Datei, eingefügt von ./../../include/nucleus/pod.h:34,
von adapter.cc:23:
./../../include/nucleus/thread.h:108:26: Fehler: nucleus/stat.h: Datei oder 
Verzeichnis nicht gefunden
./../../include/nucleus/thread.h:164: Fehler: »xnstat_counter_t« bezeichnet 
keinen Typ
./../../include/nucleus/thread.h:165: Fehler: »xnstat_counter_t« bezeichnet 
keinen Typ
./../../include/nucleus/thread.h:166: Fehler: »xnstat_counter_t« bezeichnet 
keinen Typ
./../../include/nucleus/thread.h:167: Fehler: »xnstat_runtime_t« bezeichnet 
keinen Typ
./../../include/nucleus/intr.h:65: Fehler: »xnstat_counter_t« bezeichnet 
keinen Typ
./../../include/nucleus/intr.h:66: Fehler: »xnstat_runtime_t« bezeichnet 
keinen Typ
./../../include/nucleus/intr.h:67: Fehler: »RTHAL_NR_CPUS« wurde in diesem 
Gültigkeitsbereich nicht definiert
make[1]: *** [adapter.o] Fehler 1
make[1]: Leaving directory `/var/buildbot/slave/sim_q/build/sim/adapter'
make: *** [all-recursive] Fehler 1
program finished with exit code 2

Starting with a virgen check out didn't cure the problem see:
http://ngiger.dyndns.org/buildbot/sim_q/builds/139/step-make_sim/1

Best regards 

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Suggestions for the vxWorks skins

2006-10-20 Thread Niklaus Giger
Hi

As I am trying to debug startup failures of a thirs party C++-library, I 
stumbled about the fact that the /proc/xenomai/registry/ only listed 
semaphores and not tasks.

My co-workers would appreciate to have some equivalents to vxWorks i 
or semShow routines, as they come often very handy to debug problems, I was 
thinking about how to improve the situation.

One approach could be:
a) Instead of calling semShow for each semaphore 
do cat /proc/xenomai/registry/semaphores/*. The information therein is 
already useful. The attached patch only modifies the output to include the 
name of the semaphore. In the future it would be nice to show also the owner 
of a mutex. 

b) The i procedure of vxworks could be replaced 
by cat /proc/xenomai/registry/tasks/*. 

With the attached patch I just show the name of the task. 

If nobody opposes I would like to extend the interface to provide at least the 
same information as under vxWorks (entrypoint, priority, status, program 
counter, errno, delay).

Would it be difficult/desirable to include the amount of free stack space?
Would it be difficult/desirable to include the name of the vxworks semaphores 
a vx task is holding? Together with point a) one could easyly detect lock 
ups.

Best regards

-- 
Niklaus Giger
Index: ksrc/skins/vxworks/semLib.c
===
--- ksrc/skins/vxworks/semLib.c	(Revision 1738)
+++ ksrc/skins/vxworks/semLib.c	(Arbeitskopie)
@@ -49,7 +49,7 @@
 
 	xnlock_get_irqsave(nklock, s);
 
-	p += sprintf(p, type=%s:value=%u\n, sem-vtbl-type, sem-count);
+	p += sprintf(p, %s:type=%s:value=%u\n, sem-name, sem-vtbl-type, sem-count);
 
 	if (xnsynch_nsleepers(sem-synchbase) == 0) {
 		xnpholder_t *holder;
Index: ksrc/skins/vxworks/taskLib.c
===
--- ksrc/skins/vxworks/taskLib.c	(Revision 1738)
+++ ksrc/skins/vxworks/taskLib.c	(Arbeitskopie)
@@ -30,6 +30,56 @@
 static void wind_task_delete_hook(xnthread_t *xnthread);
 static void wind_task_trampoline(void *cookie);
 
+#ifdef CONFIG_XENO_EXPORT_REGISTRY
+
+static int task_read_proc(char *page,
+			 char **start,
+			 off_t off, int count, int *eof, void *data)
+{
+	wind_task_t *task = (wind_task_t *)data;
+	char *p = page;
+	int len;
+	spl_t s;
+
+	xnlock_get_irqsave(nklock, s);  /* TODO is this necessary ?? */
+
+	p += sprintf(p, %s:\n, task-name);
+
+	xnlock_put_irqrestore(nklock, s);
+
+	len = (p - page) - off;
+	if (len = off + count)
+		*eof = 1;
+	*start = page + off;
+	if (len  count)
+		len = count;
+	if (len  0)
+		len = 0;
+
+	return len;
+}
+
+extern xnptree_t __vxworks_ptree;
+
+static xnpnode_t task_pnode = {
+
+	.dir = NULL,
+	.type = tasks,
+	.entries = 0,
+	.read_proc = task_read_proc,
+	.write_proc = NULL,
+	.root = __vxworks_ptree,
+};
+
+#elif defined(CONFIG_XENO_OPT_REGISTRY)
+
+static xnpnode_t task_pnode = {
+
+	.type = tasks
+};
+
+#endif /* CONFIG_XENO_EXPORT_REGISTRY */
+
 void wind_task_init(void)
 {
 	initq(wind_tasks_q);
@@ -152,7 +202,7 @@
 
 #ifdef CONFIG_XENO_OPT_REGISTRY
 	if (xnregistry_enter(pTcb-name,
-			 pTcb, xnthread_handle(pTcb-threadbase), NULL)) {
+			 pTcb, xnthread_handle(pTcb-threadbase), task_pnode)) {
 		wind_errnoset(S_objLib_OBJ_ID_ERROR);
 		taskDeleteForce((TASK_ID) pTcb);
 		return ERROR;
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Problem with periodic timer on PPC40x solved

2006-09-28 Thread Niklaus Giger
Am Mittwoch, 27. September 2006 20:19 schrieb Wolfgang Grandegger:
..
  I'm now a bit puzzled why a FP exception occurs. What happens if you
  disable MATH_EMULATION
  in your kernel (that's what I normally have). It will try the latency
  test on my Walnut-Board with CONFIG_XENO_OPT_DEBUG asap.

 I'm unable to reproduce the problem of our Sycamore board with Linux
 2.6.14:
Can I you send me (maybe offline) your .config. I will also rebuild my rootfs 
from scratch. At work I have also a walnut board where I could run the tests.
CPU:   AMCC PowerPC 405GPr Rev. B at 333.333 MHz (PLB=133, OPB=66,
   EBC=66 MHz)
   Internal PCI arbiter enabled, PCI async ext clock used
   16 kB I-Cache 16 kB D-Cache
Board: Sycamore - AMCC PPC405GPr Evaluation Board

Thanks for trying to reproduce the problem.

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Problem with periodic timer on PPC40x solved

2006-09-26 Thread Niklaus Giger
Am Dienstag, 26. September 2006 16:21 schrieb Philippe Gerum:
  On Mon, 2006-09-25 at 22:29 +0200, Niklaus Giger wrote:
Am Montag, 25. September 2006 17:57 schrieb Philippe Gerum:
 On Sun, 2006-09-24 at 23:07 +0200, Wolfgang Grandegger wrote:
  Niklaus Giger wrote:
 
  ..
 
Is the output of lines like Xenomai: Switching display-3238 to
secondary mode after exception #1025 from user-space at 0x100033c4
(pid 3240) harmless or the result of a activated
CONFIG_XENO_OPT_DEBUG.. option?

 A known hw issue seems to exist with the 405GP (revD), which causes the
 ESR to be incorrectly set upon FPU emulation trap, which would in turn
 cause the spurious exception to be relayed to the nucleus by Adeos. The
 patch below is _not_ the final fix, but rather a way to check if this
 message is indeed related to the FPU emulation on your board. Does it
 silence the exception without breaking the box?

 --- arch/ppc/kernel/traps.c~  2006-09-25 17:10:48.0 +0200
 +++ arch/ppc/kernel/traps.c   2006-09-26 16:14:30.0 +0200
 @@ -638,9 +638,6 @@
   unsigned int reason = get_reason(regs);
   extern int do_mathemu(struct pt_regs *regs);

 - if (ipipe_trap_notify(IPIPE_TRAP_PCE,regs))
 - return;
 -
  #ifdef CONFIG_MATH_EMULATION
   /* (reason  REASON_ILLEGAL) would be the obvious thing here,
* but there seems to be a hardware bug on the 405GP (RevD)
 @@ -655,6 +652,9 @@
   }
  #endif /* CONFIG_MATH_EMULATION */

 + if (ipipe_trap_notify(IPIPE_TRAP_PCE,regs))
 + return;
 +
   if (reason  REASON_FP) {
   /* IEEE FP exception */
   int code = 0;
Tried your patch against adeos-ipipe 1.3. But I still get the same behaviour. 
Here is my proc/cpuinfo.

$ cat /proc/cpuinfo
processor   : 0
cpu : 405GPr
clock   : 400MHz
revision: 9.81 (pvr 5091 0951)
bogomips: 398.33
machine : Netstal HCU3
plb bus clock   : 133MHz

U-Boot printed the following info:
CPU:   AMCC PowerPC 405GPr Rev. B at 400 MHz (PLB=133, OPB=33, EBC=33 MHz)
, PCI sync clock at 33 MHz   16 kB I-Cache 16 kB D-Cache

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Problem with periodic timer on PPC40x solved

2006-09-26 Thread Niklaus Giger
Am Dienstag, 26. September 2006 18:28 schrieb Wolfgang Grandegger:
 Philippe Gerum wrote:
  On Tue, 2006-09-26 at 16:56 +0200, gilles.chanteperdrix wrote:
 OK, but in general, soft-float emulation should be used on systems
 without FPU and this is even more important for real-time. This is a
 tool chain issue. Niklaus, what tool chain are you using?

In my .config I have 
MATH_EMULATION=y

The toolchain is gcc-3.4.4-glibc-2.3.5/powerpc-405-linux-gnu built using Dan 
Kegel crosstool (Version 0.42 if I remember exactly).

Shall I switch to another one?

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Problem with periodic timer on PPC40x solved

2006-09-26 Thread Niklaus Giger
Here is the stack with adeos-ipipe 1.3 after applying your patch 

(gdb) info stack
#0  xnpod_fault_handler (fltinfo=0xc1489e18) at 
kernel/xenomai/nucleus/pod.c:216
#1  0xc004bad4 in xnpod_trap_fault (fltinfo=0x73) at 
kernel/xenomai/nucleus/pod.c:2907
#2  0xc0043ee8 in xnarch_trap_fault (event=115, domid=0, data=0xc01a9435) at 
include/asm/xenomai/bits/init.h:46
#3  0xc012dc38 in exception_event (event=3223286668, ipd=0x0, data=0xc01a9435) 
at arch/ppc/xenomai/hal.c:385
#4  0xc003fe18 in __ipipe_dispatch_event (event=0, data=0xc1489f50) at 
kernel/ipipe/core.c:665
#5  0xc000aecc in do_page_fault (regs=0xc1489f50, address=268448708, 
error_code=0) at include/linux/ipipe.h:445
#6  0xc0003258 in handle_page_fault ()
Previous frame inner to this frame (corrupt stack?)
(gdb) 

Hope it helps you
-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Problem with periodic timer on PPC40x solved

2006-09-25 Thread Niklaus Giger
Am Montag, 25. September 2006 17:57 schrieb Philippe Gerum:
 On Sun, 2006-09-24 at 23:07 +0200, Wolfgang Grandegger wrote:
  Niklaus Giger wrote:
..
 Ok, we can go for the lazy fix here, since this code is poised to
 disappear anyway. I've merged a variant of the above we already use for
 the ARM port, which scales down the period to microseconds instead of
 losing precision on the count of timebase ticks per jiffy.

 - ticks = ns * tb_ticks_per_jiffy / (10 / HZ);
 + ticks = (ns / 1000) * tb_ticks_per_jiffy / (100 / HZ);
Thanks for finding this solution. I tried to understand mulhwu and 
mulhwu_scale_factor but couldn't figure out a correct solution in a short 
time.

The buildbot cannot presently power on and off my PPC405 target board, as the 
my power outlet switching device is broken and has been sent back for a 
remplacement.

I did however run some tests manually and have the following questions about 
the output:
Why do I get negative values for latenciy values?
Is the output of lines like Xenomai: Switching display-3238 to secondary mode 
after exception #1025 from user-space at 0x100033c4 (pid 3240) harmless or 
the result of a activated CONFIG_XENO_OPT_DEBUG.. option?

Mon Sep 25 20:20:33 UTC 2006
running: ./run -- -T 5 -t2 # latency
*
*
* Type ^C to stop this application.
*
Xenomai: Switching display-3238 to secondary mode after exception #1025 from 
user-space at 0x100033c4 (pid 3240)
== Sampling period: 100 us
== Test mode: in-kernel timer handler
== All results in microseconds
warming up...
RTT|  00:00:01  (in-kernel timer handler, 100 us period, priority 99)
RTH|-lat min|-lat avg|-lat max|-overrun|lat best|---lat worst
RTD|  -5.108|  -4.754|  -0.905|   0|  -5.108|  -0.905
RTD|  -4.963|  -4.871|   1.155|   0|  -5.108|   1.155
Xenomai: Switching display-3238 to secondary mode after exception #1025 from 
user-space at 0xfda9638 (pid 3240)
RTD|  -4.963|  -4.758|  16.020|   0|  -5.108|  16.020
RTD|  -6.313|  -4.861|  10.980|   0|  -6.313|  16.020
Xenomai: Switching display-3238 to secondary mode after exception #1025 from 
user-space at 0xfe7c1c4 (pid 3240)
---|||||-
RTS|  -6.313|  -4.811|  16.020|   0|00:00:05/00:00:05
Xenomai: stopping RTDM services.

Best regards
-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Problem with periodic timer on PPC40x identified

2006-09-23 Thread Niklaus Giger
Hi

Finally I got some time to debug the whole problem with my BDI.
I see that in hal.c thal_set_local_cpu_timer the PIT is loaded with a value of 
568 which is far too low, as the PIT is running at 400 MHz. So it will 
trigger an interrupt every 1,4 microsecond and therefore overload the system.

I am not sure about the time units stored in __ipipe_decr_ticks. I tried to 
use 400 as my board is running at 400 MHz.
A quick breakpoint in ppc4xx_calibrate_decr in the file 
arch/syslib/ppc4xx_setup.c verified that bdinfo has the correct value of 
400'000'000 as frequency.

In hal.c and ipipe-core are two occurences of
mtspr(SPRN_PIT, __ipipe_decr_ticks); 
which I replaced by the above computed constant
mtspr(SPRN_PIT, __ipipe_decr_ticks * 400); 

Now the the board comes up, but calling in the vxworks skin 
taskDelay(sysClkRateGet()*10) delays me only about 5 seconds and not 10 as 
expected.

I have one possible explanation that the value of 568 is the result of a 
implicit truncation to 32 bits in ipipe_tune_timer. tb_ticks_per_jiffy is 
160, sysClkRate is 1. Therefore a maximal delay of 1 ms = 1000*1000 
ns leads to 1000*1000*16000 = 0x25'40BE'4000.

If would be nice if somebode could shed some light on this issue.

My preliminary patch looked like this, but I am sure that we need quite a 
different solution.

+++ ksrc/arch/powerpc/hal.c (Arbeitskopie)
@@ -81,7 +81,9 @@
  */
 static void rthal_set_local_cpu_timer(void)
 {
+#ifndef CONFIG_40x
 long ticks;
+#endif
 rthal_declare_cpuid;
 
 rthal_load_cpuid();
@@ -90,7 +92,7 @@
 #ifdef CONFIG_40x
 /* Enable and set auto-reload. */
 mtspr(SPRN_TCR, mfspr(SPRN_TCR) | TCR_ARE);
-mtspr(SPRN_PIT, __ipipe_decr_ticks);
+mtspr(SPRN_PIT, __ipipe_decr_ticks * 400); /* TODO: How do we get this 
value from the board info */
 #else /* !CONFIG_40x */
 ticks = (long)(__ipipe_decr_next[cpuid] - __ipipe_read_timebase());
 set_dec(ticks  0 ? ticks : 0);
Index: ksrc/arch/powerpc/patches/adeos-ipipe-2.6.14-ppc-1.4-00.patch
===
--- ksrc/arch/powerpc/patches/adeos-ipipe-2.6.14-ppc-1.4-00.patch   
(Revision 
1650)
+++ ksrc/arch/powerpc/patches/adeos-ipipe-2.6.14-ppc-1.4-00.patch   
(Arbeitskopie)
@@ -3581,7 +3581,8 @@
 +#ifdef CONFIG_40x
 +  /* Enable and set auto-reload. */
 +  mtspr(SPRN_TCR, mfspr(SPRN_TCR) | TCR_ARE);
-+  mtspr(SPRN_PIT, __ipipe_decr_ticks);
++  mtspr(SPRN_PIT, __ipipe_decr_ticks * 400 ); /* TODO: How do we get this 
value from the board info */
+
 +#else /* !CONFIG_40x */
 +  __ipipe_decr_next[cpuid] = __ipipe_read_timebase() + __ipipe_decr_ticks;
 +  set_dec(__ipipe_decr_ticks);

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Odd behaviour of vxworks

2006-09-18 Thread Niklaus Giger
Am Sonntag, 17. September 2006 19:06 schrieb Philippe Gerum:
 On Fri, 2006-09-15 at 21:44 +0200, Niklaus Giger wrote:
  Hi
..

 Maybe the example is misleading in that respect; the patch below makes
 the behaviour constant among all environments:
Thanks for your explanation and the fix. 

But I still have the second deviation from the behaviour under vxWorks and the 
skin behaviour under the xenomai simulator:
semGive returns -1 with an errno of 1441896 = S_semLib_INVALID_OPERATION.
See the output here:

__xeno_user_init: semMCreate 134 taskId 133
__xeno_user_init: semTake 134 status 0 0 taskId 133
__xeno_user_init: semGive 134 status -1 1441896 taskId 133
consumer_task: task 136 ConsumerTask
producer_task: task SEM_DELETE_SAFE 137 ProducerTask

Do you have an explanation for this difference?

Best regards
-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Best way to determine sudo in xeno-load?

2006-09-06 Thread Niklaus Giger
Hi

Since the last checkin in xeno-load.in by gpm on the 17 of July my PPC HCU3 
target does not run the xeno-tests correctly.
E.g. in http://ngiger.dyndns.org/buildbot/hcu3_q/builds/26/step-xenotest/0
you find lines like
/usr/xenomai/bin/xeno-load: /usr/xenomai/bin/xeno-load: 249: sudo: not found

My earlier solution was:
if test -n `which sudo`; then
  sudo=`which sudo`
fi

This was corrected by Gilles to
if test -n `which sudo 2/dev/null`; then
  sudo=`which sudo`
elif test -n `type -t sudo 2/dev/null`; then
  sudo=sudo
fi

Unfortunately my busybox version 1.1.3 behaves like this:
~ $ type -t sudo 2/dev/null
-t: not found
sudo: not found

Whereas my bash shell on my Debian system answers like this:
$ type -t sudo
file

Therefore I propose to change it like this:
if test -n `which sudo 2/dev/null`; then
  sudo=`which sudo`
elif `type -t sudo 2/dev/null` = 'file'; then
  sudo=sudo
else
  sudo=
fi
echo sudo cmd is now $sudo

Which gives me in Debian's bash the following output:
sudo cmd is now /usr/bin/sudo
and running under the busybox
/usr/xenomai/bin/xeno-load: /usr/xenomai/bin/xeno-load: 59: -t: not found
sudo: not found: not found
sudo cmd is now
which is ugly, but at least does the job correctly.

Or is Gilles patch based on yet another use-case. If this is the case, please 
let me know.

Also, the test has to be moved up before the first use of the sudo command.

If nobody comes up with a better solution, I would ask somebody to apply the 
attached patch, which implements both ideas.

Best regards

-- 
Niklaus Giger
Index: xeno-load.in
===
--- xeno-load.in	(Revision 1561)
+++ xeno-load.in	(Arbeitskopie)
@@ -82,6 +82,15 @@
 
 eval $user_moddir
 
+if test -n `which sudo 2/dev/null`; then
+  sudo=`which sudo`
+elif `type -t sudo 2/dev/null` = 'file'; then
+  sudo=sudo
+else
+  sudo=
+fi
+echo sudo cmd is now $sudo
+
 if `$sudo $modprobe -nq xeno_nucleus  /dev/null 21`; then
target_deps=${target_deps}nucleus+
 else
@@ -94,12 +103,6 @@
 
 test $verbose = 1  echo Running $target_name from $run_info_file
 
-if test -n `which sudo 2/dev/null`; then
-  sudo=`which sudo`
-elif test -n `type -t sudo 2/dev/null`; then
-  sudo=sudo
-fi
-
 if test \! x$target_mesg = x; then
   case $target_mesg in
   control_c)
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Best way to determine sudo in xeno-load?

2006-09-06 Thread Niklaus Giger
Am Mittwoch, 6. September 2006 23:08 schrieb Gilles Chanteperdrix:
 Niklaus Giger wrote:
   Hi
  
   Since the last checkin in xeno-load.in by gpm on the 17 of July my PPC
   HCU3 target does not run the xeno-tests correctly.
   E.g. in
   http://ngiger.dyndns.org/buildbot/hcu3_q/builds/26/step-xenotest/0 you
   find lines like
   /usr/xenomai/bin/xeno-load: /usr/xenomai/bin/xeno-load: 249: sudo: not
   found
  
   My earlier solution was:
   if test -n `which sudo`; then
 sudo=`which sudo`
   fi
  
   This was corrected by Gilles to
  
   if test -n `which sudo 2/dev/null`; then
 sudo=`which sudo`
   elif test -n `type -t sudo 2/dev/null`; then
 sudo=sudo
   fi
  
   Unfortunately my busybox version 1.1.3 behaves like this:
   ~ $ type -t sudo 2/dev/null
   -t: not found
   sudo: not found

 What about:

 if type sudo  /dev/null 21; then
 sudo=sudo
 fi
Works fine for me under bash and busybox.

Thanks

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Buildbot reorganisation

2006-09-04 Thread Niklaus Giger
Hi

I refactored the whole buildbot quite a lot. The following changes are worth 
mentioning and were applied last saturday morning:

- upgraded to buildbot 0.7.4 (required to for better warning/logs)

- to speed up builds during the day reorganised the buildbot to

- quick builds which only calls svn update, run 2 minutes after a checkin.
  Found at the usual place http://ngiger.dyndns.org/buildbot/
  They should be finished normally 20 to 30 minutes after a checkin.

- full builds at 1 AM in the night, takes about 2 hours. Found at
  http://ngiger.dyndns.org/buildbot-full/

- Using the AnyBranchScheduler to permit builds of branches/v2.2.2, in order
  to catch failures like the one reported yesterday v2.2.x broken (r1534).
  Here I am not totally sure whether everything will work as intended, but I 
  will have a close look on it.

- Reworked documentation, see
  http://ngiger.dyndns.org/xenomai-data/xeno_buildbot.{pdf|lyx}

- Warnings (if any) during compilations are found in the HTML log file of
  a compile step, e.g. build
  http://ngiger.dyndns.org/buildbot/hcu3_vx_q/builds/0
  leads to
  http://ngiger.dyndns.org/buildbot/hcu3_vx_q/builds/0/step-mk_kernel/2
  I hope, that Gilles is satisfied, if not, please propose a better layout.

- During build time it should be possible to watch warnings coming in
  realtime. But beware, that if the slave and master run on the same machine,
  this will be really slow, for reasons still unknown to me.

- Added a help script extract_script.rb, which allows me to extract all
  the steps run a build. Handy for debugging.

- Added a robots.txt to avoid incoming traffic on my machine. Everything robot
  is no disallow to search anything under the buildbot/.

- Corrected test_sim.rb to output segmentation errors, check for error status
  of all called test programs.

Buildbot has the very nice feature to be able to run a lot of steps
B E F O R E checking in the changes. See 
http://buildbot.sourceforge.net/manual-0.7.4.html#try
If any of the committers  would like to test the feature, I would love to add 
this feature to the buildbot and would do all the necessary to give him the 
necessary privilege on the buildmaster. I never tested this feature yet, but 
would invest the necessary time if you drop me note that you are interested.

TODO:
- investigate why the sim segfaults on ppc
- why does the hcu3 test run with the quick but not the full build.

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Buildbot: Small glitch in simulator

2006-08-26 Thread Niklaus Giger
Hi

http://ngiger.dyndns.org/buildbot/sim/builds/18/step-check_sim/0
reports a small error in the simulator.

Some problems were reported in:
posix-tmq:: starting POSIX services.
vxworks-t010823-2:t010823-2.c:163: Expected sequence: SEQ(Test2,2003); got 
SEQ(Test2,2004)
vxworks-t010823-2: t010823-2.c:166, test finished: 1 failures/ 33 tests
program finished with exit code 3

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Buildbot reorgnized and will get prettier in the future

2006-08-23 Thread Niklaus Giger
Hi everybody

I invested quite a few hours to clean up my buildbot setup, as there
were a lot of hacks going into it during the last few months 
which had reduced considerably its readability.

The changes are now:
- Work based on the Debian package 0.7.3 of buildbot
- Documentation reworked/completed. It may be downloaded from:
  http://ngiger.dyndns.org/xenomai-data/xeno_buildbot.pdf
- master.cfg reworked
   - clearer parameter passing to subscripts
   - prepared for debugging (simple way to skip steps, handy
 if only the last script of a 1 hour compilation run fails)
   - merged hacks for RTnet, DENX-2.4 kernel into xenoSteps procedure
- scripts reworked, install*.sh merged into a single ruby script install.rb
- Some work as I would like to make the installation directory may be
  specified per through /path/buitbot/slave/builder/instDef.rb and no
  more in master.cfg (using installPattern). At the moment both must match.

As always the whole buildbot documentation and all scripts (except some
which contain passwords) may be downloaded from:
http://ngiger.dyndns.org/svn/admin/hcu3_linux/doc/buildbot/

Yesterday builbot 0.7.4 was released. I will try to switch to it and add the 
following improvements:
- cleaning up installPattern in master.cfg
- Prettier HTML output using a CSS.
- Adding a readable HTML output of the simulator errors
- May be use Debian init.d script to start/stop the daemons

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Buildbot cannot compile xenoma: rtcanconfig refences pthread_kill

2006-08-15 Thread Niklaus Giger
Hi

All my PPC based compilation fail with something like

ccache gcc -rdynamic -o .libs/rtcanconfig 
rtcanconfig.o  
-L/mnt/data.ng/buildslave/buildbot/quick-ppc/build/ppc/src/skins/native 
-L/mnt/data.ng/buildslave/buildbot/quick-ppc/build/ppc/src/skins/rtdm 
/mnt/data.ng/buildslave/buildbot/quick-ppc/build/ppc/src/skins/rtdm/.libs/librtdm.so
 -Wl,--rpath -Wl,/usr/xenomai/lib
/mnt/data.ng/buildslave/buildbot/quick-ppc/build/ppc/src/skins/rtdm/.libs/librtdm.so:
 
undefined reference to `pthread_kill'
http://ngiger.dyndns.org/buildbot/ppc/builds/229/step-mk_xeno/0
Is this only a PPC problem? It appears first with build 226, which referred to 
revisions 1433 and 1434. Details see 
http://ngiger.dyndns.org/buildbot/ppc/builds/226

Jan, could you please have a look at the error, as it seems to me that you 
reduced the lib dependencies a little bit too much?

Jan BTW, I also switched the RTNet svn to the new location. 

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Buildbot cannot compile xenoma: rtcanconfig refences pthread_kill

2006-08-15 Thread Niklaus Giger
Am Dienstag, 15. August 2006 20:14 schrieb Jan Kiszka:
 Niklaus Giger wrote:
  Hi
 
  All my PPC based compilation fail with something like
  ...

 Things start to work again, but other issues pop up now.

 o The installation step of xenomai on the tqm860 is broken. For that
   reason RTnet fails to configure. Please have a look, Niklaus.
I had noticed this just before the compile issues popped up. I will have a 
look, but the whole buildbot system is quite complex and confuses sometimes 
even its creator.
 o The simulator fails in both the posix and vxworks part:
   http://ngiger.dyndns.org/buildbot/sim/builds/258/step-check_sim/0
I reported the error vxworks-t010823-2:t010823-2.c:163: Expected sequence: 
SEQ(Test2,2009); got SEQ(Test2,2003) some time ago. Looks like a minor 
issue to me, as the simulator has its own internal timing. But I always 
prefer that Gilles fixes these kind of errors.

   Could anyone have a look?
The other errors in the POSIX skin are new and need to be looked at.


 o The run test on the hcu_vx seems to cause a hang after the nucleus
   being loaded:
   http://ngiger.dyndns.org/buildbot/hcu_vx/builds/128/step-xeno-test/0
This is a long standing problem, where Philippe needs to get hand on a PPC40x 
system to find the error. I tried to give it a look
 hcu3 is fine, a rebuild of ppc is currently pending.
hcu3 is the most important target (at least for me), as it is the only target 
which runs xeno-test.

 A few remarks and wishes:

 o Some list of the characteristics of those systems would be nice, just
   to gain overview what the differences are.

I will try to fix my documentation. But from the beginning I wanted to 
introduce as much variance as possible in the different buildings, therefore 
I intentionally used different gcc versions, cross-compiling vs native, only 
xenomai vs xenomai+RTnet, POSIX vs VXWORKS, everything built-in vs everything 
as a module. Looking at all the different log files (I know that this is time 
consuming) usually gives me quite a few of the answers.


 o Maybe it's useful to strip the kernel configs of some systems
   (non-related drivers etc.) to reduce the turn-around time.
I was thinking about it, but it is only the ppc build which takes a long time 
to build and I am running usually a specific build of this kernel to assure 
me that Xenomai is working all right in a real environment.

Roundtrip time could also be improved if more buildbot slave were added. 
Though if anybody has a spare machine running all the time which could 
support the load of Xenomai builds, I would be glad to help integrate another 
slaves into my buildbot system. It would be also possible to add specific 
slave for anybody who wants to be assured that the Xenomai trunk continues to 
work for his specific board and build environment.


 o Some kind of allyesconfig for Xenomai would be nice. 2.4 doesn't seem
   to have this, but maybe one can derive that from a 2.6 .config, grab
   all XENO-related switches, and append them to the 2.4 .config. This
   way new stuff like the CAN stack now would get included faster.
A allyesconfig is not possible as e.g. VXWORKS and the POSIX-skin have 
mutually exclusive requirements for the timing system (periodic vs 
aperiodic).

If you want some specific CONFIG set please drop me a note.


 On final remark I can only repeat over and over again:

 Your buildbot is really great stuff! It significantly reduces the
 round-trip time for detecting and fixing (often trivial) build issues as
 long as there are not yet millions of Xenomai users updating their SVN
 checkout every day ;)
Thanks for the compliment. As long as everybody on the mailing list responds 
so well to my complaints that something is broken, I will remain motivated to 
invest my time.

Best regards
-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Buildbot running again. rtnet does not compile, small error in sim testsuite.

2006-07-25 Thread Niklaus Giger
Hi

Back from my vacation I discovered that the buildbot did not run during my 
absence as I had added a (debugging) printf some time before vacation. This 
printf did not harm as long as the session was alive. But before leaving I 
cleanup my desktop and bang the xenomai repository watcher got killed. Sorry!

I fixed the error and now the buildbot is running again.

RTnet seems to have a compile problem: see
http://ngiger.dyndns.org/buildbot/tqm860/builds/227/step-mk_RTnet/0
In file included from rtnet_ifs.c:30:
../../../stack/include/rtnet.h:29:23: rtdm/rtdm.h: No such file or directory
rtnet_ifs.c: In function `main':
..

The timing behaviour seems to have changed a little bit as the simulator 
testsuite reports in:
http://ngiger.dyndns.org/buildbot/sim/builds/213/step-check_sim/0
vxworks-t010823-2:t010823-2.c:163: Expected sequence: SEQ(Test2,2009); got 
SEQ(Test2,2002)
vxworks-t010823-2: t010823-2.c:166, test finished: 1 failures/ 33 tests

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Improved xeno-test: Ready for checkin

2006-06-22 Thread Niklaus Giger
Hi

Here is my patch for improved versions of xeno-info/load/config/test
as well as a Ruby test script for the maintainers.

The modified scripts pass the test for most options to xeno-test. The only 
exception is -v for verbose. As I have no clue how/what this option should 
do I left it as is.

The modifications are:
- busybox supported
- The load jobs (dd) are killed correctly
- two new lines for my buildbot xeno-test started and xeno-test finished
- the options -m / -L are no more silent, but echo also on the standard out.
  If the old behaviour is preferred, it would be simple to restore it. But
  the actual behaviour is easier to debug and fits better into the buildbot
  logs.

The tests under the busybox are not as good as with a normal shell, but work 
good enough with my buildbot. I will try to integrate them later into the 
Ruby test script.

Attached are also all log files of my testruns, if you want to verify that 
everything work as expected. A manual inspection of all logfiles did not 
reveal anymore hidden bugs to me (after quite a few runs to improve my test 
cases -).

After generating all logs, the testscript resumed the results like this:
 Thu Jun 22 23:31:34 CEST 2006: 14 PASSED:   0 seconds. opts -M
 [EMAIL PROTECTED] -  returned 0 Writing tst to
 /mnt/data.ng/hcu/kernel/xenomai-head/scripts/test/logs/xeno-test.store Thu
 Jun 22 23:31:34 CEST 2006:  9 PASSED: -N marker:
 [markertest-2.6.14-1252M-ppc-060622.232920] Thu Jun 22 23:31:34 CEST
 2006:  8 PASSED: -L: [/tmp/test-2.6.14-1252M-ppc-060622.232417,
 /tmp/test-2.6.14-1252M-ppc-060622.232452,
..
 /tmp/test-2.6.14-1252M-ppc-2006-marker-06-marker,
 /tmp/test-2.6.14-1252M-ppc-060622.233100] running all Checks
 CHK 10 FAILED opts -v could not find xeno-test: finished
   searched in
 /mnt/data.ng/hcu/kernel/xenomai-head/scripts/test/logs/test_xeno_test.log.1
0 CHK 10 FAILED, could not find xeno-test: finished in
 /mnt/data.ng/hcu/kernel/xenomai-head/scripts/test/logs/test_xeno_test.log.1
0 completed all Checks

Unless you spot any error in my tests, I will not improve my scripts nor the 
xeno-test scripts in the near future. Also I would appreciate go know whether 
the error is already present in the current version of xeno-test.

As rc3 is still not out, I do not see any reason not to check in this patch.
But I would like to see this happen soon, as I will not be able to fix errors 
after next Wednesday.

Best regards

-- 
Niklaus Giger
Index: scripts/xeno-config.in
===
--- scripts/xeno-config.in	(Revision 1254)
+++ scripts/xeno-config.in	(Arbeitskopie)
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /bin/sh
 
 staging=${DESTDIR}
 prefix=@prefix@
Index: scripts/xeno-info
===
--- scripts/xeno-info	(Revision 1254)
+++ scripts/xeno-info	(Arbeitskopie)
@@ -1,31 +1,46 @@
-#!/bin/sh
+#! /bin/sh
 #
 # This file has been lifted 'as is' from linux/scripts/ver_linux.
-#
+# Adapted to be run also under the BusyBox. If you want to test it under the BusyBox use
+# busybox sh xeno-info 
 
 PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:$PATH
 echo 'If some fields are empty or look unusual you may have an old version.'
 echo 'Compare to the current minimal requirements in Documentation/Changes.'
 echo ' '
 
+withBusybox=0
+if sh --help 21| grep -q BusyBox; then
+withBusybox=1;
+# else running a real /bin/sh (bash) shell
+fi
+
+if test $withBusybox -eq 1; then busybox | grep -i BusyBox v ; fi
+
 uname -a
 echo ' '
 
+if test -n `which gcc` ; then
 gcc --version 21| head -n 1 | grep -v gcc | awk \
 'NR==1{print Gnu C , $1}'
 
 gcc --version 21| grep gcc | awk \
 'NR==1{print Gnu C , $3}'
+fi
 
+if test -n `which gcc` ; then
 make --version 21 | awk -F, '{print $1}' | awk \
   '/GNU Make/{print Gnu make  ,$NF}'
+fi
 
 ld -v 21 | awk -F\) '{print $1}' | awk \
   '/BFD/{print binutils  ,$NF}'
 
+if test 0 -eq $withBusybox ; then 
 fdformat --version | awk -F\- '{print util-linux, $NF}'
 
 mount --version | awk -F\- '{print mount , $NF}'
+fi 
 
 depmod -V  21 | awk 'NR==1 {print module-init-tools ,$NF}'
 
@@ -50,21 +65,26 @@
 isdnctrl 21 | grep version | awk \
 'NR==1{print isdn4k-utils  , $NF}'
 
+if test -n `which ldd` ; then
 ls -l `ldd /bin/sh | awk '/libc/{print $3}'` | sed \
 -e 's/\.so$//' | awk -F'[.-]'   '{print Linux C Library \
 $(NF-2).$(NF-1).$NF}'
 
 ldd -v  /dev/null 21  ldd -v || ldd --version |head -n1 | awk \
 'NR==1{print Dynamic linker (ldd)  , $NF}'
+fi
 
 ls -l /usr/lib/lib{g,stdc}++.so  2/dev/null | awk -F. \
'{print Linux C++ Library   $4.$5.$6}'
 
+if test 0 -eq $withBusybox ; then 
 ps --version 21 | awk 'NR==1{print Procps, $NF}'
+fi 
 
 ifconfig --version 21 | grep tools | awk \
 'NR==1{print Net-tools , $NF}'
 
+if test 0 -eq $withBusybox ; then 
 # Kbd

[Xenomai-core] Buildbot progress: runs xeno-test on one board

2006-06-17 Thread Niklaus Giger
Hi

I just managed to put my newest version of the buildbot online. The following 
new features are present:
- Updated to buildbot 0.7.3.
- Generate a file localversion in the build directory which contains the
  svn revision number (using the new got_revision property in buildbot 0.7.3)
- For my embedded target HCU I build now two variants:
  a) hcu3: with APERIODIC timer and the skins native, uvm, posix, psos 
 (as modules)
  b) hcu_vx: with PERIODIC timer and the skins native, vrtx and vxworks
 (built-in). This variant has known startup problems, see:
 http://ngiger.dyndns.org/buildbot/hcu_vx/builds/7/step-xeno-test/0
- After compiling and installing the new kernel, modules and xenomai into
  a nfs-root on the server, the last step calls a Ruby script. It patches
  xeno-* to use my busybox variants. Then it powers the target on, waits till
  it is ready, logs in.  and calls xeno-test. Logs are not yet mailed to
  xenomai-data, as there are still some unresolved problems with this
  particular board.

An example output may be found going to:
http://ngiger.dyndns.org/buildbot/hcu3/builds/101/step-xeno-test/0

I hope this will generate a few more visit to the buildbot to verify whether 
your changes broke something or not.

Specifying this test is done by the following Ruby code snippet:

# DefaultTTY  = /dev/ttyUSB0
# DefaultPM   = [172.25.1.211, 2]
  def runTest(device=DefaultTTY, pmIp = DefaultPM )
res = false
checkXenoTestPatch
pm211 = PowerModule.new(pmIp[0], pmIp[1])
scc   = File.open(device, w+)
CommDevice::setHCU3(scc)
hcu3  = RmtTstRunner.new(scc, pm211, LogName)
hcu3_steps = 
  [ TestStep.new(U-Boot, 5, nil),# Wait till 
U-Boot is awake
TestStep.new(main_loop, 10, nil),# Wait till 
U-Boot 
loads kernel
TestStep.new(Transferring control to Linux, 10), # U-Boots job is 
finished now 
TestStep.new(Linux version, 5, nil), # Linux is alive!
TestStep.new(Freeing unused kernel memo, 10, nil),   # Linux init 
finished
TestStep.new(Willkommen, 10, nil),
TestStep.new(login, 5, root),
TestStep.new(/usr/xenomai/bin $, 5, cd /usr/xenomai/bin), 
TestStep.new(xeno-test: started, 5, ./xeno-test -T #{XenoRunTime}),
TestStep.new(xeno-test: finished, (30 + XenoRunTime)*NrXenoTests, nil)
  ]
res = hcu3.runTest(hcu3_steps)
hcu3.power.power(false)
puts #{Time.now.strftime(%H:%M:%S)}: Running xeno-test reported #{res}. 
Will dump output
system cat #{LogName}
return res
  end
end

If you are interested in more details, take a look at 
http://ngiger.dyndns.org/xenomai-date. The API of the used Ruby code is found 
at http://ngiger.dyndns.org/xenomai-data/doc
All the sources (and the a little bit outdated documentation of the buildbot 
setup) can be checkedout via
http://ngiger.dyndns.org/svn/admin/hcu3_linux/doc/buildbot/.

Next steps will be documentation cleanup, improving xeno-test and adding a x86 
slave. (I just receveived an old x86-pc box, which I hope to make it boot via 
NFS.) But do not expect a lot of progress in the next 6 weeks as in 10 day I 
will leave for a 3 week vacation to Korea.

I am just puzzled that during the test, I get
cat: /proc/xenomai/sched: No such process
Sat Jun 17 21:48:53 UTC 2006
running: cat /proc/xenomai/stat
cat: /proc/xenomai/stat: No such process
Why do I get this answer? (xeno-test calls cat only for existing files?)

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Some new test cases for the vxWorks skin

2006-06-14 Thread Niklaus Giger
Am Mittwoch, 14. Juni 2006 15:23 schrieb Gilles Chanteperdrix:
 Niklaus Giger wrote:
   Is it okay to submit such a patch, which mixes a  different test cases
   or shall I submit the patches in smaller pieces? Should the test that I
   put into the procedure msgDuringInt better be inlined? Or should I add a
   new file for these tests?

 I think it is a good idea to add some more tests to the message queues
 tests. I also agree with the idea of documenting the differences instead
 of being bug compatible. However, I would apply a few cosmetic changes
 to the patch before including it. Comments follow, please tell me if you
 agree with these changes.

   -TEST_ASSERT(taskIdVerify(0) == ERROR  errno ==
   S_objLib_OBJ_ID_ERROR); +errno = 0;
   +TEST_ASSERT(taskIdVerify(0) == ERROR  errno == 0);

 This is weird, it means that taskIdVerify does not set errno when passed
 a null argument, but returns ERROR. Anyway, and this goes for all other
 checks, I do not like errno = 0. If errno is not set, let us not check
 it.
Okay. That's probably safer.

   +errno = 0;
   +TEST_ASSERT(taskIdVerify(malloc(20)) == ERROR  errno ==
   S_objLib_OBJ_ID_ERROR);

 You should memset the new malloced block (or use calloc instead of
 malloc), in order to be sure that it is invalid. And free it after use.
I didn't bother about the memory leak, as the testsuite was not meant to live 
a long time. And it kept the changes smaller. But I would never accept this 
kind of code in a production system. So we better clean it up.
   +TEST_ASSERT_OK(rc);
   +TEST_ASSERT(errno == 0);

 There is no guarantee that the syscalls will not set errno when
 returning OK. I would remove every TEST_ASSERT(errno == 0).
Agreed.
   +TEST_ASSERT(rc == ERROR);
   +TEST_ASSERT(errno == S_msgQLib_NON_ZERO_TIMEOUT_AT_INT_LEVEL);

 Here, and in several other places, I would use only one assert, as it is
 done in other tests.
Fine for me. Just while developing test cases it was more convenient to know 
exactly which condition lead to an error. 
   +errno = 0;
qid = msgQCreate(NMESSAGES,sizeof(int),0x);
   -TEST_ASSERT(qid == 0  errno == S_msgQLib_INVALID_QUEUE_TYPE);
   +TEST_ASSERT(qid != 0  errno == 0);
   +if (qid) msgQDelete(qid);

 Here, it appears that vxworks and xenomai vxworks skin are incompatible,
 changing the test code will make the test fail for xenomai. Would not it
 be a better idea to document this difference ? After all, users code is
 supposed to never use erroneous arguments, and if it does, it is better
 to learn it when porting code to xenomai than to keep ignoring it
 silently.
Agreed. Do you agree with the following sentence for vxworks-skin.txt?

Passing a argument to options with non defined bits for msgQCreate will return 
0 under the xenomai skin. VxWorks returns a valid msqId.

   -rc = msgQSend(qid,(char
   *)message_list[0],0,WAIT_FOREVER,MSG_PRI_NORMAL); +errno = 0;
   +rc = msgQSend(qid,(char *)message_list[0],2*message_list[0],
   WAIT_FOREVER,MSG_PRI_NORMAL);
  
TEST_ASSERT(rc == ERROR  errno == S_msgQLib_INVALID_MSG_LENGTH);

 Accepting null length messages may be a feature, does a receiver receive
 the null length message with vxworks ?
I will check and give you an answer about this later (probably before Friday 
evening).

   -rc = msgQReceive(qid,(char *)msg,0,NO_WAIT);
   -TEST_ASSERT(rc == ERROR  errno == S_msgQLib_INVALID_MSG_LENGTH);

 Null length message again, does this work with the real vxworks ?
Same here.
   +rc = msgQNumMsgs(qid);

 You do not use this value. Missing TEST_ASSERT ?
No. Bad cleanup before sending. I had some redundant tests after this 
position. Just kill this line.

You may either check in a modified version of this patch or wait till I send 
you one which incorporates your suggestions.

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Breakage in trunk

2006-06-13 Thread Niklaus Giger
Hi 

I noticed that, eg.  
http://ngiger.dyndns.org/buildbot/hcu3/builds/80/step-mk_xeno/0
there are build failures. It tells me
Making install in vrtx
make[4]: Entering directory 
`/mnt/data.ng/buildslave/buildbot/quick-hcu3/build/hcu/src/skins/vrtx'
make[4]: *** No rule to make target `event.c', needed by 
`libvrtx_la-event.lo'.  Stop.

Last successfull build for hcu3 was with Revision: 1195

tqm860 still failes as  shown in
http://ngiger.dyndns.org/buildbot/tqm860/builds/97/step-mk_kernel/0
with
gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer 
-I/home/buildslave/buildbot/quick-tqm860/build/linuxppc_2_4_devel-2006-04-06-1735/arch/ppc
 -o 
scripts/split-include scripts/split-include.c
make: *** No rule to make target `include/linux/autoconf.h', needed by 
`include/config/MARKER'.  Stop.

Could someone looking at these failures, please?

Best regards

--
Niklaus Giger


___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Re: Xenomai v2.2-rc2. PowerPC 405GPr board does not start up

2006-06-11 Thread Niklaus Giger
Hi Philippe

I redid my testing wit revision 1188 (+ modification from me for the 
xeno-test). 

The lockup at startup is still there if CONFIG_XENO_OPT_TIMING_PERIOD !=  0 
and if the skins native, posix, rtdm, uvm and skins skins are compiled in.
Timing settings was always CONFIG_XENO_OPT_TIMING_PERIODIC=y.

Linux version 2.6.14-1188M-hcu3 ([EMAIL PROTECTED]) (gcc version 3.4.4) #4 Sun 
Jun 11 
19:45:36 CEST 2006
HCU3 Netstal Maschinen AG with U-Boot 1.1.2.
Built 1 zonelists
Kernel command line: console=ttyS0,9600 root=/dev/nfs rw 
nfsroot=172.25.1.58:/home/hcu/rootfs ip=172.25.1.5:172.15.1.58:::hcu4::off 
panic=30
PID hash table entries: 256 (order: 8, 4096 bytes)
I-pipe 1.3-03: pipeline enabled.
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 29884k available (1740k kernel code, 608k data, 92k init, 0k highmem)
Mount-cache hash table entries: 512
softlockup thread 0 started up.
NET: Registered protocol family 16

I-pipe: Domain Xenomai registered.
Xenomai: hal/powerpc started.
Xenomai: real-time nucleus v2.2-rc2 (Engines Of Creation) loaded.
Xenomai: starting native API services.
Xenomai: starting POSIX services.
Xenomai: starting RTDM services.
Xenomai: starting UVM services.
Xenomai: incompatible timer mode (aperiodic found, need periodic).
Xenomai: VxWorks skin init failed, code -16.
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
..

Best regards 

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Revision 1182 broke compiling PPC

2006-06-10 Thread Niklaus Giger
Hi Philippe

Your change seems to be broken (at least on PPC). In 
http://ngiger.dyndns.org/buildbot/hcu3/builds/71/step-mk_xeno/0
you will notice near the end
 
gcc -DHAVE_CONFIG_H -I. -I../../../../../build/xenomai/src/skins/vrtx 
-I../../../src/include -O2 -D_GNU_SOURCE -D_REENTRANT -D__XENO__ -Wall -pipe 
-D__IN_XENO__ -Wstrict-prototypes -I../../../../../build/xenomai/include -MT 
libvrtx_la-task.lo -MD -MP -MF .deps/libvrtx_la-task.Tpo -c 
../../../../../build/xenomai/src/skins/vrtx/task.c  -fPIC -DPIC -o 
.libs/libvrtx_la-task.o
../../../../../build/xenomai/src/skins/vrtx/task.c:250:21: error: 
macro XENOMAI_SKINCALL1 requires 3 arguments, but only 2 given
../../../../../build/xenomai/src/skins/vrtx/task.c: In function 'sc_delay':
../../../../../build/xenomai/src/skins/vrtx/task.c:249: 
error: 'XENOMAI_SKINCALL1' undeclared (first use in this function)
../../../../../build/xenomai/src/skins/vrtx/task.c:249: error: (Each 
undeclared identifier is reported only once
../../../../../build/xenomai/src/skins/vrtx/task.c:249: error: for each 
function it appears in.)
make[4]: *** [libvrtx_la-task.lo] Error 1
make[4]: Leaving directory 
`/mnt/data.ng/buildslave/buildbot/quick-hcu3/build/hcu/src/skins/vrtx'

Could you please take a look at it?

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Porting xeno-{info|load|test} to a busybox system

2006-05-26 Thread Niklaus Giger
Am Freitag, 26. Mai 2006 15:52 schrieb Jan Kiszka:
 Niklaus Giger wrote:
  ...
  If anybody has a working target with a Xenomai + BusyBox combination and
  would be willing to test drive my changes, I would appreciate a feedback
  enormously.

 Did so, and here comes the result: :)
Thanks a lot for your prompt feedback.
..
 This may become fragile (and it already is on my hacked system). The
 reason: plans exist to allow compiling bb into multiple binaries again,
 thus sh will not be linked to busybox, but to ash e.g.
Sure. It was just my first idea. But your proposed solution is better and 
already
..
 When using this variant, I get the following messages:
  /bin/xeno-test: /bin/xeno-test: 177: zgrep: not found
 What about zcat | grep instead? Moreover, I failed to find a zgrep bb
 applet. Did you copy that stuff on your box?
Sorry. As I had segmentation faults, my run did not get so far/or I missed 
this error. Running it manually I confirmed your bug and the proposed 
solution works for me, too. Integrated in the new version (attached) of the 
patch.

  /bin/xeno-test: /bin/xeno-test: 264: getopts: not found

 getopts is off by default in bb. Is this essential for xeno-test? Then
 you should state this requirement somewhere.
I checked out BusyBox 1.13, run make defconfig, changed the cross-compiler 
and install path. But I verified that a make defconfig on the 1.00 version 
had # CONFIG_ASH_GETOPTS is not set.

Could you try the attached patch using busybox with CONFIG_ASH_GETOPTS=y? 
 
  /bin/xeno-test: shift: 267: Illegal number: -1

 I guess this comes from the missing getopts...


 Regarding workload: I typically run the cache calibrator [1] in a look,
 together with some I/O load (hard disk where available, flood ping). The
 loop looks like

 while true; do calibrator box-MHz 8M /tmp/; done
 box-MHz should be derivable from /proc/cpuinfo with some scripting. We
 may just check if an inclusion of the calibrator source code is possible
 (license terms...).
Didn't know this tool. But I think this is another suggestion to improve 
xeno-test.

 Lacking time right now, otherwise I would have hacked further to make
 the test run. This test could be quite interesting for us here to
 quickly check our processing boxes' hardware and to test new Xenomai
 versions for elementary regressions when upgrading production systems
 (fortunately only their CF-cards). Looking forward!
Nice to hear that. So could you please give my patch a second try with a 
modified busybox?

-- 
Niklaus Giger
Index: scripts/xeno-config.in
===
--- scripts/xeno-config.in	(Revision 1137)
+++ scripts/xeno-config.in	(Arbeitskopie)
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /bin/sh
 
 staging=${DESTDIR}
 prefix=@prefix@
Index: scripts/xeno-info
===
--- scripts/xeno-info	(Revision 1137)
+++ scripts/xeno-info	(Arbeitskopie)
@@ -1,31 +1,46 @@
-#!/bin/sh
+#! /bin/sh
 #
 # This file has been lifted 'as is' from linux/scripts/ver_linux.
-#
+# Adapted to be run also under the BusyBox. If you want to test it under the BusyBox use
+# busybox sh xeno-info 
 
 PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:$PATH
 echo 'If some fields are empty or look unusual you may have an old version.'
 echo 'Compare to the current minimal requirements in Documentation/Changes.'
 echo ' '
 
+withBusybox=0
+if sh --help 21| grep -q BusyBox; then
+withBusybox=1;
+# else running a real /bin/sh (bash) shell
+fi
+
+if test $withBusybox -eq 1; then busybox | grep -i BusyBox v ; fi
+
 uname -a
 echo ' '
 
+if test -n `which gcc` ; then
 gcc --version 21| head -n 1 | grep -v gcc | awk \
 'NR==1{print Gnu C , $1}'
 
 gcc --version 21| grep gcc | awk \
 'NR==1{print Gnu C , $3}'
+fi
 
+if test -n `which gcc` ; then
 make --version 21 | awk -F, '{print $1}' | awk \
   '/GNU Make/{print Gnu make  ,$NF}'
+fi
 
 ld -v 21 | awk -F\) '{print $1}' | awk \
   '/BFD/{print binutils  ,$NF}'
 
+if test 0 -eq $withBusybox ; then 
 fdformat --version | awk -F\- '{print util-linux, $NF}'
 
 mount --version | awk -F\- '{print mount , $NF}'
+fi 
 
 depmod -V  21 | awk 'NR==1 {print module-init-tools ,$NF}'
 
@@ -50,21 +65,26 @@
 isdnctrl 21 | grep version | awk \
 'NR==1{print isdn4k-utils  , $NF}'
 
+if test -n `which ldd` ; then
 ls -l `ldd /bin/sh | awk '/libc/{print $3}'` | sed \
 -e 's/\.so$//' | awk -F'[.-]'   '{print Linux C Library \
 $(NF-2).$(NF-1).$NF}'
 
 ldd -v  /dev/null 21  ldd -v || ldd --version |head -n1 | awk \
 'NR==1{print Dynamic linker (ldd)  , $NF}'
+fi
 
 ls -l /usr/lib/lib{g,stdc}++.so  2/dev/null | awk -F. \
'{print Linux C++ Library   $4.$5.$6}'
 
+if test 0 -eq $withBusybox ; then 
 ps --version 21 | awk 'NR==1{print Procps, $NF}'
+fi 
 
 ifconfig --version 21 | grep tools | awk \
 'NR==1{print Net

Re: [Xenomai-core] Xenomai v2.2-rc2

2006-05-26 Thread Niklaus Giger
Am Freitag, 26. Mai 2006 19:49 schrieb Gilles Chanteperdrix:
 Niklaus Giger wrote:
   Do you have any clue? (Doubling the stack in vm/thread.cc didn't help.)

 Automatic re-building does not work for the simulator. So, in case of
 segmentation fault, try:

 make clean all check
Yes, I noticed this as I was looking for a compile of thread.cc. Therefore I 
did a clean rebuild (but a little bit different than your receipt). After 
rebuilding using make clean all check under sim and 
sim/skin/posix/testsuite, I still get the same failure.

Regards
-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Porting xeno-{info|load|test} to a busybox system

2006-05-25 Thread Niklaus Giger
Hi

For my embedded target system I installed BusyBox as it was the easiest way to 
get a small GNU/Linux system to boot into a working shell. (But it takes less 
than 16 seconds from power on till the the familiar login:  prompt.)

But I ran into the problem, that the xeno-*-applications did not run under the 
busybox environment. Here are some comment on my proposed changes.

1) To make a shell work under the busybox I had to specify #! /bin/sh instead 
of #! /bin/bash.

2) To make the run I run the xeno-*-applications on my Debian GNU/Linux 
PowerBook 
either as:
$ xeno-info
or as 
$ busybox sh xeno-info

3) Once all tests passed on my PowerBook, I switched to the embedded PPC405GPr 
board using a recent busybox (version 1.1.3).
This exposed some more not supported errors, eg.
fdformat: unrecognized option `--version'
Also on an embedded system a lot of the usual utilites like gcc, make, etc are 
not present. Therefore I checked for their existence with expressions like 
`which make`

4) As the BSD utility script is not present on my embedded system, 
xeno-test -L does not work.

5) The busybox shell does not know arrays. Also for unknown reasons the 
dd_jobs variable got not updated outside of the function generate_loads. 
Therefore I added a killall dd in the cleanup.

6) trap CHLD did not work under the BusyBox. Also (to be sure) called 
cleanup_load manually before exit.

7) Id did not ident the not busybox parts in xeno-info. This makes the patch 
smaller and more readable, but should probably be corrected before applying 
it.

8) Using `dirname $0` relative paths to make xeno-test work also if not called 
in /usr/xenomai/bin

9) Changing the e-mail address to [EMAIL PROTECTED] is also included.

Checking the changes between running xeno-test (as bash or as busybox) and the 
old one did not reveal any significant changes. On my PPC405 system I could 
not complete this test as there segmentation faults running the invidual 
tests.

I would appreciate if these changes (or similar) could go -- after a review -- 
into the trunk (not necessarily before 2.2). I am specially interested in Jim 
Cromie's opinion. 

If anybody has a working target with a Xenomai + BusyBox combination and would 
be willing to test drive my changes, I would appreciate a feedback 
enormously.

These changes are a precondition to make the buildbot run xeno-test on the 
only board where I can easily and automatically switch the power off and on, 
without risking a family crisis.

Best regards
-- 
Niklaus Giger
Index: scripts/xeno-config.in
===
--- scripts/xeno-config.in	(Revision 1135)
+++ scripts/xeno-config.in	(Arbeitskopie)
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /bin/sh
 
 staging=${DESTDIR}
 prefix=@prefix@
Index: scripts/xeno-info
===
--- scripts/xeno-info	(Revision 1135)
+++ scripts/xeno-info	(Arbeitskopie)
@@ -1,31 +1,51 @@
-#!/bin/sh
+#! /bin/sh
 #
 # This file has been lifted 'as is' from linux/scripts/ver_linux.
-#
+# Adapted to be run also under the BusyBox. If you want to test it under the BusyBox use
+# busybox sh xeno-info 
 
 PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:$PATH
 echo 'If some fields are empty or look unusual you may have an old version.'
 echo 'Compare to the current minimal requirements in Documentation/Changes.'
 echo ' '
 
+withBusybox=0
+if test -L $SHELL ; then # is sh a logical link to busybox
+exeName=`ls -l $SHELL|cut -d\  -f2`
+if test `basename $exeName` = busybox;  then
+	withBusybox=1; else echo 2.3
+fi
+elif test -n $_ -a `basename $_` = busybox; then
+withBusybox=1;
+# else running a real /bin/sh (bash) shell
+fi
+
+if test $withBusybox -eq 1; then busybox | grep -i BusyBox v ; fi
+
 uname -a
 echo ' '
 
+if test -n `which gcc` ; then
 gcc --version 21| head -n 1 | grep -v gcc | awk \
 'NR==1{print Gnu C , $1}'
 
 gcc --version 21| grep gcc | awk \
 'NR==1{print Gnu C , $3}'
+fi
 
+if test -n `which gcc` ; then
 make --version 21 | awk -F, '{print $1}' | awk \
   '/GNU Make/{print Gnu make  ,$NF}'
+fi
 
 ld -v 21 | awk -F\) '{print $1}' | awk \
   '/BFD/{print binutils  ,$NF}'
 
+if test 0 -eq $withBusybox ; then 
 fdformat --version | awk -F\- '{print util-linux, $NF}'
 
 mount --version | awk -F\- '{print mount , $NF}'
+fi 
 
 depmod -V  21 | awk 'NR==1 {print module-init-tools ,$NF}'
 
@@ -50,21 +70,26 @@
 isdnctrl 21 | grep version | awk \
 'NR==1{print isdn4k-utils  , $NF}'
 
+if test -n `which ldd` ; then
 ls -l `ldd /bin/sh | awk '/libc/{print $3}'` | sed \
 -e 's/\.so$//' | awk -F'[.-]'   '{print Linux C Library \
 $(NF-2).$(NF-1).$NF}'
 
 ldd -v  /dev/null 21  ldd -v || ldd --version |head -n1 | awk \
 'NR==1{print Dynamic linker (ldd)  , $NF}'
+fi
 
 ls -l /usr/lib/lib{g,stdc}++.so  2/dev/null | awk -F. \
'{print

[Xenomai-core] Re: Xenomai v2.2-rc2. PowerPC 405GPr board does not start up

2006-05-22 Thread Niklaus Giger
Hi everybody

Philippe Gerum wrote:
 Here is the second release candidate for the v2.2 branch. Short log
 follows:
Sorry for reporting so late.

But as my tests did not yet include starting up my board I did not notice
that changes (probably between 2006-05-10 19:30 and 2006-05-11 20:31) made
my board unbootable. 

The board hangs after emitting (Engines Of Creation) loaded. output is:
ocp: exit
arch: exit
Linux version 2.6.14hcu3 ([EMAIL PROTECTED]) (gcc version 3.4.4) #17 Tue May 16
19:24:07 CEST 2006
HCU3 Netstal Maschinen AG with U-Boot 1.1.2.
Built 1 zonelists
Kernel command line: console=ttyS0,9600 root=/dev/nfs rw
nfsroot=172.25.1.58:/home/hcu/rootfs ip=172.25.1.5:172.15.1.58:::hcu4::off
panic=30
PID hash table entries: 256 (order: 8, 4096 bytes)
I-pipe 1.3-02: pipeline enabled.
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 29756k available (1856k kernel code, 604k data, 100k init, 0k
highmem)
Mount-cache hash table entries: 512
softlockup thread 0 started up.
NET: Registered protocol family 16

TIMER IRQ is 32
I-pipe: Domain Xenomai registered.
Xenomai: hal/powerpc started.
Xenomai: real-time nucleus v2.2-rc1 (Engines Of Creation) loaded.

I have no ideas why, as my PowerBook is running fine with an actual Xenomai
based kernel. But I now that the timer architecture for the PPC40x family
is quite different to the PPC en general.

Any ideas where to begin debugging? I am familiar whith the timer/interrupt
architecture of the PPC405 but a hint would be welcome. I will take my BDI
debugger from Abatron home to have a look where the processor hangs, but
will not have time till tomorrow or Wednesday to dig into this problem.

Best regards

Niklaus Giger


___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Re: Xenomai v2.2-rc2. PowerPC 405GPr board does not start up

2006-05-22 Thread Niklaus Giger
Am Montag, 22. Mai 2006 17:40 schrieb Philippe Gerum:
 Niklaus Giger wrote:
  Hi everybody
 
  Philippe Gerum wrote:
 Here is the second release candidate for the v2.2 branch. Short log
 follows:
...
 Could you try building all skins as modules with only the nucleus
 statically built into the kernel? I'd like to know whether the lockup
 occurs when one of the skin attempts to initialize, or if the problem is
 in the early Xenomai bootstrap. TIA,
Okay. With the following .config XENOMAI settings my target starts up without 
any problem till the login:

CONFIG_XENOMAI=y
CONFIG_XENO_OPT_NUCLEUS=y
CONFIG_XENO_OPT_PERVASIVE=y
CONFIG_XENO_OPT_SECURITY_ACCESS=y
CONFIG_XENO_OPT_REGISTRY=y
CONFIG_XENO_OPT_REGISTRY_NRSLOTS=512
CONFIG_XENO_OPT_SYS_HEAPSZ=128
# CONFIG_XENO_OPT_ISHIELD is not set
CONFIG_XENO_OPT_PIPELINE_HEAD=y
CONFIG_XENO_OPT_STATS=y
# CONFIG_XENO_OPT_DEBUG is not set
CONFIG_XENO_OPT_WATCHDOG=y
CONFIG_XENO_OPT_TIMING_PERIODIC=y
CONFIG_XENO_OPT_TIMING_PERIOD=100
CONFIG_XENO_OPT_TIMING_TIMERLAT=0
CONFIG_XENO_OPT_TIMING_SCHEDLAT=0
# CONFIG_XENO_OPT_SCALABLE_SCHED is not set
CONFIG_XENO_OPT_TIMER_LIST=y
# CONFIG_XENO_OPT_TIMER_HEAP is not set
# CONFIG_XENO_OPT_SHIRQ_LEVEL is not set
# CONFIG_XENO_OPT_SHIRQ_EDGE is not set
# CONFIG_XENO_HW_FPU is not set
CONFIG_XENO_SKIN_NATIVE=m
# CONFIG_XENO_OPT_NATIVE_PIPE is not set
CONFIG_XENO_OPT_NATIVE_REGISTRY=y
CONFIG_XENO_OPT_NATIVE_SEM=y
CONFIG_XENO_OPT_NATIVE_EVENT=y
CONFIG_XENO_OPT_NATIVE_MUTEX=y
CONFIG_XENO_OPT_NATIVE_COND=y
CONFIG_XENO_OPT_NATIVE_QUEUE=y
CONFIG_XENO_OPT_NATIVE_HEAP=y
CONFIG_XENO_OPT_NATIVE_ALARM=y
CONFIG_XENO_OPT_NATIVE_MPS=y
CONFIG_XENO_OPT_NATIVE_INTR=y
CONFIG_XENO_SKIN_POSIX=m
# CONFIG_XENO_SKIN_PSOS is not set
# CONFIG_XENO_SKIN_UITRON is not set
# CONFIG_XENO_SKIN_VRTX is not set
CONFIG_XENO_SKIN_VXWORKS=m
CONFIG_XENO_SKIN_RTAI=m
CONFIG_XENO_OPT_RTAI_SEM=y
CONFIG_XENO_OPT_RTAI_SHM=y
CONFIG_XENO_SKIN_RTDM=m
CONFIG_XENO_OPT_RTDM_FILDES=128
CONFIG_XENO_SKIN_UVM=m
# CONFIG_XENO_DRIVERS_16550A is not set
CONFIG_XENO_DRIVERS_TIMERBENCH=m

Diff to my old .config is:
4c4
 # Mon May 22 18:02:59 2006
---
 # Sun May 21 00:23:12 2006
74a75,76
 CONFIG_XENO_OPT_PIPE=y
 CONFIG_XENO_OPT_PIPE_NRDEV=32
113,114c115,117
 CONFIG_XENO_SKIN_NATIVE=m
 # CONFIG_XENO_OPT_NATIVE_PIPE is not set
---
 CONFIG_XENO_SKIN_NATIVE=y
 CONFIG_XENO_OPT_NATIVE_PIPE=y
 CONFIG_XENO_OPT_NATIVE_PIPE_BUFSZ=4096
125c128
 CONFIG_XENO_SKIN_POSIX=m
---
 CONFIG_XENO_SKIN_POSIX=y
129,133c132,137
 CONFIG_XENO_SKIN_VXWORKS=m
 CONFIG_XENO_SKIN_RTAI=m
 CONFIG_XENO_OPT_RTAI_SEM=y
 CONFIG_XENO_OPT_RTAI_SHM=y
 CONFIG_XENO_SKIN_RTDM=m
---
 CONFIG_XENO_SKIN_VXWORKS=y

 #
 # RTAI emulator unavailable, disable native API or build it as module
 #
 CONFIG_XENO_SKIN_RTDM=y
135c139
 CONFIG_XENO_SKIN_UVM=m
---
 CONFIG_XENO_SKIN_UVM=y
141c145
 CONFIG_XENO_DRIVERS_TIMERBENCH=m
---
 CONFIG_XENO_DRIVERS_TIMERBENCH=y

Thanks a lot for your help
-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Re: Xenomai v2.2-rc2. PowerPC 405GPr board does not start up

2006-05-22 Thread Niklaus Giger
Hi

Am Montag, 22. Mai 2006 18:47 schrieb Philippe Gerum:
 Niklaus Giger wrote:
  Am Montag, 22. Mai 2006 17:40 schrieb Philippe Gerum:
 Niklaus Giger wrote:
 Hi everybody
 
 Philippe Gerum wrote:
 Here is the second release candidate for the v2.2 branch. Short log
 follows:
 
  ...
 
 Could you try building all skins as modules with only the nucleus
 statically built into the kernel? I'd like to know whether the lockup
 occurs when one of the skin attempts to initialize, or if the problem is
 in the early Xenomai bootstrap. TIA,
 
  Okay. With the following .config XENOMAI settings my target starts up
  without any problem till the login:

 Does the board still boot with only the native skin enabled statically?
No. It does not.
 If it does not, wild guess: does the following patch prevent the lockup
 in the latter case?

 --- pod.c~2006-05-15 15:03:52.0 +0200
 +++ pod.c 2006-05-22 18:45:21.0 +0200
 @@ -509,12 +509,14 @@

   xnarch_notify_ready();

 +#if 0
   err = xnpod_reset_timer();

   if (err) {
   xnpod_shutdown(XNPOD_FATAL_EXIT);
   return err;
   }
 +#endif

   return 0;
   }
Excellent wild guess! With this patch I get my target up and running. First 
test is with only the native skin worked. Then I restore my original .config, 
touched it and rebuilt. Still boots without any problems.

Thanks a lot for your help.

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Xenomai v2.2-rc2

2006-05-21 Thread Niklaus Giger
Am Samstag, 20. Mai 2006 23:07 schrieb Philippe Gerum:
 Here is the second release candidate for the v2.2 branch. Short log
 follows:
Could you please apply the patch below to make xeno-test send e-mails to 
[EMAIL PROTECTED]

I am unsure whether setting sentby='[EMAIL PROTECTED]' is a good 
idea. Or is this a way to accept e-mails from unkown senders? In any way I 
think it would be nice if one could accept xeno-test messages from 
unsubscribed senders.

I really would like to collect some real data.

Thanks in advance.

Niklaus Giger

Index: scripts/xeno-test.in
===
--- scripts/xeno-test.in(Revision 1135)
+++ scripts/xeno-test.in(Arbeitskopie)
@@ -19,7 +19,7 @@
name can be full or relative pathname
   -v   verbose
   -M email   sends output to given addr
-  -m   sends output to [EMAIL PROTECTED]
+  -m   sends output to [EMAIL PROTECTED]
   -U url uploads output to given URL

   # following options are passed thru to latency
@@ -167,7 +167,7 @@
 logprefix=/tmp/# someplace usually there
 prepost=   # command to run pre, and post test (ex ntpq -p)

-email='[EMAIL PROTECTED]'  # until formalized
+email='[EMAIL PROTECTED]'
 sentby='[EMAIL PROTECTED]'
 url=
 sendit=# send it by m-mail, u-url

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Xenomai v2.2-rc2

2006-05-21 Thread Niklaus Giger
Am Samstag, 20. Mai 2006 23:07 schrieb Philippe Gerum:
 Here is the second release candidate for the v2.2 branch. Short log
The trunks builds fine on my four targets on 
http://ngiger.dyndns.org/buildbot/

I have however still the following errors running the posix simulators
(see http://ngiger.dyndns.org/buildbot/sim/builds/59/step-check_sim/0). All 
others posix and vxworks test pass.
The output is:

Some problems were reported in:
posix-tthread:tthread.c:141: Expected sequence: SEQ(slicer1,1); got 
SEQ(slicer1,4)
posix-tthread:tthread.c:142: Expected sequence: SEQ(slicer2,1); got 
SEQ(slicer2,4)
posix-tthread:tthread.c:143: Expected sequence: SEQ(slicer1,1); got 
SEQ(root,1)
posix-tthread:tthread.c:144: Expected sequence: SEQ(slicer2,1); reached end 
of recorded sequence.
posix-tthread:tthread.c:145: Expected sequence: SEQ(slicer1,1); reached end 
of recorded sequence.
posix-tthread:tthread.c:146: Expected sequence: SEQ(slicer2,1); reached end 
of recorded sequence.
posix-tthread:tthread.c:147: Expected sequence: SEQ(slicer1,1); reached end 
of recorded sequence.
posix-tthread:tthread.c:148: Expected sequence: SEQ(slicer2,1); reached end 
of recorded sequence.
posix-tthread:tthread.c:149: Expected sequence: SEQ(root,1); reached end of 
recorded sequence.
posix-tthread:tthread.c:153, test finished: 9 failures/ 46 tests

I have however no time to try to fix them, as I am investing more time into 
making xeno-test run automatically on my PPC 405GPr target board.

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Patch for better error messages in posix testsuite

2006-05-15 Thread Niklaus Giger
Hi

If one greps the output of the posix testsuite failures does not show
up cleanly as the assertions are terminated by a line feed. 

Please apply the following patch which fixes this problem
Index: sim/skins/posix/testsuite/xntest.c
===
--- sim/skins/posix/testsuite/xntest.c  (Revision 1103)
+++ sim/skins/posix/testsuite/xntest.c  (Arbeitskopie)
@@ -91,7 +91,7 @@
 ++tests;
 if(!status) {
 ++test_failures;
-xnarch_printf(%s:%d: TEST %s failed.\n, file, line, assertion);
+xnarch_printf(%s:%d: TEST failed: %s\n, file, line, assertion);
 } else
 xnarch_printf(%s:%d TEST passed.\n, file, line);
 xnlock_put_irqrestore(test_lock, s);

Thanks in advance
-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Kernel panic on rmmod xeno_vxworks

2006-05-11 Thread Niklaus Giger
Am Mittwoch, 10. Mai 2006 23:24 schrieb Gilles Chanteperdrix:
 Niklaus Giger wrote:
   Hi
  
   I compiled and started my test with a recent xenomai/trunk (revision
   1068). I booted into single user mode, did a modprobe xeno_vxworks (no
   problem) and then a rmmod xeno_vxworks and got as response on my
   PowerBook only Kernel panic: -not syncing: Aiee, killing interrupt
   handler.
  
  
   Also when I try to run ksrc/skins/vxworks/demos/satch (after a make std)
   I get the following info (using gdb):
   (gdb) run
   Starting
   program:
   /mnt/data.ng/hcu/kernel/xenomai-head/ksrc/skins/vxworks/demos/satch
   [Thread debugging using libthread_db enabled]
   [New Thread 805415264 (LWP 4168)]
   [New Thread 805434592 (LWP 4171)]
   [New Thread 805450976 (LWP 4172)]
  
   Program received signal SIGSEGV, Segmentation fault.
   [Switching to Thread 805434592 (LWP 4171)]
   0x0fe76094 in vfprintf () from /lib/tls/libc.so.6
   (gdb) info stack
   #0  0x0fe76094 in vfprintf () from /lib/tls/libc.so.6
   #1  0x0fe7e760 in printf () from /lib/tls/libc.so.6
   #2  0x10001a6c in consumer_task (a0=269287424, a1=268894208,
   a2=269477288, a3=0, a4=0, a5=0, a6=269482760, a7=805474048,
   a8=2144297840, a9=268064096) at satch.c:99
   #3  0x0ffa7714 in wind_task_trampoline (cookie=0x7fcf632c)
   at /mnt/data.ng/hcu/kernel/xenomai-head/src/skins/vxworks/taskLib.c:99
   #4  0x0ffd08e8 in start_thread () from /lib/tls/libpthread.so.0
   #5  0x0ffd08e8 in start_thread () from /lib/tls/libpthread.so.0
   Previous frame inner to this frame (corrupt stack?)

 I observed such an error when the stack size is to small, I guess
 vfprintf uses alloca.
This fixed my problem. Task crashes with 18 kB stack, but not with
20 kB. Therefore I propose 24 kB to have some margine for the future.

Please apply the following patch:
Index: ksrc/skins/vxworks/demos/satch.c
===
--- ksrc/skins/vxworks/demos/satch.c(Revision 1068)
+++ ksrc/skins/vxworks/demos/satch.c(Arbeitskopie)
@@ -21,10 +21,10 @@
 #include vxworks/vxworks.h

 #define CONSUMER_TASK_PRI115
-#define CONSUMER_STACK_SIZE  8192
+#define CONSUMER_STACK_SIZE  24*1024

 #define PRODUCER_TASK_PRI110
-#define PRODUCER_STACK_SIZE  8192
+#define PRODUCER_STACK_SIZE  24*1024

 #define CONSUMER_WAIT 150
 #define PRODUCER_TRIG 40

Thanks in advance.

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Errors running sim testsuite for vxWorks

2006-05-11 Thread Niklaus Giger
Hi

Running the sim testsuite vxworks (revision 1078) (using the attached script) 
I get the following a few failures and memory corruption:

trestart.c:46, taskSpawn(nop, 19, 0, 32768, nopTask, 0,0,0,0,0,0,0,0,0,0) != 
ERROR
*** glibc detected *** malloc(): memory corruption: 0x100bf000 ***

t010726-1.log:t010726-1.c:106, test finished: 4 failures/ 15 tests
t010726-2.log:t010726-2.c:224, test finished: 0 failures/ 82 tests
t010728.log:t010728.c:119, test finished: 0 failures/ 4 tests
t010820-1.log:t010820-1.c:90, test finished: 0 failures/ 23 tests
t010820-2.log:t010820-2.c:81, test finished: 0 failures/ 11 tests
t010823-1.log:t010823-1.c:114, test finished: 0 failures/ 16 tests
t010823-2.log:t010823-2.c:166, test finished: 1 failures/ 33 tests

Is this normal or a powerpc specific error of the Xenomai simulator?

How do I debug trestart as it is not a fully linked executable?

Is it normal that a make check only works, if one builds the simulator 
inside the source code?

Thanks for any suggestion.

Best regards

-- 
Niklaus Giger


test_sim
Description: application/shellscript
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] RFC: Integrate Xenomai's simulator's testsuite into the buildbot

2006-05-11 Thread Niklaus Giger
Hi

I would like to integrate the output of the Xenomai's simulator's testsuite 
into my buildbot system at htttp://ngiger.dyndns.org/

As I work with a PowerPC system I am still chasing some bugs (Thanks a lot to 
Gilles for his help).

I am interested to know whether an output like the attached 
(12-log-check-sim-log.bz2) produced with my ruby script (attached 
test_sim.rb) is a good idea. Look at the end to get a summary of the 
failed/passed tests. (I have no idea, why the output to standard error 
like segmentation fault does not show up instead of the starting POSIX 
services.). So please tell me if you would like to have some more 
information in the log.

I would appreciate to be able to integrate the same testsuites as part of the 
regression test of all target that use a posix or vxworks skin. I am however 
no specialist in the autotools. Would it be difficult to adapt the Makefile's 
to have the same targets sim, std and uvm like in the 
ksrc/skins/x/demos?

Are there any other ideas what to test with the simulator? (I do not want to 
to test xenoscope unless somebody can point me to free tool where it is easy 
to setup some interactive tests.)

To test the distcheck target is still on my todo list, but with a lower 
priority.

Thanks in advance for all comments.

Best regards
 
-- 
Niklaus Giger


test_sim.rb
Description: application/ruby


12-log-check_sim-log.bz2
Description: BZip2 compressed data
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Kernel panic on rmmod xeno_vxworks

2006-05-10 Thread Niklaus Giger
Hi

I compiled and started my test with a recent xenomai/trunk (revision 1068).
I booted into single user mode, did a modprobe xeno_vxworks (no problem) and 
then a rmmod xeno_vxworks and got as response on my PowerBook only
Kernel panic: -not syncing: Aiee, killing interrupt handler.


Also when I try to run ksrc/skins/vxworks/demos/satch (after a make std)
I get the following info (using gdb):
(gdb) run
Starting 
program: /mnt/data.ng/hcu/kernel/xenomai-head/ksrc/skins/vxworks/demos/satch
[Thread debugging using libthread_db enabled]
[New Thread 805415264 (LWP 4168)]
[New Thread 805434592 (LWP 4171)]
[New Thread 805450976 (LWP 4172)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 805434592 (LWP 4171)]
0x0fe76094 in vfprintf () from /lib/tls/libc.so.6
(gdb) info stack
#0  0x0fe76094 in vfprintf () from /lib/tls/libc.so.6
#1  0x0fe7e760 in printf () from /lib/tls/libc.so.6
#2  0x10001a6c in consumer_task (a0=269287424, a1=268894208, a2=269477288, 
a3=0, a4=0, a5=0, a6=269482760, a7=805474048,
a8=2144297840, a9=268064096) at satch.c:99
#3  0x0ffa7714 in wind_task_trampoline (cookie=0x7fcf632c) 
at /mnt/data.ng/hcu/kernel/xenomai-head/src/skins/vxworks/taskLib.c:99
#4  0x0ffd08e8 in start_thread () from /lib/tls/libpthread.so.0
#5  0x0ffd08e8 in start_thread () from /lib/tls/libpthread.so.0
Previous frame inner to this frame (corrupt stack?)

The XENOMAI-parts of my config are:
grep XENO /boot/config-2.6.14
CONFIG_XENOMAI=y
CONFIG_XENO_OPT_NUCLEUS=y
CONFIG_XENO_OPT_PERVASIVE=y
CONFIG_XENO_OPT_SECURITY_ACCESS=y
CONFIG_XENO_OPT_PIPE=y
CONFIG_XENO_OPT_PIPE_NRDEV=32
CONFIG_XENO_OPT_REGISTRY=y
CONFIG_XENO_OPT_REGISTRY_NRSLOTS=512
CONFIG_XENO_OPT_SYS_HEAPSZ=128
# CONFIG_XENO_OPT_ISHIELD is not set
CONFIG_XENO_OPT_PIPELINE_HEAD=y
CONFIG_XENO_OPT_STATS=y
# CONFIG_XENO_OPT_DEBUG is not set
CONFIG_XENO_OPT_WATCHDOG=y
CONFIG_XENO_OPT_TIMING_PERIODIC=y
CONFIG_XENO_OPT_TIMING_PERIOD=100
CONFIG_XENO_OPT_TIMING_TIMERLAT=0
CONFIG_XENO_OPT_TIMING_SCHEDLAT=0
# CONFIG_XENO_OPT_SCALABLE_SCHED is not set
CONFIG_XENO_OPT_TIMER_LIST=y
# CONFIG_XENO_OPT_TIMER_HEAP is not set
# CONFIG_XENO_OPT_SHIRQ_LEVEL is not set
# CONFIG_XENO_OPT_SHIRQ_EDGE is not set
CONFIG_XENO_HW_FPU=y
CONFIG_XENO_SKIN_NATIVE=y
CONFIG_XENO_OPT_NATIVE_PIPE=y
CONFIG_XENO_OPT_NATIVE_PIPE_BUFSZ=4096
CONFIG_XENO_OPT_NATIVE_REGISTRY=y
CONFIG_XENO_OPT_NATIVE_SEM=y
CONFIG_XENO_OPT_NATIVE_EVENT=y
CONFIG_XENO_OPT_NATIVE_MUTEX=y
CONFIG_XENO_OPT_NATIVE_COND=y
CONFIG_XENO_OPT_NATIVE_QUEUE=y
CONFIG_XENO_OPT_NATIVE_HEAP=y
CONFIG_XENO_OPT_NATIVE_ALARM=y
CONFIG_XENO_OPT_NATIVE_MPS=y
# CONFIG_XENO_OPT_NATIVE_INTR is not set
# CONFIG_XENO_SKIN_POSIX is not set
# CONFIG_XENO_SKIN_PSOS is not set
# CONFIG_XENO_SKIN_UITRON is not set
# CONFIG_XENO_SKIN_VRTX is not set
CONFIG_XENO_SKIN_VXWORKS=m
CONFIG_XENO_SKIN_RTDM=y
CONFIG_XENO_OPT_RTDM_FILDES=128
CONFIG_XENO_SKIN_UVM=m
# CONFIG_XENO_DRIVERS_16550A is not set
CONFIG_XENO_DRIVERS_TIMERBENCH=m

Any help would be appreciated.

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Running vxworks testsuite under vxWorks

2006-04-28 Thread Niklaus Giger
Hi

I am trying to run the vxworks testsuite on my PPC405 vxworks target.

Using the attached patched I manage to run a few of them. I have the
following questions:

Could a patch along these proposed changes be accepted? Where does it
need improvements/changes?

Some remarks about the patch:
- include/nucleus/queue.h needed for xntest. is #ifdef __XENO__ correct?
- made tests less verbose by removing xnarch_printf in xntest_assert.
  I would prefer a silent method where each test only emits a summary
 and a option to run generate verbose output in case of problems.
- static inline caused problem with Tornado 2.2.1 (gcc 2.96)

Some questions:
The tests do not clean up. Should I add a call to __xeno_user_exit in
xntest_finish and add cleanup code into each  __xeno_user_exit?

Best regards

Niklaus Giger

begin 666 vx_test.patch
[EMAIL PROTECTED](EN8VQU94O;G5C;5UR]Q=65U92YH#0H]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]#0HM+2T@:6YC;'5D92]N=6-L975S+W%U975E+F@)*%)E=FES
M:6]N(#$P,#4I#0HK*RL@:6YC;'5D92]N=6-L975S+W%U975E+F@)*$%R8F5I
M='-K;W!I92D-D!`(TR,2PW(LR,2PQ,!`0`T*([EMAIL PROTECTED]
M3E5#3$554U]1545515](B`C95F:6YE(%]814Y/7TY50TQ%55-?455%545?
M2`H@BLC:[EMAIL PROTECTED]/7U\*(-I;F-L=61E(#QN=6-L975S+W1Y5S
[EMAIL PROTECTED]BLC96YD:68**PH@(VEN8VQU94@/YU8VQE=7,O8V]R92YH/@H@B`O
M*B!87-I8R!E;5M96YT(AO;1EB`J+PI);F1E#H@VEM+W-K:6YS+W9X
M=V]R:W,O=5S='-U:71E+WAN=5S=YC#0H]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]#0HM+2T@VEM+W-K:6YS+W9X=V]R:W,O=5S='-U:71E+WAN=5S=YC
M2A2979IVEO;B`Q,#`U*0T**RLK('-I;2]S:VENR]V'=OFMS+W1EW1S
M=6ET92]X;G1EW0N8PDH07)B96ETVMO[EMAIL PROTECTED]@*S$X+#(X
M($!`#0H@(H*(`J+PH@BLC:[EMAIL PROTECTED]/7U\*(-I;F-L=61E(#QN
M=6-L975S+WAE;F]M86DN:#X**R-E;'-EBMT7!E95F(EN=!A=]M:6-?
M9FQA9W-?=#L**W1Y5D968@:6YT('AN=EM97)?=#L**W1Y5D968@:6YT
M('AN;]C:U]T.PHK='EP961E9B!I;G0@W!L7W0[BLC95F:6YE(%A.05)#
M2%],3T-+7U5.3$]#2T5$(#`**R-I;F-L=61E(#QS=')I;FN:#X**R-I;F-L
M=61E(#QL;V=,:6(N:#X**PHK(V1E9FEN92!I;FQI;F4@BLC:6YC;'5D92`\
M;G5C;5UR]Q=65U92YH/@HK(W5N95F(EN;EN90HKBLC95F:6YE('AN
M]D7V9A=%L*%R9RD@;]G37-G*%R9RP@(#$L(#(L(#,L(#0L(#4L(#8I
M(`HK(V1E9FEN92!X;FUA;QO8R!M86QL;V,**R-D969I;F4@YFF5E(9R
M964**R-D969I;F4@YL;V-K7V=E=%]IG%S879E*%R9S$L(%R9S(IBLC
M95F:6YE('AN;]C:U]P=71?:7)QF5S=]R92AAFQ+!AFR*0HK(V1E
M9FEN92!X;G1HF5A9%]N86UE('1AVM.86UEBLC96YD:68*(-I;F-L=61E
M()X;G1EW0N:(*(-I;F-L=61E(#QS=1AFN:#X*(`I`0`M-#4L-B`K
M-C8L.2!`0`T*('-T871I8R!I;[EMAIL PROTECTED]5S=',[B`*(`HK(VEF;F1E9B!?7UA%
M3D]?7PHK(V1E9FEN92!I;FQI;F4**R-E;[EMAIL PROTECTED]@B!S=%T:6,@:6YL:6YE
M('AN:]L9[EMAIL PROTECTED]'1A:6QQ(AX;[EMAIL PROTECTED];]T*2![B`@
M(`@YH;VQD97)?=`J:]L95R(#T@7-L;W0M/FAE860N;%S=#L*0$`@
M+38P+#@[EMAIL PROTECTED]@0$`-B`@(`@F5T=7)N(@H(7-T[EMAIL 
PROTECTED]'P@(7-TC(I
M(#\@W1R,2$]W1R,B`Z('-TF-MAS='(Q+!S='(R*2D[B!]B`*+7-T
M871I8R!V;VED(EN=5RG5P=%]T97-T(AV;VED(ID=6UM2D**W-T871I
M8R!I;FQI;[EMAIL PROTECTED]!I;G1EG)U'1?=5S=`H=F]I9`J9'5M;7DIB![
MB`@(!X;G!O9%]F871A;@B=5S=!I;G1EG)U'1E9!B2!W871C:1O
M9RY;B([EMAIL PROTECTED]`M-S(L.`K.38L,[EMAIL PROTECTED]B`@(`@W!L7W0@SL*
M(`H@(`@('AN;]C:U]G971?:7)Q[EMAIL PROTECTED]5S=%]L;V-K+!S*3L**R-I
M9F1E9B!?7UA%3D]?7PH@(`@('AN=EM97)?:6YI=@F=V%T8VAD;VL(EN
M=5RG5P=%]T97-T+`P*3L*(`@(!X;G1I;65R7W-T87)T*9W871C:1O
M9RP@YP;V1?;G,R=EC:W,H=5S=%]T:6UE;W5T(H@,3`P,#`P,%5,3DL
M(%A.7TE.1DE.251%*3L**R-E;[EMAIL PROTECTED]@B`@(`@:6YI='$H)FUAFMS7W$I
M.PH@(`@('1EW1S/3`[D!`(TQ.3`L-2`K,[EMAIL PROTECTED]B`*(`@(!X
M;F%R8VA?')I;G1F*(ESHE9[EMAIL PROTECTED]5S=!F:6YIVAE9#H@)[EMAIL 
PROTECTED];'5R
M97,O(5D('1EW1S7XB+`H@(`@(`@(`@(`@(`@([EMAIL PROTECTED]@;EN
[EMAIL PROTECTED]5S=%]F86EL=7)E[EMAIL 
PROTECTED]5S=',I.PHM(`@('AN]D7V9A=%L*).
M;W)[EMAIL PROTECTED]Y;B(I.PHK(`@('AN87)C:%]PFEN=8H(DYOFUA;!E
MET+EQN(BD[B!]DEN95X.B!S:6TOVMI;G,O=GAW;W)KR]T97-TW5I
M=4O=GAW;W)K[EMAIL PROTECTED]CT]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T-BTM
M+2!S:6TOVMI;G,O=GAW;W)KR]T97-TW5I=4O=GAW;W)KU]T97-T+F@)
M*%)E=FES:6]N(#$P,#4I#0HK*RL@VEM+W-K:6YS+W9X=V]R:W,O=5S='-U
M:71E+W9X=V]R:W-?=5S=YH2A!F)E:71S:V]P:64I#0I`0`M,C$L-R`K
M,C$L,[EMAIL PROTECTED]B`C:69N95F('=X=V]R:W-?=5S=%]HB`C95F:6YE('=X
M=V]R:W-?=5S=%]HB`**R-I9F1E9B!?7UA%3D]?7PH@(VEN8VQU94@/'9X
M=V]R:W,O=GAW;W)KRYH/@HK(V5LV4**R-I;F-L=61E(#QV'=O[EMAIL PROTECTED]
MBLC96YD:68*(-I;F-L=61E(#QX;G1EW0N:#X*(`H@(V1E9FEN92!415-4
M7T%34T525%]/2RAE'!R*2`@(`@(`@(`@(`@(`@(`@(`@(`@(`@
M(`@(`@([EMAIL PROTECTED]('-I;2]S:VENR]V'=OFMS+W1EW1S=6ET92]-
M86ME9FEL92YW:6X-CT]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T-BTM+2!S:6TO
MVMI;G,O=GAW;W)KR]T97-TW5I=4O36%K969I;4N=VEN2A2979IVEO
M;B`P*0T**RLK('-I;2]S:VENR]V'=OFMS+W1EW1S=6ET92]-86ME9FEL
M92YW:6X)*%)E=FES:6]N(#`I#0I`0`M,PP(LQ+#,Q($!`#0HK(R!.:6ML
M875S($=I9V5R+`R.XP-[EMAIL PROTECTED],@36%K969I;4N=VEN('1O(=E;F5R
M871E('1H92!V'=OFMS('1E[EMAIL PROTECTED],@=6YD97(@=VEN9]WR!A(=I
M=F5N('1AF=E=`T**R,-BLC(%EO=2!M=7-T(%D87!T(ET('1O('EO=7(@
M=%R9V5T(%N9!C86QL(9IG-T('-O;65T:EN9R!Y;W5R('1OE9AG,N
M8F%T(QI:V4-BLC($,Z7%!R;V

[Xenomai-core] [RFC] collecting xenomai statistics

2006-04-17 Thread Niklaus Giger
Hi

Following a suggestion from Philippe Gerum I propose to collect and prepare 
like this:

a) Make it easy to collect information

add -s/-c option to xeno-test, help text would look like 
-s send output of xeno-test to [EMAIL PROTECTED]
-c name  if -s, send also kernel config file to [EMAIL PROTECTED]
(May be patch xeno-config to emit also the revision of the svn checkout?)

b) Setup an e-mail account [EMAIL PROTECTED]

c) Add a archiver which generates daily a gzipped tar file of all messages 
ever sent to [EMAIL PROTECTED] (e.g. of its mbox). Make it available 
somewhere on the internet.

d) Write a converter the raw messages into more suitable representation, eg. a 
MySQL-DB, a spreadsheet format. Extract the raw message and kernel config and 
store the publicly accessible on the internet. The DB/spreadsheet will 
contain pointers (URLs) to the raw message/kernel config.

e) Write viewers which present interesting statistics. E.g. X/HTML pages to 
present a ordered (by architecture, board, version, etc) view of the 
available  results.

I would like to advance like this:

I am not interested in step a), as it is easy for me just to write a trivial 
script to sent the xeno-test output to any address. Also adding the revision 
of svn checkout is not very difficult.

For point b+c) I am lacking the necessary rights, but it easy for me to setup 
a similar account for my tests here. But I would appreciate, if somebody of 
the core team would help me to get this work done.

For point d+e) I will (after a week of vacation with my son) invest some work. 
But I would be very interested in knowing exactly which kind of information 
the core developers are interested in. How should it be presented? In tabular 
form? Graphs, which ones? And kind of feedback will be evaluated and 
integrated.

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] BuildBot progress for sim, tqm860 with RTnet

2006-04-12 Thread Niklaus Giger
Hi

I was busy improving the buildbot setup and achieved the following:
- added build slave for simulator
- added a buildbot for a TQM860L with Denx PPC 2.4 kernel. Cannot yet build 
the RTnet code.
- patched buildbot to show names for shell build steps instead of the commands
- Hacked buildbot to improve the displayed names of the build step
  (e.g. configure_xenomai instead of configure 2. 

I will look at Philippe's idea about collecting xenomai statistics later, 
because it demands more time and effort to implement.

The following details are probably only of interest for people interested in 
TQM860 and/or RTnet.

My setup for the TQM860 was the following:
- Got Dan Kegel crosstool 0.42
- Compiled/installed the demo-ppc860 (gcc-3.4.1-glibc-2.3.3)
- Used linuxppc_2_4_devel-2006-04-06-1735.tar.bz whith a TQM860L_defconfig
  plus XENOMAI extensions
- Got RTnet trunk via SVN

Could the interested parties please comment, whether this is a good 
combination or whether they prefer something different? If you follow the 
logs you are able to see each step and configuration option (except building 
the crosstool).

configure rtnet fails with the following message:
checking for 
RT-extension... /home/buildslave/bin/linuxppc_2_4_devel-2006-04-06-1735 
(Xenomai 2.0.x)
checking for Xenomai version... configure: error: *** Unsupported Xenomai 
version 2.1.50 in /home/buildslave/bin/linuxppc_2_4_devel-2006-04-06-1735
Is the error correct? Or should I build only against Xenomai 2.0?

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Proposal to use buildbot for Xenomai

2006-04-08 Thread Niklaus Giger
Am Samstag, 8. April 2006 10:44 schrieb Jan Kiszka:
 Niklaus Giger wrote:
  Hi everybody
..
 This is a really great idea! Of course, I already have another test
 candidate in mind: RTnet 8). Specifically the PPC environment would be
 interesting, as our buildbot (sorry, Wolfgang G. ;) ) is typically
 very busy so that build regressions are sometimes only detected with
 delay on that platform. Is it also possible to explicitly trigger an
 update and rebuild?
Yes of course. Just select a buildslave (e.g. ppc or hcu3 - 
http://ngiger.dyndns.org/buildbot/hcu3) and you may manually trigger it. I 
intentionally left this facility open for everybody to test it. But it would 
of course be possible to restrict it only to a few selected developers. 

If you want, I can help you to setup the master.cfg for a rtnet buildbot.

 But also for Xenomai I would see this as a very useful tool, e.g. for
 2.4 build tests (I must confess I only test sporadically against this
 kernel).
I will add one. Could you please e-mail me (privately if you want) a working 
config (ppc, no cross compiling if possible). Or do you want to add a build 
slave under your control?
..
 Is there no reset button you could control via a master station, e.g. by
 attaching some cheap electronic to a parallel or serial port?
There is a reset button, but then you have it running and consuming 
electricity all the times.
 I just remember that DENX once had or still have a remote PPC test-lab
 running. I CC'ed Wolfgang, maybe he could comment on this if and how it
 could be used.
I would be willing to setup a buildbot for the u-boot, too, as my board boots 
with a very outdated version of u-boot.

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] VxWorks skin improvement

2006-03-17 Thread Niklaus Giger
Am Donnerstag, 16. März 2006 14:53 schrieb Philippe Gerum:
 I'm currently working on extending the VxWorks skin so that it is going to
 be callable from user-space directly, without needing the UVM environment.
 This will also make its functional extension easier in the future,
 especially with respect to bsp-related services.

 While I'm at it, I'd also like to polish a few corner cases, so that we
 have the closest possible emulation of the original RTOS services.
 Unfortunately, the VxWorks documentation is rather terse on some
 behavioural aspects, and I have no VxWorks target at hand to test and check
 them. Therefore, I definitely need help from people reading this list who
 also happen to be VxWorks users, for providing the following missing bits
 of information:

 - How does taskName() behave when passed a null task id? Is it equivalent
 to specifying taskIdSelf(), or does it lead to a NULL error return?
It behaves like taskName(taskIdSelf()). see vx_skin.c.
Output was
- vx_skin_test_1

myTaskName is 0xf40500 tShell
value = 31 = 0x1f

 - How does msgQSend() behave when passed an invalid message priority, i.e.
 neither MSG_PRI_NORMAL nor MSG_PRI_URGENT?
It doesn't care (see pMsgQue.cpp).
Output was
- test_init
task1 started
endTime   1834779057842028544
startTime 1832156649595338752
diff      2622408246689792 2622408246689 microSecs per run 26224082466
task1 nrQuestions 100 nrAnswers 100 nrSwitches 100
value = 0 = 0x0
 - How does taskInit() behave when passed an invalid set of task options?
 Are the invalid flags ignored, or does the routine return an error status?
All invalid bits arg ignored, no error returned. see vx_skin.c.
Output was:
- vx_skin_test_2

taskInit status is 0

taskOptionGet returns 0 is -1
value = 31 = 0x1f                 
 If you happen to have a VxWorks target at hand regardless of the
 architecture, and are willing to help improving the behavioural correctness
 of the VxWorks skin, then your input will be most welcome.
Hope this help. Please feel free to ask for more tests.
What about a vxWorks test suite? I would like to contribute to it. (At least 
as soon as I have a working Xenomai environment again.) And I would be much 
more confident to recommend Xenomai if it had test suites for its various 
skins. I hope to be able to make some contributions once I get approval to 
put a few of our internal test routines available under a free license.

Best regards

Niklaus Giger
/*
 * Copyright (C) 2005 Niklaus Giger [EMAIL PROTECTED].
 *
 * vxWorks is a registered trademark of Wind River Systems, Inc.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 *
 * Hopefully this program lets you compare the relative performance of
 * taskSwitches and message passing between an original vxWorks image and
 * a xenomai based port.
 */

#ifdef XENOMAI
#include xeno_config.h
#include vxworks/vxworks.h
#include xenomai/timer.h
MODULE_LICENSE(GPL);
#else
#include vxWorks.h
#include stdio.h
#include msgQLib.h
#include taskLib.h
#include sysLib.h
#include arch/ppc/vxPpcLib.h
#define xnprintf printf
#define taskExit exit
#define RTIME UINT64
RTIME rt_timer_tsc();

RTIME rt_timer_tsc()
{
   UINT32 low, high;
   UINT64 res;
   vxTimeBaseGet (low, high);
   res = (UINT64) low + ((UINT64) high)32;
   return res;
}
#endif


#define TASK_PRI115
#define STACK_SIZE  8192

MSG_Q_ID question_qid, answer_qid;

int producer_tid,
   consumer_tid,
   test_tid;
static int nrQuestions;
static int nrAnswers;
static int nrSwitches;
void reportState(const char *where)
{
  xnprintf(%s nrQuestions %d nrAnswers %d nrSwitches %d\n,
   where, nrQuestions, nrAnswers, nrSwitches);
}

#define NR_RUNS 100
void task1 (int a0, int a1, int a2, int a3, int a4,
int a5, int a6, int a7, int a8, int a9)
{
int msg;
int sz;
int j;
RTIME diff, startTime, endTime;
xnprintf(task1 started\n);
startTime = rt_timer_tsc();
for (j=0; jNR_RUNS; j++)
{
	// taskDelay(sysClkRateGet()/2);
	// startTime = rt_timer_tsc();
  msg = nrQuestions;
  msgQSend(question_qid,
   (char *)msg,sizeof(msg),WAIT_FOREVER,MSG_PRI_NORMAL);
	  ++nrQuestions;
  if ( (sz = msgQReceive(answer_qid,
(char *)msg,sizeof(msg),WAIT_FOREVER)) == ERROR)
  {
reportState(__func__

[Xenomai-core] Problem booting xenomai r662 on PowerPc

2006-03-06 Thread Niklaus Giger
Hi

After a couple of month I try to recompile xenomai and now neither my 
Powerbook nor my PPC405 build start up. I accepted all default values which 
showed up done in a make oldconfig (e.g.
All I get is:
## Transferring control to Linux (at address ) ...
id mach(): done
MMU:enter
MMU:hw init
MMU:mapin
MMU:setio
MMU:exit
setup_arch: enter
setup_arch: bootmem
ocp: exit
The xeno-part of my config is:
CONFIG_XENOMAI=y
CONFIG_XENO_OPT_NUCLEUS=y
CONFIG_XENO_OPT_PERVASIVE=y
CONFIG_XENO_OPT_PIPE=y
CONFIG_XENO_OPT_PIPE_NRDEV=32
CONFIG_XENO_OPT_REGISTRY=y
CONFIG_XENO_OPT_REGISTRY_NRSLOTS=512
CONFIG_XENO_OPT_SYS_HEAPSZ=128
# CONFIG_XENO_OPT_ISHIELD is not set
CONFIG_XENO_OPT_STATS=y
# CONFIG_XENO_OPT_DEBUG is not set
CONFIG_XENO_OPT_WATCHDOG=y
CONFIG_XENO_OPT_TIMING_PERIODIC=y
CONFIG_XENO_OPT_TIMING_PERIOD=0
CONFIG_XENO_OPT_TIMING_TIMERLAT=0
CONFIG_XENO_OPT_TIMING_SCHEDLAT=0
# CONFIG_XENO_OPT_SCALABLE_SCHED is not set
CONFIG_XENO_OPT_TIMER_LIST=y
# CONFIG_XENO_OPT_TIMER_HEAP is not set
# CONFIG_XENO_OPT_SHIRQ_LEVEL is not set
# CONFIG_XENO_OPT_SHIRQ_EDGE is not set
# CONFIG_XENO_HW_FPU is not set
CONFIG_XENO_SKIN_NATIVE=y
CONFIG_XENO_OPT_NATIVE_PIPE=y
CONFIG_XENO_OPT_NATIVE_PIPE_BUFSZ=4096
CONFIG_XENO_OPT_NATIVE_SEM=y
CONFIG_XENO_OPT_NATIVE_EVENT=y
CONFIG_XENO_OPT_NATIVE_MUTEX=y
CONFIG_XENO_OPT_NATIVE_COND=y
CONFIG_XENO_OPT_NATIVE_QUEUE=y
CONFIG_XENO_OPT_NATIVE_HEAP=y
CONFIG_XENO_OPT_NATIVE_ALARM=y
CONFIG_XENO_OPT_NATIVE_MPS=y
CONFIG_XENO_OPT_NATIVE_INTR=y
# CONFIG_XENO_SKIN_POSIX is not set
# CONFIG_XENO_SKIN_PSOS is not set
# CONFIG_XENO_SKIN_UITRON is not set
# CONFIG_XENO_SKIN_VRTX is not set
# CONFIG_XENO_SKIN_VXWORKS is not set
# CONFIG_XENO_SKIN_RTAI is not set
CONFIG_XENO_SKIN_RTDM=y
CONFIG_XENO_SKIN_UVM=y
# CONFIG_XENO_DRIVERS_16550A is not set
# CONFIG_XENO_DRIVERS_TIMERBENCH is not set

DOes anybody have a clue?

Best regards
-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


Re: [Xenomai-core] Problems generating vxworks/koan in two step: cc and link

2006-01-20 Thread Niklaus Giger
Am Donnerstag, 19. Januar 2006 23:15 schrieb Gilles Chanteperdrix:
 Niklaus Giger wrote:
   ld -o koan  -L/usr/xenomai/lib -luvm -lnucleus -lpthread -lvxworks
   -lnative -e __xeno_skin_init 
   /home/hcu/project/bb/3_1_x/work/xeno/koan.o Now I get the following
   error output
   ld: warning: cannot find entry symbol __xeno_skin_init; defaulting to
   12a0
   /home/hcu/project/bb/3_1_x/work/xeno/koan.o: In function
   `TaskTest':koan.c: (.text+0xbc): undefined reference to `semTake'
   /home/hcu/project/bb/3_1_x/work/xeno/koan.o: In function
   `CreateTask':koan.c: (.text+0x124): undefined reference to `taskSpawn'
   /home/hcu/project/bb/3_1_x/work/xeno/koan.o: In function
   `usrClock':koan.c: (.text+0x1c8): undefined reference to `semGive'
  
   :koan.c:(.text+0x1f0): undefined reference to `tickAnnounce'
  
   /home/hcu/project/bb/3_1_x/work/xeno/koan.o: In function
   `koan_sysClkInit':koan.c:(.text+0x224): undefined reference to
   `semBCreate'
  
   :koan.c:(.text+0x23c): undefined reference to `sysClkConnect'
   :koan.c:(.text+0x240): undefined reference to `sysClkEnable'
  
   /home/hcu/project/bb/3_1_x/work/xeno/koan.o: In function
   `__xeno_user_exit':koan.c:(.text+0x2c0): undefined reference to
   `taskDelete'
  
   What is wrong with my split?

 What happens if you try :

 cc -u __xeno_skin_init -o koan -L/usr/xenomai/lib -luvm -lnucleus -lpthread
 -lvxworks -lnative /home/hcu/project/bb/3_1_x/work/xeno/koan.o

 -u seems to be a link-time option.
Thanks for the tip. This fixes my problem.

Best regards

-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] libvxworks not built

2006-01-17 Thread Niklaus Giger
Hi

I am at revision 464 of the xenomai trunk and wanted to build UVM for vxworks.
The following libraries built fine:
libuvm.a
libpsos.a
libuitron.a
libvrtx.a
libnucleus.a
but the library I am most intrested in is missing? 
Does anybody has any clue?

The XENO-parts of my .config are:
CONFIG_XENOMAI=y
CONFIG_XENO_OPT_NUCLEUS=y
CONFIG_XENO_OPT_PERVASIVE=y
CONFIG_XENO_OPT_PIPE=y
CONFIG_XENO_OPT_PIPE_NRDEV=32
CONFIG_XENO_OPT_SYS_HEAPSZ=128
# CONFIG_XENO_OPT_ISHIELD is not set
CONFIG_XENO_OPT_STATS=y
# CONFIG_XENO_OPT_DEBUG is not set
CONFIG_XENO_OPT_WATCHDOG=y
# CONFIG_XENO_OPT_SCALABLE_SCHED is not set
# CONFIG_XENO_HW_FPU is not set
CONFIG_XENO_HW_PERIODIC_TIMER=y
CONFIG_XENO_HW_TIMER_LATENCY=0
CONFIG_XENO_HW_SCHED_LATENCY=0
CONFIG_XENO_SKIN_NATIVE=y
CONFIG_XENO_OPT_NATIVE_REGISTRY=y
CONFIG_XENO_OPT_NATIVE_REGISTRY_NRSLOTS=512
CONFIG_XENO_OPT_NATIVE_PIPE=y
CONFIG_XENO_OPT_NATIVE_PIPE_BUFSZ=4096
CONFIG_XENO_OPT_NATIVE_SEM=y
CONFIG_XENO_OPT_NATIVE_EVENT=y
CONFIG_XENO_OPT_NATIVE_MUTEX=y
CONFIG_XENO_OPT_NATIVE_COND=y
CONFIG_XENO_OPT_NATIVE_QUEUE=y
CONFIG_XENO_OPT_NATIVE_HEAP=y
CONFIG_XENO_OPT_NATIVE_ALARM=y
CONFIG_XENO_OPT_NATIVE_MPS=y
CONFIG_XENO_OPT_NATIVE_INTR=y
# CONFIG_XENO_SKIN_POSIX is not set
# CONFIG_XENO_SKIN_PSOS is not set
# CONFIG_XENO_SKIN_UITRON is not set
# CONFIG_XENO_SKIN_VRTX is not set
# CONFIG_XENO_SKIN_VXWORKS is not set
# CONFIG_XENO_SKIN_RTAI is not set
CONFIG_XENO_SKIN_RTDM=y
CONFIG_XENO_SKIN_UVM=y
# CONFIG_XENO_DRIVERS_16550A is not set
# CONFIG_XENO_DRIVERS_TIMERBENCH is not set
   

The I configured xenomai like this
 /mnt/data.ng/hcu/kernel/xenomai/configure --prefix=/usr --enable-uvm 
--build=powerpc --host=powerpc-405-linux-gnu CFLAGS=-g 
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/mnt/data.ng/hcu/tools/gcc-3.4.4-glibc-2.3.5/powerpc-405-linux-gnu/bin
   
and let it build with
DESTDIR=/mnt/data.ng/hcu/rootfs -k install 
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/mnt/data.ng/hcu/tools/gcc-3.4.4-glibc-2.3.5/powerpc-405-linux-gnu/bin
 
install 

Best regards

-- 
Niklaus Giger



Re: [Xenomai-core] Two patches for the documentation

2006-01-09 Thread Niklaus Giger
Am Sonntag, 8. Januar 2006 11.53 schrieb Philippe Gerum:
 Niklaus Giger wrote:
  Hi
...
  Index: sim/README
  ===
  --- sim/README  (Revision 392)
  +++ sim/README  (Arbeitskopie)
  @@ -28,7 +28,11 @@
   Building the simulator
   ==
 
  -You will need the libelf, libpng, tcl8.x/tk8.x and tix41 _development
  +The simulator does not build with GCC 4.0 or later.
  +
  +Currently it does not work on PowerPC systems.
  +

 Why?

xenoscope is not even able to open a window as apparently it goes somewhere 
into a recursion. I do not know however how to debug it.

gdb /usr/xenomai/bin/xenoscope
GNU gdb 6.3-debian
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type show copying to see the conditions.
There is absolutely no warranty for GDB.  Type show warranty for details.
This GDB was configured as powerpc-linux...Using host libthread_db library 
/lib/tls/libthread_db.so.1.

(gdb) run
Starting program: /usr/xenomai/bin/xenoscope
[Thread debugging using libthread_db enabled]
[New Thread 805421056 (LWP 25333)]
[New Thread 813860064 (LWP 25336)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 805421056 (LWP 25333)]
0x0f80c2e8 in strchr () from /lib/tls/libc.so.6
(gdb) info stack
#0  0x0f80c2e8 in strchr () from /lib/tls/libc.so.6
#1  0x0fef3958 in TkpGetFontFamilies () from /usr/lib/libtk8.4.so.0
#2  0x0fef3958 in TkpGetFontFamilies () from /usr/lib/libtk8.4.so.0
#3  0x0fef3958 in TkpGetFontFamilies () from /usr/lib/libtk8.4.so.0
#4  0x0fef3958 in TkpGetFontFamilies () from /usr/lib/libtk8.4.so.0
..
#63 0x0fef3958 in TkpGetFontFamilies () from /usr/lib/libtk8.4.so.0
Previous frame inner to this frame (corrupt stack?)

Best regards
-- 
Niklaus Giger



[Xenomai-core] Two patches for the documentation

2006-01-07 Thread Niklaus Giger
Hi

xeno.sim.patch contains some clarification on how to build the xenoscope. (GCC 
3.4 worked for me on a x86 system, but with a lot of warnings, that fwritable 
is deprecated)

xeno.patch is a shorter way how to cross-compile using the CROSS_COMPILE 
variable. It worked for me without any problems for my board.
Also contains a hint to use O=../a-build-dir to compile the linux kernel.

Best regards

-- 
Niklaus Giger
Index: README.INSTALL
===
--- README.INSTALL	(Revision 392)
+++ README.INSTALL	(Arbeitskopie)
@@ -150,20 +150,22 @@
 needed, but if you do not use it, configure emit a warning, which may be
 confusing.
 
+The easiest way to build a GNU cross-compiler might involve using Dan Kegel 
+crosstools found at http://kegel.com/crosstool.
+
 Since cross-compiling requires specific tools, such tools are generally prefixed
 with the host architecture name; for example, a compiler for the power PC
-architecture may be named powerpc-linux-gcc.
+architecture may be named powerpc-405-linux-gnu-gcc.
 
-When this prefix contains the name of the architecture, you may pass this prefix
-to the --host option of configure. For example, if you type :
-configure --host=powerpc-linux
-
-configure will automatically use powerpc-linux- as a prefix too all compilation
+configure will automatically use powerpc-405-linux-gnu- as a prefix too all compilation
 tools names and deduce the architecture name. If configure is unable to deduce
 the architecture name from this prefix, you will have to manually pass the name
 of all compilation tools on configure command line. As in:
 
-configure --build=i686-pc-linux-gnu --host=powerpc-unknown-linux-gnu CC=ppc_82xx-gcc CXX=ppc_82xx-gcc AR=ppc_82xx-ar LD=ppc_82xx-ld
+It might be a good idea to put all the output into a differen build directory
+as to build from from linux source several targets. For each target add 
+O=../build-target to each make invocation.
+configure CROSS_COMPILE=powerpc-405-linux-gnu-
 
 For more details:
 http://sourceware.org/autobook/autobook/autobook_264.html#SEC264
@@ -204,16 +206,18 @@
 2.2 Building for the PowerPC architecture
 
 A typical cross-compilation setup, in order to build Xenomai for a
-82xx-based system:
+PowerPC-405-based system:
 
 $ $xenomai_root/scripts/prepare-kernel.sh --arch=powerpc \
   --adeos=$xenomai_root/ksrc/arch/powerpc/patches/adeos-ipipe-2.6.14-ppc-X.Y-ZZ.patch \
   --linux=$linux_tree
 $ cd $linux_tree
-$ make xconfig/gconfig/menuconfig # select the kernel and Xenomai options
-$ make bzImage modules # then install as needed
+$ make CROSS_COMPILE=powerpc-405-linux-gnu- O=../build-powerpc-405-2.6.14 xconfig/gconfig/menuconfig 
+# select the kernel and Xenomai options
+$ make CROSS_COMPILE=powerpc-405-linux-gnu- O=../build-powerpc-405-2.6.14 bzImage modules 
+# then install as needed
 $ mkdir $build_root  cd $build_root
-$ $xenomai_root/configure --build=i686-pc-linux-gnu --host=powerpc-unknown-linux-gnu CC=ppc_82xx-gcc CXX=ppc_82xx-gcc AR=ppc_82xx-ar LD=ppc_82xx-ld
+$ $xenomai_root/configure CROSS_COMPILE=powerpc-405-linux-gnu-
 $ make install
 
 2.3 Building for the IPF
Index: sim/README
===
--- sim/README	(Revision 392)
+++ sim/README	(Arbeitskopie)
@@ -28,7 +28,11 @@
 Building the simulator
 ==
 
-You will need the libelf, libpng, tcl8.x/tk8.x and tix41 _development
+The simulator does not build with GCC 4.0 or later.
+
+Currently it does not work on PowerPC systems.
+
+You will need the libelf, libpng, tcl8.x/tk8.x and tix81 _development
 packages_ in order to build the simulator and its companion tools.
 For instance, on Debian systems, you will need to install
 libelfg0-dev, libpng2-dev, tcl8.3-dev, tk8.3-dev and tix41-dev (any
___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Problems cross-compiling for PPC405

2006-01-07 Thread Niklaus Giger
Hi

I just upgraded to revision 392 of xenomai and got the following error trying
to compile the linux 2.6.14 kernel
  CC  kernel/xenomai/nucleus/heap.o
/mnt/data.ng/hcu/kernel/linux-2.6.14/kernel/xenomai/nucleus/heap.c:1017:1: 
pasting , and args does not give a valid preprocessing token
/mnt/data.ng/hcu/kernel/linux-2.6.14/kernel/xenomai/nucleus/heap.c: In 
function `xnheap_mount':
/mnt/data.ng/hcu/kernel/linux-2.6.14/kernel/xenomai/nucleus/heap.c:1015: 
error: `args' undeclared (first use in this function)
/mnt/data.ng/hcu/kernel/linux-2.6.14/kernel/xenomai/nucleus/heap.c:1015: 
error: (Each undeclared identifier is reported only once
/mnt/data.ng/hcu/kernel/linux-2.6.14/kernel/xenomai/nucleus/heap.c:1015: 
error: for each function it appears in.)
/mnt/data.ng/hcu/kernel/linux-2.6.14/kernel/xenomai/nucleus/heap.c:1015: 
warning: too many arguments for format
make[4]: *** [kernel/xenomai/nucleus/heap.o] Fehler 1
make[3]: *** [kernel/xenomai/nucleus] Fehler 2
make[2]: *** [kernel/xenomai] Fehler 2
make[1]: *** [kernel] Fehler 2


I am using GCC 3.4.4.

Best regards 
-- 
Niklaus Giger

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core


[Xenomai-core] Two patches for the documentation

2006-01-07 Thread Niklaus Giger
Hi

xeno.sim.patch contains some clarification on how to build the xenoscope. (GCC 
3.4 worked for me on a x86 system, but with a lot of warnings, that fwritable 
is deprecated)

xeno.patch is a shorter way how to cross-compile using the CROSS_COMPILE 
variable. It worked for me without any problems for my board.
Also contains a hint to use O=../a-build-dir to compile the linux kernel.

Best regards

-- 
Niklaus Giger
Index: README.INSTALL
===
--- README.INSTALL	(Revision 392)
+++ README.INSTALL	(Arbeitskopie)
@@ -150,20 +150,22 @@
 needed, but if you do not use it, configure emit a warning, which may be
 confusing.
 
+The easiest way to build a GNU cross-compiler might involve using Dan Kegel 
+crosstools found at http://kegel.com/crosstool.
+
 Since cross-compiling requires specific tools, such tools are generally prefixed
 with the host architecture name; for example, a compiler for the power PC
-architecture may be named powerpc-linux-gcc.
+architecture may be named powerpc-405-linux-gnu-gcc.
 
-When this prefix contains the name of the architecture, you may pass this prefix
-to the --host option of configure. For example, if you type :
-configure --host=powerpc-linux
-
-configure will automatically use powerpc-linux- as a prefix too all compilation
+configure will automatically use powerpc-405-linux-gnu- as a prefix too all compilation
 tools names and deduce the architecture name. If configure is unable to deduce
 the architecture name from this prefix, you will have to manually pass the name
 of all compilation tools on configure command line. As in:
 
-configure --build=i686-pc-linux-gnu --host=powerpc-unknown-linux-gnu CC=ppc_82xx-gcc CXX=ppc_82xx-gcc AR=ppc_82xx-ar LD=ppc_82xx-ld
+It might be a good idea to put all the output into a differen build directory
+as to build from from linux source several targets. For each target add 
+O=../build-target to each make invocation.
+configure CROSS_COMPILE=powerpc-405-linux-gnu-
 
 For more details:
 http://sourceware.org/autobook/autobook/autobook_264.html#SEC264
@@ -204,16 +206,18 @@
 2.2 Building for the PowerPC architecture
 
 A typical cross-compilation setup, in order to build Xenomai for a
-82xx-based system:
+PowerPC-405-based system:
 
 $ $xenomai_root/scripts/prepare-kernel.sh --arch=powerpc \
   --adeos=$xenomai_root/ksrc/arch/powerpc/patches/adeos-ipipe-2.6.14-ppc-X.Y-ZZ.patch \
   --linux=$linux_tree
 $ cd $linux_tree
-$ make xconfig/gconfig/menuconfig # select the kernel and Xenomai options
-$ make bzImage modules # then install as needed
+$ make CROSS_COMPILE=powerpc-405-linux-gnu- O=../build-powerpc-405-2.6.14 xconfig/gconfig/menuconfig 
+# select the kernel and Xenomai options
+$ make CROSS_COMPILE=powerpc-405-linux-gnu- O=../build-powerpc-405-2.6.14 bzImage modules 
+# then install as needed
 $ mkdir $build_root  cd $build_root
-$ $xenomai_root/configure --build=i686-pc-linux-gnu --host=powerpc-unknown-linux-gnu CC=ppc_82xx-gcc CXX=ppc_82xx-gcc AR=ppc_82xx-ar LD=ppc_82xx-ld
+$ $xenomai_root/configure CROSS_COMPILE=powerpc-405-linux-gnu-
 $ make install
 
 2.3 Building for the IPF
Index: sim/README
===
--- sim/README	(Revision 392)
+++ sim/README	(Arbeitskopie)
@@ -28,7 +28,11 @@
 Building the simulator
 ==
 
-You will need the libelf, libpng, tcl8.x/tk8.x and tix41 _development
+The simulator does not build with GCC 4.0 or later.
+
+Currently it does not work on PowerPC systems.
+
+You will need the libelf, libpng, tcl8.x/tk8.x and tix81 _development
 packages_ in order to build the simulator and its companion tools.
 For instance, on Debian systems, you will need to install
 libelfg0-dev, libpng2-dev, tcl8.3-dev, tk8.3-dev and tix41-dev (any


[Xenomai-core] Problems cross-compiling for PPC405

2006-01-07 Thread Niklaus Giger
Hi

I just upgraded to revision 392 of xenomai and got the following error trying
to compile the linux 2.6.14 kernel
  CC  kernel/xenomai/nucleus/heap.o
/mnt/data.ng/hcu/kernel/linux-2.6.14/kernel/xenomai/nucleus/heap.c:1017:1: 
pasting , and args does not give a valid preprocessing token
/mnt/data.ng/hcu/kernel/linux-2.6.14/kernel/xenomai/nucleus/heap.c: In 
function `xnheap_mount':
/mnt/data.ng/hcu/kernel/linux-2.6.14/kernel/xenomai/nucleus/heap.c:1015: 
error: `args' undeclared (first use in this function)
/mnt/data.ng/hcu/kernel/linux-2.6.14/kernel/xenomai/nucleus/heap.c:1015: 
error: (Each undeclared identifier is reported only once
/mnt/data.ng/hcu/kernel/linux-2.6.14/kernel/xenomai/nucleus/heap.c:1015: 
error: for each function it appears in.)
/mnt/data.ng/hcu/kernel/linux-2.6.14/kernel/xenomai/nucleus/heap.c:1015: 
warning: too many arguments for format
make[4]: *** [kernel/xenomai/nucleus/heap.o] Fehler 1
make[3]: *** [kernel/xenomai/nucleus] Fehler 2
make[2]: *** [kernel/xenomai] Fehler 2
make[1]: *** [kernel] Fehler 2


I am using GCC 3.4.4.

Best regards 
-- 
Niklaus Giger