一、请简述主设备号和次设备号的用途

Linux 中每个设备都有一个设备号,设备号由主设备号和次设备号两部分组成,主设备号表示某一个具体的驱动,次设备号表示使用这个驱动的各个设备。

Linux 提供了一个名为 dev_t 的数据类型表示设备号,dev_t 其实就是 unsigned int 类型,是一个 32 位的数据类型。这 32 位的数据构成了主设备号和次设备号两部分,其中高 12 位为主设备号,低 20 位为次设备号。


二、设备号的分配方式

1、静态分配

检查当前系统中所有被使用了的设备号,然后静态的指定一个设备号。

“cat /proc/devices”命令即可查看当前系统中所有已经使用了的设备号(查看系统中所有的设备)。

如果给定了设备的主设备号和次设备号就使用如下所示函数来注册设备号即可: 
int register_chrdev_region(dev_t from, unsigned count, const char *name)

2、动态分配

静态分配设备号很容易带来冲突问题,Linux 社区推荐使用动态分配设备号,在注册字符设备之前先申请一个设备号,系统会自动给你一个没有被使用的设备号,这样就避免了冲突。

如果没有指定设备号的话就使用如下函数来申请设备号:

int register_chrdev_region(dev_t from, unsigned count, const char *name)

不管是通过 alloc_chrdev_region 函数还是register_chrdev_region 函数申请的设备号,统一使用如下释放函数:

void unregister_chrdev_region(dev_t from, unsigned count)

【001 设备驱动】主设备号和次设备号的用途相关推荐

  1. linux 块设备驱动(二)——块设备数据结构

    linux 块设备驱动(二)--块设备数据结构 本文来源于: 1. http://www.cnblogs.com/dyllove98/archive/2013/07/01/3165567.html 块 ...

  2. linux 设备驱动(一)——字符设备驱动

    linux 设备驱动(一)--字符设备驱动 一.概述 1.1 设备驱动介绍 1.2. 设备结构 1.2.1 设备号 1.2.2 驱动层次 1.3 设备驱动对外接口 1.4 设备驱动特点 二.字符设备驱 ...

  3. 设备驱动,字符设备驱动、(总线)设备驱动模型、sysfs文件系统、平台设备驱动

    以下内容转载于微信公众号:嵌入式企鹅圈.如有侵权,请告知删除. 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动.设备驱动模型和sysfs等相关概念和技术. 对于初学者来说会非常 ...

  4. linux块设备驱动(一)——块设备概念介绍

    linux块设备驱动(一)--块设备概念介绍 本文来源于: 1. http://blog.csdn.net/jianchi88/article/details/7212370 2. http://bl ...

  5. linux 块设备驱动 (三)块设备驱动开发

    linux 块设备驱动 (三)块设备驱动开发 一: 块设备驱动注册与注销 块设备驱动中的第1个工作通常是注册它们自己到内核,完成这个任务的函数是 register_blkdev(),其原型为: int ...

  6. [设备驱动] 最简单的内核设备驱动--字符驱动

    [设备驱动] 最简单的内核设备驱动--字符驱动  概要: x86平台上(linux-2.6.34.14;Linux debian 3.2.0-3-686-pae)编写一个256字节的字符驱动程序.在/ ...

  7. 字符设备驱动基础篇4——字符设备驱动读写接口的操作实践

    以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除. 参考资料:http://www.cnblogs.com/biaohc/p/6575074.html. 一.细节 1.自动分配主设备号 注册函 ...

  8. 字符设备驱动基础篇3——字符设备驱动工作原理

    以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除. 参考资料:http://www.cnblogs.com/biaohc/p/6575074.html. 1.系统整体工作原理 (1)应用层-& ...

  9. linux 内核块设备驱动,你了解Linux 块设备驱动?

    1 什么是Ramdisk Ramdisk是一种模拟磁盘,其数据实际上是存储在RAM中,它使用一部分内存空间来模拟出一个磁盘设备,并以块设备的方式来组织和访问这片内存.对于用户来说可以把Ramdisk与 ...

  10. linux 查看 pci 设备驱动,如何写linux pci设备驱动程序

    PCI总线应用领域及其广泛并且令人惊奇.不同的pci设备有不同的需求以及不同的问题.因此,在linux内核中pci层支持就非常重要啦.本文档就是想为驱动程序设计开发人员解决pci处理中的各种问题. 0 ...

最新文章

  1. mysql+redis
  2. 一种简单的数据库性能测试方法
  3. 大型门户网站架构设计的可伸缩性
  4. pythonjava解释xml_Python解析XML文档
  5. 非线编辑软件 linux,Flowblade 2.0 发布,非线性开源Linux视频编辑器
  6. linux版本的redis bin,redis-4.0.2.tar.gz for centos的linux系统版本下载(安装详细步骤)...
  7. Git学习总结(21)——Git 提交规范总结
  8. UI设计和UX设计有什么区别?
  9. html设置自定义光标,pixi.js 自定义光标样式
  10. python零基础学习书-零基础学习python推荐几本书?
  11. 【原创】《算法导论》链表一章带星习题试解——附C语言实现
  12. ubuntu安装mysql失败怎么删除_Ubuntu 14.04卸载安装失败的Mysql数据库,以及重新安装配置...
  13. file_operation(文件操作)file(文件)inode(节点)
  14. XRD结果如何做定量相分析
  15. 制造车间怎么推行5S管理?
  16. 植被物候参数遥感研究进展(好文分享)
  17. 计算机毕设 SpringBoot+Vue车辆租赁管理系统 网上汽车租赁系统 汽车租赁管理系统 汽车分时租赁系统Java Vue MySQL数据库 远程调试 代码讲解
  18. 管理信息系统(MIS)期末复习参考指南
  19. 服务器虚拟化有什么好处
  20. ubuntu 安装dep文件

热门文章

  1. 【scala安装Windows】
  2. 关于UDK GameFramework的一点总结
  3. UDK中让物体走抛物线
  4. layui中的ajax
  5. android toast 一直显示,android中toast无法显示问题
  6. 免费激活Windows系统以及office办公软件
  7. 衡量数据集中趋势的方法
  8. 使用Hive的web界面:HWI
  9. uboot-uboot网络初始化分析
  10. windows ce linux,Win CE + Linux双系统 总结