杂设备注册是非常简单的一种注册方式,自动在/dev/下创建设备文件,主设备号固定为10。
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1>源码:
点击(此处)折叠或打开
-
#include <linux/init.h>
-
#include <linux/module.h>
-
#include <linux/kernel.h>
-
#include <linux/types.h>
-
#include <linux/fs.h>
-
#include <linux/miscdevice.h>
-
-
int misc_open(struct inode *inodep, struct file *filep)
-
{
-
printk("misc_dev minor = %d\n", MINOR(inodep->i_rdev));
-
printk("misc_dev major = %d\n", imajor(inodep));
-
-
return 0;
-
-
}
-
-
ssize_t misc_read(struct file *filep, char *buf, size_t count, loff_t *f_pos)
-
{
-
printk("misc_read ......\n");
-
-
return 0;
-
}
-
-
-
static struct file_operations fops = {
-
.owner = THIS_MODULE,
-
.open = misc_open,
-
.read = misc_read,
-
};
-
-
-
static struct miscdevice misc_led = {
-
.minor = MISC_DYNAMIC_MINOR, //动态分配次设备号
-
.name = "MISC_LED", //出现在/dev/下
-
.fops = &fops,
-
};
-
-
static int __init misc_init(void)
-
{
-
printk("misc_led \n");
-
return misc_register(&misc_led);
-
}
-
-
static void __exit misc_exit(void)
-
{
-
printk("Bye bye!\n");
-
misc_deregister(&misc_led);
-
-
}
-
-
module_init(misc_init);
-
module_exit(misc_exit);
-
-
MODULE_LICENSE("GPL");
- ~
3> 测试
ls -lh /dev/MISC_LED
........