杂设备注册是非常简单的一种注册方式,自动在/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
........