From: Philippe Gerum <rpm@xenomai.org>
To: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
Cc: "xenomai@xenomai.org" <xenomai@xenomai.org>,
"\"Hans Søndergaard (HSO)\"" <HSO@VIAUC.DK>
Subject: Re: [Xenomai-help] Xenomai on AT91SAM9260
Date: Thu, 01 May 2008 19:02:30 +0200 [thread overview]
Message-ID: <4819F7A6.1010809@domain.hid> (raw)
In-Reply-To: <18457.59929.12465.572294@domain.hid>
Gilles Chanteperdrix wrote:
> Hans Søndergaard (HSO) wrote:
> > Hi,
> >
> > Thanks for the answer.
> > We are now trying to install Xenomai 2.4.3 using Linux 2.6.24 on AT91SAM9260,
> > but have a problem:
> >
> > Is it possible to disable the building of the posix skin when
> > configuring the user space libraries for Xenomai?
> >
> > I have tried --disable-posix-skin, but this had no effect.
> >
> > The reason why I ask is that the building of src/skins/posix/init.c
> > fails like this:
> >
> > [stk@domain.hid posix]$ arm-linux-uclibc-gcc -DHAVE_CONFIG_H -I. -I../../../src/inc
> > lude -I../../../../xenomai-2.4.3/src/skins/posix -O2 -D_GNU_SOURCE -D_REENTRANT
> > -Wall -pipe -march=armv5 -D__XENO__ -D__IN_XENO__ -Wstrict-prototypes -I../../..
> > /../xenomai-2.4.3/include -I../../../../xenomai-2.4.3/include/posix -MT libpthre
> > ad_rt_la-init.lo -MD -MP -MF .deps/libpthread_rt_la-init.Tpo -c ../../../../xeno
> > mai-2.4.3/src/skins/posix/init.c -fPIC -DPIC -o .libs/libpthread_rt_la-init.o
> > In file included from ../../../src/include/asm/xenomai/atomic.h:78,
> > from ../../../../xenomai-2.4.3/include/nucleus/system.h:27,
> > from ../../../src/include/asm/xenomai/system.h:135,
> > from ../../../../xenomai-2.4.3/include/nucleus/types.h:40,
> > from ../../../../xenomai-2.4.3/include/nucleus/queue.h:25,
> > from ../../../../xenomai-2.4.3/include/nucleus/timebase.h:30,
> > from ../../../../xenomai-2.4.3/include/nucleus/timer.h:27,
> > from ../../../../xenomai-2.4.3/include/nucleus/thread.h:26,
> > from ../../../../xenomai-2.4.3/include/posix/pthread.h:150,
> > from /home/stk/brick/mb9200/buildroot/build_arm/staging_dir/bin
> > -ccache/../lib/gcc/arm-linux-uclibc/4.1.1/../../../../arm-linux-uclibc/sys-inclu
> > de/bits/uClibc_mutex.h:16,
> > from /home/stk/brick/mb9200/buildroot/build_arm/staging_dir/bin
> > -ccache/../lib/gcc/arm-linux-uclibc/4.1.1/../../../../arm-linux-uclibc/sys-inclu
> > de/bits/uClibc_stdio.h:120,
> > from /home/stk/brick/mb9200/buildroot/build_arm/staging_dir/bin
> > -ccache/../lib/gcc/arm-linux-uclibc/4.1.1/../../../../arm-linux-uclibc/sys-inclu
> > de/stdio.h:73,
> > from ../../../../xenomai-2.4.3/src/skins/posix/init.c:20:
> > ../../../src/include/asm/xenomai/syscall.h: In function 'xeno_arm_features_check
> > ':
> > ../../../src/include/asm/xenomai/syscall.h:295: error: 'stderr' undeclared (firs
> > t use in this function)
> > ../../../src/include/asm/xenomai/syscall.h:295: error: (Each undeclared identifi
> > er is reported only once
> > ../../../src/include/asm/xenomai/syscall.h:295: error: for each function it appe
> > ars in.)
> >
> > Obviously there is something wrong with the include path used:
> > uClibc_mutex.h should not include 'pthread.h' in the Xenomai
> > distribution but rather the version in uClibc itself.
> >
> > Why this happens I'm trying to discover.
> >
> > The complete configure I'm using is:
> >
> > ../xenomai-2.4.3/configure --build=i686-pc-linux-gnu --host=arm-linux-uclibc --enable-arm-mach=at91sam926x --enable-arm-tsc
> >
> > Thanks in advance.
>
> Well, I understand that it may not be important to you if you do not
> intend to use the posix skin, but we should try and solve this issue
> (which seems to be a uclibc issue). Including posix skin pthread.h
> instead of libc pthread.h should be no problem, since posix skin
> pthread.h include the libc pthread.h. The problem here is due to the
> fact that asm-arm/syscall.h is trying to use stderr whereas we are at
> the very beginning of stdio.h where stderr is not defined yet.
>
> I have to admit that I have no idea here other than defining a function
> in init.c which calls fprintf and to call this function instead of
> fprintf in asm-arm/syscall.h
>
> Philippe, any better idea ?
>
No, but I do have an almost as ugly one to suggest:
--- include/asm-arm/syscall.h (revision 3729)
+++ include/asm-arm/syscall.h (working copy)
@@ -222,7 +222,6 @@
#define XENOMAI_SYSARCH_TSCINFO 4
#ifndef __KERNEL__
-#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
@@ -230,6 +229,8 @@
#include <fcntl.h>
#include <unistd.h>
#include <limits.h>
+#include <error.h>
+#include <errno.h>
__attribute__((weak)) struct __xn_tscinfo __xn_tscinfo = {
type: -1
@@ -291,17 +292,15 @@
err = XENOMAI_SYSCALL2(__xn_sys_arch,
XENOMAI_SYSARCH_TSCINFO, &__xn_tscinfo);
if (err) {
- error:
- fprintf(stderr, "Xenomai: Your board/configuration does not"
- " allow tsc emulation in user-space: %d\n", err);
- exit(EXIT_FAILURE);
+ fail:
+ error(EXIT_FAILURE, err,
+ "Xenomai: Your board/configuration does not"
+ " allow tsc emulation in user-space\n");
}
fd = open("/dev/mem", O_RDONLY | O_SYNC);
- if (fd == -1) {
- perror("Xenomai init: open(/dev/mem)");
- exit(EXIT_FAILURE);
- }
+ if (fd == -1)
+ error(EXIT_FAILURE, errno, "Xenomai init: open(/dev/mem)");
page_size = sysconf(_SC_PAGESIZE);
@@ -313,10 +312,8 @@
phys_addr = (unsigned long) __xn_tscinfo.u.fr.counter;
addr = mmap(NULL, page_size, PROT_READ, MAP_SHARED,
fd, phys_addr & ~(page_size - 1));
- if (addr == MAP_FAILED) {
- perror("Xenomai init: mmap(/dev/mem)");
- exit(EXIT_FAILURE);
- }
+ if (addr == MAP_FAILED)
+ error(EXIT_FAILURE, errno, "Xenomai init: mmap(/dev/mem)");
__xn_tscinfo.u.fr.counter =
((volatile unsigned *)
@@ -330,10 +327,8 @@
phys_addr = (unsigned long) __xn_tscinfo.u.dec.counter;
addr = mmap(NULL, page_size, PROT_READ, MAP_SHARED,
fd, phys_addr & ~(page_size - 1));
- if (addr == MAP_FAILED) {
- perror("Xenomai init: mmap(/dev/mem)");
- exit(EXIT_FAILURE);
- }
+ if (addr == MAP_FAILED)
+ error(EXIT_FAILURE, "Xenomai init: mmap(/dev/mem)");
__xn_tscinfo.u.dec.counter =
((volatile unsigned *)
@@ -342,18 +337,15 @@
}
#endif /* CONFIG_XENO_ARM_HW_DIRECT_TSC == __XN_TSC_TYPE_DECREMENTER */
case __XN_TSC_TYPE_NONE:
- goto error;
+ goto fail;
default:
- fprintf(stderr,
- "Xenomai: kernel/user tsc emulation mismatch.\n");
- exit(EXIT_FAILURE);
+ error(EXIT_FAILURE, err,
+ "Xenomai: kernel/user tsc emulation mismatch.\n");
}
- if (close(fd)) {
- perror("Xenomai init: close(/dev/mem)");
- exit(EXIT_FAILURE);
- }
+ if (close(fd))
+ error(EXIT_FAILURE, errno, "Xenomai init: close(/dev/mem)");
#endif /* CONFIG_XENO_ARM_HW_DIRECT_TSC */
}
#define xeno_arch_features_check() xeno_arm_features_check()
--
Philippe.
next prev parent reply other threads:[~2008-05-01 17:02 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-29 11:37 [Xenomai-help] Xenomai on AT91SAM9260 Hans Søndergaard (HSO)
2008-04-29 12:18 ` Gilles Chanteperdrix
2008-05-01 5:46 ` Hans Søndergaard (HSO)
2008-05-01 16:04 ` Gilles Chanteperdrix
2008-05-01 17:02 ` Philippe Gerum [this message]
2008-05-03 8:21 ` Hans Søndergaard (HSO)
2008-05-03 14:14 ` Gilles Chanteperdrix
2008-05-04 15:16 ` Hans Søndergaard (HSO)
2008-05-01 16:55 ` Gilles Chanteperdrix
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4819F7A6.1010809@domain.hid \
--to=rpm@xenomai.org \
--cc=HSO@VIAUC.DK \
--cc=gilles.chanteperdrix@xenomai.org \
--cc=xenomai@xenomai.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.