* Compile external module against linux source and use functionality in linux source @ 2014-09-25 5:19 Arjun Pandey 2014-09-25 6:36 ` Paul Bolle 2014-09-25 12:27 ` Valdis.Kletnieks at vt.edu 0 siblings, 2 replies; 9+ messages in thread From: Arjun Pandey @ 2014-09-25 5:19 UTC (permalink / raw) To: kernelnewbies Hi I am trying to two things here. 1. Compile my module and export a function. 2. Use this exported function in modified kernel src and compile it. Step 1 goes through fine. The module gets compiled fine. However now when i try to compile the kernel i get linker error of undefined reference to the function exported from the kernel module. I can't find any documentation on this usecase. Thanks Arjun ^ permalink raw reply [flat|nested] 9+ messages in thread
* Compile external module against linux source and use functionality in linux source 2014-09-25 5:19 Compile external module against linux source and use functionality in linux source Arjun Pandey @ 2014-09-25 6:36 ` Paul Bolle 2014-09-25 6:41 ` Arjun Pandey 2014-09-25 12:27 ` Valdis.Kletnieks at vt.edu 1 sibling, 1 reply; 9+ messages in thread From: Paul Bolle @ 2014-09-25 6:36 UTC (permalink / raw) To: kernelnewbies On Thu, 2014-09-25 at 10:49 +0530, Arjun Pandey wrote: > However now when i try to compile the kernel i get linker error of > undefined reference to the function exported from the kernel module. I'm guessing you're compiling that module as, well, a module (ie, CONFIG_EXAMPLE=m). What happens when you make it built-in (CONFIG_EXAMPLE=y)? Paul Bolle ^ permalink raw reply [flat|nested] 9+ messages in thread
* Compile external module against linux source and use functionality in linux source 2014-09-25 6:36 ` Paul Bolle @ 2014-09-25 6:41 ` Arjun Pandey 2014-09-25 6:48 ` Paul Bolle 0 siblings, 1 reply; 9+ messages in thread From: Arjun Pandey @ 2014-09-25 6:41 UTC (permalink / raw) To: kernelnewbies No i am just compiling the external module and using this functionality in existing linux source code. I am not adding any additional modules within the tree which use this function. In my case i am trying to use the function directly in udp_rcv function of net/ipv4/udp.c Regards Arjun On Thu, Sep 25, 2014 at 12:06 PM, Paul Bolle <pebolle@tiscali.nl> wrote: > On Thu, 2014-09-25 at 10:49 +0530, Arjun Pandey wrote: >> However now when i try to compile the kernel i get linker error of >> undefined reference to the function exported from the kernel module. > > I'm guessing you're compiling that module as, well, a module (ie, > CONFIG_EXAMPLE=m). What happens when you make it built-in > (CONFIG_EXAMPLE=y)? > > > Paul Bolle > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Compile external module against linux source and use functionality in linux source 2014-09-25 6:41 ` Arjun Pandey @ 2014-09-25 6:48 ` Paul Bolle [not found] ` <CAKpWUYnUyd4mErC2wRBGqhHXg35PHWeGf2dnNJk=LTsbDx=n7A@mail.gmail.com> 0 siblings, 1 reply; 9+ messages in thread From: Paul Bolle @ 2014-09-25 6:48 UTC (permalink / raw) To: kernelnewbies [Manually corrected top-posting.] On Thu, 2014-09-25 at 12:11 +0530, Arjun Pandey wrote: > On Thu, Sep 25, 2014 at 12:06 PM, Paul Bolle <pebolle@tiscali.nl> wrote: > > I'm guessing you're compiling that module as, well, a module (ie, > > CONFIG_EXAMPLE=m). What happens when you make it built-in > > (CONFIG_EXAMPLE=y)? > > > No i am just compiling the external module and using this > functionality in existing linux source code. I am not adding any > additional modules within the tree which use this function. So, does the linker error disappear when you build your kernel with your new module built-in (ie, the new module is part of the kernel image)? > In my case i am trying to use the function directly in udp_rcv > function of net/ipv4/udp.c Paul Bolle ^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <CAKpWUYnUyd4mErC2wRBGqhHXg35PHWeGf2dnNJk=LTsbDx=n7A@mail.gmail.com>]
[parent not found: <1411628331.6613.11.camel@x220>]
* Compile external module against linux source and use functionality in linux source [not found] ` <1411628331.6613.11.camel@x220> @ 2014-09-25 7:00 ` Arjun Pandey 2014-09-25 7:29 ` Paul Bolle 0 siblings, 1 reply; 9+ messages in thread From: Arjun Pandey @ 2014-09-25 7:00 UTC (permalink / raw) To: kernelnewbies My bad. I just hit the default reply button :) On Thu, Sep 25, 2014 at 12:28 PM, Paul Bolle <pebolle@tiscali.nl> wrote: > On Thu, 2014-09-25 at 12:24 +0530, Arjun Pandey wrote: >> I tried moving the module to kernel tree as well. Ideally this will be >> out of tree module. That still didn't work. >> I have included a header file with the extern function declaration in >> the source file that i modified. >> That didn't help either. > > You excluded kernelnewbies. Is that non purpose? > > > Paul Bolle > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Compile external module against linux source and use functionality in linux source 2014-09-25 7:00 ` Arjun Pandey @ 2014-09-25 7:29 ` Paul Bolle 2014-09-25 7:32 ` Arjun Pandey 0 siblings, 1 reply; 9+ messages in thread From: Paul Bolle @ 2014-09-25 7:29 UTC (permalink / raw) To: kernelnewbies On Thu, 2014-09-25 at 12:30 +0530, Arjun Pandey wrote: > On Thu, Sep 25, 2014 at 12:28 PM, Paul Bolle <pebolle@tiscali.nl> wrote: > > On Thu, 2014-09-25 at 12:24 +0530, Arjun Pandey wrote: > >> I tried moving the module to kernel tree as well. Ideally this will be > >> out of tree module. That still didn't work. > >> I have included a header file with the extern function declaration in > >> the source file that i modified. > >> That didn't help either. Building a module built-in requires a bit more: changes to a kernel tree Kconfig file and a Makefile. There must be a lot of documentation on this. But I would do something like git grep -w tristate $(git ls-files "net/*Kconfig*") and pick a few Kconfig symbols (ie, the things with lines reading "config EXAMPLE"). The grep the tree again for their macros: git grep -w "CONFIG_EXAMPLE" net/ and figure out how things all fit together. (My guess, of course, is that your linker error disappears when you manege to build the module built-in. Once we know that, we can look whether it's actually possible to achieve what you want to do with an external module.) Hope this helps. Paul Bolle ^ permalink raw reply [flat|nested] 9+ messages in thread
* Compile external module against linux source and use functionality in linux source 2014-09-25 7:29 ` Paul Bolle @ 2014-09-25 7:32 ` Arjun Pandey 0 siblings, 0 replies; 9+ messages in thread From: Arjun Pandey @ 2014-09-25 7:32 UTC (permalink / raw) To: kernelnewbies Thanks Paul. Let me try this out. Regards Arjun On Thu, Sep 25, 2014 at 12:59 PM, Paul Bolle <pebolle@tiscali.nl> wrote: > On Thu, 2014-09-25 at 12:30 +0530, Arjun Pandey wrote: >> On Thu, Sep 25, 2014 at 12:28 PM, Paul Bolle <pebolle@tiscali.nl> wrote: >> > On Thu, 2014-09-25 at 12:24 +0530, Arjun Pandey wrote: >> >> I tried moving the module to kernel tree as well. Ideally this will be >> >> out of tree module. That still didn't work. >> >> I have included a header file with the extern function declaration in >> >> the source file that i modified. >> >> That didn't help either. > > Building a module built-in requires a bit more: changes to a kernel tree > Kconfig file and a Makefile. There must be a lot of documentation on > this. But I would do something like > git grep -w tristate $(git ls-files "net/*Kconfig*") > > and pick a few Kconfig symbols (ie, the things with lines reading > "config EXAMPLE"). The grep the tree again for their macros: > git grep -w "CONFIG_EXAMPLE" net/ > > and figure out how things all fit together. > > (My guess, of course, is that your linker error disappears when you > manege to build the module built-in. Once we know that, we can look > whether it's actually possible to achieve what you want to do with an > external module.) > > Hope this helps. > > > Paul Bolle > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Compile external module against linux source and use functionality in linux source 2014-09-25 5:19 Compile external module against linux source and use functionality in linux source Arjun Pandey 2014-09-25 6:36 ` Paul Bolle @ 2014-09-25 12:27 ` Valdis.Kletnieks at vt.edu 2014-09-26 6:24 ` Arjun Pandey 1 sibling, 1 reply; 9+ messages in thread From: Valdis.Kletnieks at vt.edu @ 2014-09-25 12:27 UTC (permalink / raw) To: kernelnewbies On Thu, 25 Sep 2014 10:49:33 +0530, Arjun Pandey said: > Step 1 goes through fine. The module gets compiled fine. > However now when i try to compile the kernel i get linker error of > undefined reference to the function exported from the kernel module. > > I can't find any documentation on this usecase. In general, things that are built-into the kernel with CONFIG_FOO=y are *not* allowed or able to reference symbols that are in a module. This is because a module can potentially not be loaded (consider system boot before you're up far enough to do a modprobe, as an important special case), at which point trying to call the non-existent module gets you an oops or panic. So you can't find any doc on it because it's not supported. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 848 bytes Desc: not available Url : http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20140925/bd4aba7e/attachment.bin ^ permalink raw reply [flat|nested] 9+ messages in thread
* Compile external module against linux source and use functionality in linux source 2014-09-25 12:27 ` Valdis.Kletnieks at vt.edu @ 2014-09-26 6:24 ` Arjun Pandey 0 siblings, 0 replies; 9+ messages in thread From: Arjun Pandey @ 2014-09-26 6:24 UTC (permalink / raw) To: kernelnewbies Hi Valdis That makes sense :) Moving the module to the kernel makes it work. Thanks Arjun On Thu, Sep 25, 2014 at 5:57 PM, <Valdis.Kletnieks@vt.edu> wrote: > On Thu, 25 Sep 2014 10:49:33 +0530, Arjun Pandey said: > >> Step 1 goes through fine. The module gets compiled fine. >> However now when i try to compile the kernel i get linker error of >> undefined reference to the function exported from the kernel module. >> >> I can't find any documentation on this usecase. > > In general, things that are built-into the kernel with CONFIG_FOO=y > are *not* allowed or able to reference symbols that are in a module. > > This is because a module can potentially not be loaded (consider system > boot before you're up far enough to do a modprobe, as an important > special case), at which point trying to call the non-existent module > gets you an oops or panic. > > So you can't find any doc on it because it's not supported. ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2014-09-26 6:24 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-25 5:19 Compile external module against linux source and use functionality in linux source Arjun Pandey
2014-09-25 6:36 ` Paul Bolle
2014-09-25 6:41 ` Arjun Pandey
2014-09-25 6:48 ` Paul Bolle
[not found] ` <CAKpWUYnUyd4mErC2wRBGqhHXg35PHWeGf2dnNJk=LTsbDx=n7A@mail.gmail.com>
[not found] ` <1411628331.6613.11.camel@x220>
2014-09-25 7:00 ` Arjun Pandey
2014-09-25 7:29 ` Paul Bolle
2014-09-25 7:32 ` Arjun Pandey
2014-09-25 12:27 ` Valdis.Kletnieks at vt.edu
2014-09-26 6:24 ` Arjun Pandey
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.