module_init(hello_init); //内核加载函数 static void __exit hello_exit(void) { printk(KERN_INFO "Hello world exit\n"); } module_exit(hello_exit); //内核卸载函数 MODULE_AUTHOR("Test Hello"); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("A simple Hello World Module"); MODULE_ALIAS("A ...
(1)MODULE_LICENSE("GPL"),模块的许可证。一般声明为GPL许可证,而且最好不要少,否则可能会出现莫名其妙的错误(譬如一些明显存在的函数提升找不到)。 (2)MODULE_AUTHOR("tao Deng <> 773904075@qq.com"),用来添加模块的作者信息 (3)MODULE_DESCRIPTION("xxx"),用来添加模块的描述信息 (4)MODULE_ALIAS("xxxx...
1、MODULE_ALIAS、MODULE_LICENSE、MODULE_AUTHOR、MODULE_DESCRIPTION、MODULE_PARM_DESC。这些宏定义在include/linux/module.h,简单的在section(“.modinfo”)生成描述的字符串信息,使用modinfo命令,可以查看这些信息。 2、module_param、MODULE_PARM。宏定义在include/linux/moduleparam.h,基本意思就是在section(“__pa...
MODULE_AUTHOR(author); MODULE_DESCRIPTION(description); MODULE_VERSION(version_string); MODULE_DEVICE_TABLE(table_info); MODULE_ALIAS(alternate_name); 放置文档在目标文件的模块中。 module_init(init_function); module_exit(exit_function); 宏定义,声明一个模块的初始化和清理函数。 #include <linux/modu...
module_exit(hello_exit); MODULE_DESCRIPTION("A Simple Hello World"); MODULE_ALIAS("A simplest module"); 2.Makefile #makefile for the hello.c obj-m := hello.o CURRENT_PATH := $(shell pwd) LINUX_KERNEL := $(shell uname -r) ...
MODULE_LICENSE("Dual BSD/GPL"); /*模块许可证明,描述内核模块的许可权限,必须*/ MODULE_DESCRIPTION("A simple Hello World Module"); /*模块说明,可选*/ MODULE_ALIAS("a simplest module"); /*模块说明,可选*/ 1. 2. 3. 4. 5. 6.
MODULE_AUTHOR("John"); MODULE_DEION("This is a simple example!/n"); MODULE_ALIAS("A simplest example"); 说明: 1.> 相信只要是学过 C 语言的同学对第一个程序都是没有问题的。但是也许大家看了第二个程序就有些不明白了。 可能有人会说: 你没疯吧,怎么会把 printf() 这么简单的函数错写成了...
**MODULE_ALIAS()为用户空间提供一个合适的别名。**下面我们来看如何编译这个内核模块。在优麒麟Linux上编译该内核模块,下面是编写内核模块的Makefile文件。 现在创建好了咱们的模块,下一步就是来编写内核模块的makefile文件 b. 内核模块的makefile文件
MODULE_ALIAS("mv-ehci"); MODULE_LICENSE("GPL"); MODULE_DEVICE_TABLE(of, ehci_mv_dt_ids); 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 从2012年linux kernel 3.xx开始增加了module_platform_driver这个宏,一直延续...
MODULE_ALIAS ( 模块为人所知的另一个名子 ), MODULE_DEVICE_TABLE ( 来告知用户空间, 模块支持那些设备). (5) static int hello_init(void) 初始化函数应当声明成静态的, static void hello_exit(void) 清理函数, 它注销接口, 在模块被去除之前返回所有资源给系统 ...