网络游戏 2017-04-16
内核模块分析
这里主要分析一下内核模块中各语句的作用,下面是一段简单的模块代码,只做了模块的初始化和退出操作
#include <linux/module.h> #include <linux/init.h> #include <linux/kernel.h> static int __init first_module_init(void) { printk(KERN_ALERT"Module init!\n"); } static void __exit first_module_exit(void) { printk(KERN_ALERT"Module exit!\n"); } module_init(first_module_init); module_exit(first_module_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("STAR"); MODULE_DESCRIPTION("First Module");
代码简析:
代码详析:
1.first_module_init()函数是模块的入口点,在模块装载时被调用。
2.first_module_exit()函数是模块的出口函数,在模块从内存中卸载时调用。
关于 __init和 __exit宏
内核模块证书和内核模块文档说明
注 意
在上面的程序中初始化和退出函数都只是简单的打印一句话。这里用的是printk()函数。printk相当于是内核中的printf,它们区别主要在于指向空间的不同。
内核中,信息一般保存于在内核空间分配的缓冲区中。printf一般指向用户空间,使用printk可改变指向使之指向内核空间。这里只作简要提醒,读者如有需要可到网上查询相关信息。
谢谢阅读,转载请注明!
2017-04-16