您的位置:首页 > 运维架构 > Linux

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

2014-04-06 19:47 495 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 内核