Kernel module: hrtimer_start "Unknown character in module"

I am creating a kernel module that uses the hrtimer interface. My module compiles successfully, and it got MODULE_LICENSE("GPL")set:

make -C /lib/modules/3.0.0-23-server/build SUBDIRS=/home/projects/net-modeler modules
make[1]: Entering directory `/usr/src/linux-headers-3.0.0-23-server'
  CC [M]  /home/projects/net-modeler/nm_injector.o
  CC [M]  /home/projects/net-modeler/nm_scheduler.o
  LD [M]  /home/projects/net-modeler/net-modeler.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/projects/net-modeler/net-modeler.mod.o
  LD [M]  /home/projects/net-modeler/net-modeler.ko
make[1]: Leaving directory `/usr/src/linux-headers-3.0.0-23-server'

... but when I try to execute insmod, dmesg outputs

[111853.094925] Unknown symbol hrtimer_init (err 0)
[111853.094931] Unknown symbol hrtimer_start (err 0)
[111853.094942] Unknown symbol hrtimer_cancel (err 0)

These functions come from inside <linux/hrtimer.h>and exported to kernel / hrtimer.c as follows:

/**
 * hrtimer_init - initialize a timer to the given clock
 * @timer:  the timer to be initialized
 * @clock_id: the clock to be used
 * @mode: timer mode abs/rel
 */
void hrtimer_init(struct hrtimer *timer, clockid_t clock_id,
      enum hrtimer_mode mode)
{
  debug_init(timer, clock_id, mode);
  __hrtimer_init(timer, clock_id, mode);
}
EXPORT_SYMBOL_GPL(hrtimer_init);

cat /proc/kallsyms | grep <func> for three functions leads to:

0000000000000000 T hrtimer_init
0000000000000000 T hrtimer_cancel
0000000000000000 T hrtimer_start

Can someone help me figure out what's going on? It seems to me that all functions are exported and can be found, but for some reason they are not. Am I doing something stupid?

+5
source share
1 answer

, , MODULE_LICENSE("GPL") , .

, , EXPORT_SYMBOL_GPL.

+4

All Articles