Problems exporting symbols from the main kernel to a module

From: Eduardo Cruz
Date: Sat Apr 11 2015 - 11:53:54 EST


I am modifying the kernel to provide some statistics about memory usage.
For that, part of my code is added in the main kernel, and part is in a module.

The kernel version is 2.6.32.
The target machine is an ia64 machine.
Newer kernels do not boot the machine.
I'm using a debian distribution.

In the main kernel, in arch/ia64/mm/fault.c, I added the following
function pointer:

void (*module_task_added)(struct task_struct *) = NULL;
EXPORT_SYMBOL(module_task_added);

In the module, i have:

extern void (*module_task_added)(struct task_struct *);

void handler_func (struct task_struct *task) {
...
}

int init_module () {
module_task_added = handler_func;
}

when I compile the module, i get the following warning:

WARNING: "module_task_added"
[/home/ehmcruz/linux-tammu/tammu-module/tammu.ko] undefined!


when I try to load the module, it fails resolving the symbol module_task_added:

[ 3306.496239] tammu: Unknown symbol module_task_added


I already verified that the symbol is present in /proc/kallsyms:

a000000100ac1b78 S module_task_added

however, I don't know why, the variable doesn't appear in Module.symvers

Anyone can help me?

thanks in advance

--
Eduardo Henrique Molina da Cruz
PhD student
Parallel and Distributed Processing Group
Federal University of Rio Grande do Sul (UFRGS)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/