Linux内核模块-实例2(二)

来源:互联网 发布:7u分享网络赚一元 编辑:程序博客网 时间:2024/06/05 16:00
2.2 Hello World (P2) :许可权限和模块的声明
环境:Linux内核 2.6 

1. 内核模块实例(book.c)
/*  * book.c - Demonstrates module documentation.  */# include <linux/module.h> /* Need by all modules */# include <linux/kernel.h> /* Need for HERN_INFO */# include <linux/init.h>   /* Need for the macros */# define DRIVER_AUTHOR "Star <s@dirac.org>"# define DRIVER_DESC "A sample driver"  static char* bookName = "Good Book.";  static int bookNumber = 100;  static int __init book_init(void){      printk(KERN_INFO "Book name is %s\n", bookName);      printk(KERN_INFO "Book number is %d\n", bookNumber);      return 0;}  static void __exit book_exit(void){       printk(KERN_INFO "Book module exit.\n");}module_init(book_init);module_exit(book_exit);module_param(bookName, charp, S_IRUGO);module_param(bookNumber, int, S_IRUGO);/*   You can use strings, like this:*//*   Get rid of taint message by declaring code as GPL.  */  MODULE_LICENSE("GPL");/*   Or with defines, like this:*/MODULE_AUTHOR(DRIVER_AUTHOR);  /* Who wrote this module? */MODULE_DESCRIPTION(DRIVER_DESC); /* What does this module do */

2.代码解析
  • MODULE_LICENSE("GPL"); 
此处可有可无,可以不加,系统默认(但会报警)。模块声明描述内核模块的许可权限,如果不声明LICENSE,模块被加载时,将收到内核的警告。在 Linux2.6 内核中,可接受的 LICENSE 包括" GPL","GPL v2","GPL and additional rights","Dual BSD/GPL","Dual MPL/GPL","Proprietary" 
  • MODULE_AUTHOR(DRIVER_AUTHOR);MODULE_DESCRIPTION(DRIVER_DESC);
模块的声明与描述可加可不加。

3.Makefile文件的写法

Makefile 文件由五部分组成:显示规则 含规则 变量定义 makefile 指示符和注释

一条 Make 的规则原型为:

目标 ... :依赖 ..

命令

代码:参照2.1

相关链接:
内核模块编程入门:http://www.tldp.org/LDP/lkmpg/2.6/html/index.html


0 0