自动创建节点的字符杂项设备 misc_register
2017-02-16 17:33
363 查看
杂项设备
Linux里面的misc杂项设备是主设备号为10的驱动设备
定义头文件: <linux/miscdevice.h>
结构体:
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 <linux/module.h>
#include <linux/fs.h>
#include <miscdevice.h>
#include <linux/init.h>
#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");
Linux里面的misc杂项设备是主设备号为10的驱动设备
定义头文件: <linux/miscdevice.h>
结构体:
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 <linux/module.h>
#include <linux/fs.h>
#include <miscdevice.h>
#include <linux/init.h>
#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");
相关文章推荐
- 自动创建节点的字符杂项设备 misc_register
- 自动创建节点的字符杂项设备 misc_register
- 字符设备驱动程序之自动创建设备节点
- linux字符设备驱动 自动创建设备节点的的方法
- linux字符设备驱动总结之:全自动创建设备及节点
- Linux 字符设备驱动结构(二)—— 自动创建设备节点
- TQ2440 LINUX 2.6.30.4 LED驱动感言,从最初的打印字符,到自动分配设备号,到自动创建设备节点,到此设备号分控led
- Linux 字符设备驱动结构(二)—— 自动创建设备节点
- linux驱动开发之字符设备--自动创建设备节点
- linux字符驱动之自动创建设备节点
- 字符杂项设备 misc_register
- 字符设备驱动程序之自动创建设备节点
- linux字符驱动之自动创建设备节点
- 字符设备驱动程序之自动创建设备节点
- linux字符设备驱动总结之:全自动创建设备及节点
- 字符杂项设备 misc_register
- TQ2440 LINUX 2.6.30.4 LED驱动感言,从最初的打印字符,到自动分配设备号,到自动创建设备节点,到次设备号分控led
- Linux字符设备驱动自动创建设备节点
- Linux 字符设备驱动结构(二)—— 自动创建设备节点
- linux字符驱动之自动创建设备节点