>> But how does the kernle finally know what is the name of module and
> The module name comes IMO from the final object-name.ko.

More precisely the module name is specified in the Makefile.

For example for the ext2 kernel module, the "ext2-y" and "ext2.o"
entries in the Makefile tells the kernel build system that the
module's name is ext2.
>From fs/ext2/Makefile:
obj-$(CONFIG_EXT2_FS) += ext2.o
ext2-y := balloc.o dir.o file.o fsync.o ialloc.o inode.o \
          ioctl.o namei.o super.o symlink.o dedup.o hash.o
--
Based on this, if ext2 is configure with 'm' (to be a kernel module),
the kernel build system creates a ext2.mod.c file which looks like
this:

struct module __this_module
__attribute__((section(".gnu.linkonce.this_module"))) = {
 .name = KBUILD_MODNAME,
 .init = init_module,
#ifdef CONFIG_MODULE_UNLOAD
 .exit = cleanup_module,
#endif
 .arch = MODULE_ARCH_INIT,
};
--
KBUILD_MODNAME holds the name of the kernel module which is defined by
the kernel build system.
This structure is embedded into the finally linked kernel module
object and is available to the kernel.

Hope this provides a bit more details to your question - how does the
kernel know the "name" of a module.

Thanks,
-Joel

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecar...@nl.linux.org
Please read the FAQ at http://kernelnewbies.org/FAQ

Reply via email to