2002-11-11 21:44:21

by folkert

[permalink] [raw]
Subject: how to export a symbol so that I can use it in a module

Hi,

I've added a function "create_tcp_port_number" to net/core/utils.c
like this:

int create_tcp_port_number(void)
{
/* blah blah */
}
EXPORT_SYMBOL(create_tcp_port_number);

in include/linux/net.h I added:
extern int create_tcp_port_number(void);

So, now in net/ipv6/tcp_ipv6.c I used this 'create_tcp_port_number'
function. I'm compiling the kernel with ipv6 as a module. And that's
where I get the problem. In the last stage, the makefile does a
depmod and then I get:
depmod: *** Unresolved symbols in /lib/modules/2.4.19/kernel/net/ipv6/ipv6.o
depmod: create_tcp_port_number

I'm really out of ideas what can be the cause of this. It must be
something trivial, but I cannot find the solution. Anyone who can
help me?

Thank you.


Folkert van Heusden


2002-11-11 21:57:09

by Ben Greear

[permalink] [raw]
Subject: Re: how to export a symbol so that I can use it in a module

Folkert van Heusden wrote:
> Hi,
>
> I've added a function "create_tcp_port_number" to net/core/utils.c
> like this:
>
> int create_tcp_port_number(void)
> {
> /* blah blah */
> }
> EXPORT_SYMBOL(create_tcp_port_number);

Try putting the EXPORT_SYMBOL macro in net/netsyms.c

Ben


--
Ben Greear <[email protected]> <Ben_Greear AT excite.com>
President of Candela Technologies Inc http://www.candelatech.com
ScryMUD: http://scry.wanfear.com http://scry.wanfear.com/~greear


2002-11-11 21:56:46

by Tomas Szepe

[permalink] [raw]
Subject: Re: how to export a symbol so that I can use it in a module

> I've added a function "create_tcp_port_number" to net/core/utils.c
> like this:
>
> int create_tcp_port_number(void)
> {
> /* blah blah */
> }
> EXPORT_SYMBOL(create_tcp_port_number);
>
> in include/linux/net.h I added:
> extern int create_tcp_port_number(void);
>
> So, now in net/ipv6/tcp_ipv6.c I used this 'create_tcp_port_number'
> function. I'm compiling the kernel with ipv6 as a module. And that's
> where I get the problem. In the last stage, the makefile does a
> depmod and then I get:
> depmod: *** Unresolved symbols in /lib/modules/2.4.19/kernel/net/ipv6/ipv6.o
> depmod: create_tcp_port_number
>
> I'm really out of ideas what can be the cause of this. It must be
> something trivial, but I cannot find the solution. Anyone who can
> help me?

Make sure you're including <linux/module.h> into utils.c and that
utils.o is among export-objs in the makefile.

--
Tomas Szepe <[email protected]>