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

2.2 Hello World (P 2 )   :许可权限和模块的声明
环境: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

相关链接:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值