0>概述:
                杂设备注册是非常简单的一种注册方式,自动在/dev/下创建设备文件,主设备号固定为10。
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1>源码:

点击(此处)折叠或打开

  1. #include <linux/init.h>
  2. #include <linux/module.h>
  3. #include <linux/kernel.h>
  4. #include <linux/types.h>
  5. #include <linux/fs.h>
  6. #include <linux/miscdevice.h>

  7. int misc_open(struct inode *inodep, struct file *filep)
  8. {
  9.         printk("misc_dev minor = %d\n", MINOR(inodep->i_rdev));
  10.         printk("misc_dev major = %d\n", imajor(inodep));

  11.         return 0;

  12. }

  13. ssize_t misc_read(struct file *filep, char *buf, size_t count, loff_t *f_pos)
  14. {
  15.         printk("misc_read ......\n");

  16.         return 0;
  17. }


  18. static struct file_operations fops = {
  19.         .owner = THIS_MODULE,
  20.         .open = misc_open,
  21.         .read = misc_read,
  22. };


  23. static struct miscdevice misc_led = {
  24.         .minor = MISC_DYNAMIC_MINOR, //动态分配次设备号
  25.         .name = "MISC_LED",         //出现在/dev/下
  26.         .fops = &fops,
  27. };

  28. static int __init misc_init(void)
  29. {
  30.         printk("misc_led \n");
  31.         return misc_register(&misc_led);
  32. }

  33. static void __exit misc_exit(void)
  34. {
  35.         printk("Bye bye!\n");
  36.         misc_deregister(&misc_led);

  37. }

  38. module_init(misc_init);
  39. module_exit(misc_exit);

  40. MODULE_LICENSE("GPL");
  41. ~
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
3> 测试
           ls -lh /dev/MISC_LED
            ........






10-08 08:12