2019独角兽企业重金招聘Python工程师标准>>>

混杂设备是字符设备的一种,混杂设备(用miscdevice结构体表述)。miscdevice共享一个主设备号MISC_MAJOR(即10),但次设备号不同。 所有的miscdevice设备形成了一个链表,对设备访问时内核根据次设备号查找对应的miscdevice设备。

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;
};

通常情况下,一个字符设备都在初始化的过程中的步骤:

1,通过alloc_chrdev_region()分配主/次设备号。2,使用cdev_init()和cdev_add()来以一个字符设备注册自己。 详细介绍见http://my.oschina.net/u/274829/blog/283702

而一个misc驱动,则可以只用一个调用misc_register()来完成这所有的步骤。

使用流程

static int __init dev_init(void)
{int ret;ret = misc_register(&misc);  //注册设备号return ret;
}

设备结构

static struct miscdevice misc = {.minor = MISC_DYNAMIC_MINOR,  //这里注意,一般分配为0,意思:让系统自动分配,防止冲突.name = DEVICE_NAME,.fops = &dev_fops,
};

文件操作集

static struct file_operations dev_fops = {.owner    =    THIS_MODULE,.ioctl    =    leds_ioctl,
};static int sbc2440_leds_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
{switch(cmd) {case 0:....;break;default:return -EINVAL;}
}

退出注册

static void __exit dev_exit(void)
{misc_deregister(&misc);  //退出设备printk (DEVICE_NAME"\tuninstalled\n");
}

详细应用例程见ok6410-led流水灯控制文件 http://my.oschina.net/u/274829/blog/267552

转载于:https://my.oschina.net/u/274829/blog/285164

linux 混杂设备 miscdevice设备介绍相关推荐

  1. linux 混杂设备驱动之adc驱动

    linux2.6.30.4中,系统已经自带有了ADC通用驱动文件---arch/arm/plat-s3c24xx/adc.c,它是以平台驱动设备模型的架构来编写的,里面是一些比较通用稳定的代码,但是l ...

  2. linux卸载dev中的设备,Linux /dev 常见特殊设备介绍与应用

    linux是文件型系统,所有硬件如软件都会在对于的目录下面有相应的文件表示.对于dev这个目录,我们知道它下面的文件,表示的是linux的设备.在windows系统中,设备大家很好理解,象硬盘,磁盘指 ...

  3. Linux文件系统与持久性内存介绍:块设备、闪存(NAND/NOR)、NVDIMM(非易失性内存)、PMEM(PMDK)- ndctl

    <持久内存开发套件(Persistent Memory Development Kit-PMDK) - pmem.io: PMDK> <PMDK介绍> <PMDK(NVM ...

  4. 使用错误的设备树导致linux,Petalinux工程中设备树的介绍

    设备树是 Petalinux kernel 的关键组件,接下来以 2020.1 版本为例,为大家介绍一下在Xilinx Petalinux 工程中的设备树是如何产生,配置以及修改的. Petalinu ...

  5. linux黑洞设备的路径,linux dev 常见特殊设备介绍与应用(loop,null,zero,full,random)

    linux是文件型系统,所有硬件如软件都会在对于的目录下面有相应的文件表示.对于dev这个目录,我们知道它下面的文件,表示的是linux的设备.在windows系统中,设备大家很好理解,象硬盘,磁盘指 ...

  6. Linux驱动无硬件设备,Linux设备驱动与硬件通信

    Linux物理设备驱动,主要有几种类型,如:IO类.内存类.总线类.IO类我们平时接触的最多,其主要特点是,通过IO设备的寄存器操作硬件,具体需要去查看硬件手册. 1. IO端口和IO内存 在硬件层, ...

  7. Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化

    我们知道,SPI数据传输可以有两种方式:同步方式和异步方式.所谓同步方式是指数据传输的发起者必须等待本次传输的结束,期间不能做其它事情,用代码来解释就是,调用传输的函数后,直到数据传输完成,函数才会返 ...

  8. Linux SPI总线和设备驱动架构之三:SPI控制器驱动

    通过第一篇文章,我们已经知道,整个SPI驱动架构可以分为协议驱动.通用接口层和控制器驱动三大部分.其中,控制器驱动负责最底层的数据收发工作,为了完成数据的收发工作,控制器驱动需要完成以下这些功能: 1 ...

  9. 【Linux驱动】字符设备驱动

    一.linux系统将设备分为3类:字符设备.块设备.网络设备.使用驱动程序: 1.字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据.字符设备是面 ...

最新文章

  1. Android stadio 电脑连上手机可以识别,但是连不上Android stadio
  2. 苹果AirTag遭破解,网友放出“教程”,可重写程序,可能成为恶意跟踪“神器”...
  3. 【问题解决方案】CentOS7替换yum的问题:使用yum makecache出现File contains no section headers
  4. MySQL 8.0复制性能的提升(翻译)
  5. 【系列】关于直播,所有的技术细节都在这里了
  6. deepfake 资源总结
  7. 7-6 华氏度转摄氏度(四舍五入)
  8. SQL 考勤打卡问题
  9. 后盾网原创实战网站建设教程【PS切片+html+div+css+织梦后台...
  10. 彻底卸载360安全卫士的方法
  11. thymeleaf中三元运算符嵌套写法
  12. android 日历 签到,Android MaterialCalendarView 日历使用 每日签到
  13. 鸿蒙操作系统系列——LiteOS启动流程分析
  14. 你还不会用python进行数据分析吗
  15. (阿里云)Linux部署SSM项目全过程
  16. SPA单页面应用首屏加载速度提升方法
  17. 裸金属服务器是什么?有什么特点?
  18. TP5查询构造器查询语句select、find、colum、value详解
  19. linux系统玩ps3模拟器下载地址,【RPCS3模拟器】RPCS3模拟器下载(PS3模拟器) 电脑版-开心电玩...
  20. STM32Cube-直接存储器访问(DMA)

热门文章

  1. Java J2EE中的依赖查找
  2. “docker run”VS“docker exec”,这两个命令有区别吗?
  3. android 项目 功能 源码 eclipse的
  4. JVM 对象引用标记 与 内存回收算法
  5. shell截取字符串的8种方法
  6. 获取当前元素是第几个点击值
  7. Nginx之二:nginx.conf简单配置(参数详解)
  8. JavaScript 命名空间
  9. Android 中插件的编写方法
  10. flex皮肤制作---通过flash