Linux驱动-简单字符驱动补充内容

 

符号导出:

Linux 2.6 中,所有的内核符号默认都是不导出的。如果希望一个模块的符号能被其它
模块使用,则必须显式的用 EXPORT_SYMBOL 将符号导出。如:
EXPORT_SYMBOL(module_symbol);
模块描述:
模块编写者还可以为所编写的模块增加一些其它描述信息,如模块作者、模块本身的描
述或者模块版本等,例如:
MODULE_AUTHOR("Abing <Linux@zlgmcu.com>");
MODULE_DESCRIPTION("ZHIYUAN ecm1352 beep Driver");
MODULE_VERSION("V1.00");

内核打印级别:pintk函数

#define KERN_EMERG      "<0>"  /* system is unusable                      */ 
#define KERN_ALERT    "<1>"  /* action must be taken immediately    */ 
#define KERN_CRIT            "<2>"  /* critical conditions                              */ 
#define KERN_ERR            "<3>"  /* error conditions                                */ 
#define KERN_WARNING    "<4>"  /* warning conditions                            */ 
#define KERN_NOTICE    "<5>"  /* normal but significant condition      */ 
#define KERN_INFO      "<6>"  /* informational                                  */ 
#define KERN_DEBUG    "<7>"  /* debug-level messages                    */ 

//示例
printk(KERN_DEBUG"Hello, I'm ready!\n");
 
模块参数
Linux 内核允许模块在加载的时候指定参数。模块接受参数传入能够实现一个模块在多
个系统上运行,或者根据插入时参数的不同提供多种不同的服务。
模块参数必须使用 module_param 宏来声明,通常放在文件头部。 module_param 需要 3
个参数:变量名称、类型以及用于 sysfs 入口的访问掩码。模块最好为参数指定一个默认值,
以防加载模块的时候忘记传参而带来错误。如下的示例在插入模块时候没有指定 num 参数
的话,模块将会使用默认值 5
static int num = 5;
module_param(num, int, S_IRUGO);
说明:
1) 内核模块支持的参数类型有: bool invbool charp int short long uint ushort
ulong
2) 访问掩码的值在 <linux/stat.h> 定义, S_IRUGO 表示任何人都可以读取该参数,但不
能修改。
3) 支持传参的模块需包含 moduleparam.h 头文件。
 
参数在模块安装时进行指定,例如
# insmod    hellop.ko whom="MASTER" num=5 

注册函数:

所需头文件 #include <linux/fs.h> 
函数原型 int register_chrdev(unsigned int major, const char *name,struct file_operations *fops) 
函数传入值major:设备驱动程序向系统申请的主设备号,如果为 0 则系统为此驱动程序动态地分配一个主设备号 
name:设备名 
fops:对各个调用的入口点  
函数返回值成功:如果是动态分配主设备号,此返回所分配的主设备号。且设备名就会出现在
/proc/devices 文件里 
出错:1  

 注销函数

 #include <linux/fs.h> 
 int unregister_chrdev(unsigned int major, const char *name) 
 major:设备的主设备号,必须和注册时的主设备号相同 
name:设备名 
 成功:0,且设备名从/proc/devices 文件里消失 
出错:1 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值