Linux杂项设备驱动
- Fang XS.
- 1452512966@qq.com
- 如果有错误,希望被指出
前言
- Linux驱动中,不容易分类的驱动,可以使用杂项设备驱动。
- 主设备号都为10,次设备号可自动分配,可节省内核资源。
- 主设备号通常表示一类设备。
- 次设备号通常表示一类设备中的某一个设备。
MISC
- 头文件
#include <linux/init.h>
#include <linux/module.h>
#include <linux/miscdevice.h>
#include <linux/fs.h>
- miscdevice 结构体和file_operations结构体
struct file_operations misc_fops={
.owner = THIS_MODULE
};
struct miscdevice miscdev_test = {
.minor = MISC_DYNAMIC_MINOR,
.name = "miscdev_test",
.fops = &misc_fops
};
- 初始化函数和卸载函数
static int miscdev_init(void){
int ret;
ret = misc_register(&miscdev_test);
if(ret<0){
printk("misc_register err..\n");
return -1;
}
printk("misc_register succeed..\n");
return 0;
}
static void miscdev_exit(void) {
misc_deregister(&miscdev_test);
printk("miscdev_exit..\n");
}
- 模块入口和出口
module_init(miscdev_init);
module_exit(miscdev_exit);
MODULE_LICENSE("GPL");
函数原型
函数 | int misc_register(struct miscdevice * misc) |
---|
参数 | 要注册的miscdevice结构体 |
返回值 | 成功返回 0,失败返回负数。 |
函数 | int misc_deregister(struct miscdevice * misc) |
---|
参数 | 要注销的miscdevice结构体 |
返回值 | 成功返回 0,失败返回负数。 |
查看
- 主设备号
cat /proc/devices
- 杂项设备次设备号
cat /proc/misc
- 主设备号和次设备号等
ls /dev/miscdev_test -l
这里的miscdev_test
就是miscdevice
结构体.name
成员