Hi again,
I am sorry to ask help again about this point but I still am no able to
compile a kernel module with Xenomai 3.x support.
I made the changes pointed in the previous email:
In the module is now being included just:
<rtdm/driver.h>
and the makefile is now:
EXTRA_CFLAGS := $(shell xeno-config --kcflags)
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
but it did not work. The error make issued was:
In file included from include/xenomai/cobalt/kernel/sched.h:24:0,
from include/xenomai/rtdm/driver.h:36,
from /root/prg/01-rtdm_interrupt/ps2auxint.c:4:
include/xenomai/cobalt/kernel/thread.h:32:33: fatal error:
asm/xenomai/machine.h: No such file or directory
Then I ran xeno-config --kcflags in the cmd line and it returned:
-Iarch/$(SRCARCH)/xenomai/include -Iinclude/xenomai
So I tried to explicitly add it to the Makefile (according to my kernel):
EXTRA_CFLAGS := -I/usr/src/linux-headers-3.16.0-ipipe/include/xenomai
-Iinclude/xenomai
Make returned asimilar error:
In file included from
/usr/src/linux-headers-3.16.0-ipipe/include/xenomai/cobalt/kernel/sched.h:24:0,
from
/usr/src/linux-headers-3.16.0-ipipe/include/xenomai/rtdm/driver.h:36,
from /root/prg/01-rtdm_interrupt/ps2auxint.c:4:
/usr/src/linux-headers-3.16.0-ipipe/include/xenomai/cobalt/kernel/thread.h:32:33:
fatal error: asm/xenomai/machine.h: No such file or directory
I am not sure what I am missing. Another header?
The wrong path to Xenomai headers?
My Xenomai install is cobalt on kernel 3.16.
$> uname -r
3.16.0-ipipe
$> /usr/xenomai/sbin/version -a
Xenomai/cobalt v3.0-rc3 --
Target: x86_64-unknown-linux-gnu
Compiler: gcc version 4.7.2 (Debian 4.7.2-5)
Build args: '--with-core=cobalt' '--enable-registry' '--enable-smp'
'--enable-pshared' '--prefix=/usr/xenomai'
On 6 March 2015 at 10:14, Philippe Gerum <[email protected]> wrote:
> On 03/06/2015 11:03 AM, Helder Daniel wrote:
> > On 6 March 2015 at 09:38, Philippe Gerum <[email protected]
> > <mailto:[email protected]>> wrote:
> >
> > >
> > > obj-m += intr.o
> > >
> > > EXTRA_CFLAGS := -I/usr/xenomai/include -I/usr/include
> >
> > This is wrong, you are pulling userland headers. The CFLAGS required
> to
> > build a kernel module using the RTDM API should be obtained by:
> >
> > $(shell xeno-config --kcflags)
> >
> >
> > Ok I was suspecting that (even makefile worked with 2.5) .
> > I tried:
> >
> > EXTRA_CFLAGS := $(shell xeno-config --kcflags)
> >
> > but now it can not find rtdm.h:
> >
>
> rtdm.h provides the RTDM API definitions to userland applications. You
> want rtdm/driver.h for building a module implementing a RTDM driver.
>
> > /root/prg/01-rtdm_interrupt/intr.c:2:18: fatal error: rtdm.h: No such
> > file or directory
> >
> > Whether It is included as <rtdm/rtdm.h>
> > or just <rtdm.h>
> >
> > I run the command in a shell and the output is:
> >
> > root@debian:~/prg/01-rtdm_interrupt# xeno-config --kcflags
> >
> > -Iarch/$(SRCARCH)/xenomai/include -Iinclude/xenomai
> >
> > However complete output of make, tells SRCARCH not found:
> >
> > $> make
> > make -C /lib/modules/3.18.7-rt2/build M=/root/prg/01-rtdm_interrupt
> modules
> > make[1]: Entering directory `/usr/src/linux-headers-3.18.7-rt2'
> > CC [M] /root/prg/01-rtdm_interrupt/intr.o
> > /bin/sh: 1: SRCARCH: not found
> > /root/prg/01-rtdm_interrupt/intr.c:2:18: fatal error: rtdm.h: No such
> > file or directory
> > compilation terminated.
> > make[2]: *** [/root/prg/01-rtdm_interrupt/intr.o] Error 1
> > make[1]: *** [_module_/root/prg/01-rtdm_interrupt] Error 2
> > make[1]: Leaving directory `/usr/src/linux-headers-3.18.7-rt2'
> > make: *** [all] Error 2
> >
>
> SRCARCH is defined by the standard Kbuild infrastructure, this is not a
> Xenomai-specific variable. You may want to look at
> xenomai3/kernel/drivers/ipc/Makefile for an illustration of its usage.
>
> --
> Philippe.
>
--
Helder Daniel
UALG - FCT
DEEI
http://w3.ualg.pt/~hdaniel
--
Helder Daniel
UALG - FCT
DEEI
http://w3.ualg.pt/~hdaniel
_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai