Code:
/*
* A first simple hello_world kernel module
*/
#include <linux/init.h>
#include <linux/module.h>
static int hello_init(void)
{
printk(KERN_ALERT "Hello world!\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
Makefile:
obj-m := hello.o
Build it:
make -C ~/git/linux-denx/ M=`pwd` modules ARCH=powerpc
loading
Extentions:
-
__init, __initdata, __exit, __exitdata
(include/linux/init.h
)
-
__devinit
/ __devexit
(normal function if !CONFIG_HOTPLUG
, else equal __init
/ __exit
-
MODULE_AUTHOR, MODULE_LICENSE, MODULE_DESCRIPTION
- Kernel symbol visibility:
static
, EXPORT_SYMBOL[_GPL[_FUTURE]](a)
- check out kernel symbols:
/proc/kallsyms
(nm(1)
)