linux 杂项设备,Linux下自动创建节点的字符杂项设备 misc_register

Linux下自动创建节点的字符杂项设备 misc_register

admin • 2020 年 01 月 07 日

杂项设备

Linux里面的misc杂项设备是主设备号为10的驱动设备

定义头文件:

结构体:

struct miscdevice {

int minor;

const char *name;

const struct file_operations *fops;

struct list_head list;

struct device *parent;

struct device *this_device;

const char *nodename;

mode_t mode;

};

minor 是misc设备的副设备号,misc设备主要依赖minor去区分

如果设置为MISC_DYNAMIC_MINOR则表示系统自动分配未使用的minor

nodename 是在/dev下面创建的设备驱动节点

fops 是驱动主体处理函数入口指针

注册和释放

注册

int misc_register(struct miscdevice * misc);

释放

int misc_deregister(struct miscdevice *misc);

misc_device 是特殊的字符设备。注册驱动程序时采用misc_register函数注册,此函数中会自动创建设备节点,即设备文件。无需mknod指令创建设备文件。 因为misc_register()会调用class_device_create()或者device_create()。

*********************************************************************************************

#include

#include

#include

#include

#define MISC_NAME "miscdriver"

static int misc_open(struct inode *inode, struct file *file)

{

printk("misc open\n");

return 0;

}

static const struct file_operations misc_fops =

{

.owner = THIS_MODULE,

.open = misc_open,

};

static struct miscdevice misc_dev =

{

.minor = MISC_DYNAMIC_MINOR,

.name = MISC_NAME,

.fops = &misc_fops,

};

static int __init misc_init(void)

{

int ret;

ret = misc_register(&misc_dev);

if (ret)

{

printk("misc_register error\n");

return ret;

}

return 0;

}

static void __exit misc_exit(void)

{

misc_deregister(&misc_dev);

}

module_init(misc_init);

module_exit(misc_exit);

MODULE_LICENSE("GPL");

MODULE_AUTHOR("XXX");

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值