1.设备号的获取

\qquad设备号的获取方法:自动分配;指定设备号注册

2.自动分配函数

\qquad函数:int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name)
\qquad功能:分配设备号
\qquad参数:第一个参数:dev_t类型定义的变量,取地址传入;第二个参数:次设备号,次设备号自己指定;第三个参数:设备个数;第四个参数:名字
\qquad返回值:成功返回0;失败返回负数错误码

int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name)
{struct char_device_struct *cd;cd = __register_chrdev_region(0, baseminor, count, name);if (IS_ERR(cd))return PTR_ERR(cd);*dev = MKDEV(cd->major, cd->baseminor);return 0;
}

3.指定设备号注册

\qquad函数:int register_chrdev_region(dev_t from, unsigned count, const char *name)
\qquad功能:指定设备号注册
\qquad参数:第一个参数:设备号(MKDEV(major,minor));第二个参数:设备个数;第三个参数:名字
\qquad返回值:成功返回0;失败返回负数错误码

int register_chrdev_region(dev_t from, unsigned count, const char *name)
{struct char_device_struct *cd;dev_t to = from + count;dev_t n, next;for (n = from; n < to; n = next) {next = MKDEV(MAJOR(n)+1, 0);if (next > to)next = to;cd = __register_chrdev_region(MAJOR(n), MINOR(n),next - n, name);if (IS_ERR(cd))goto fail;}return 0;
fail:to = n;for (n = from; n < to; n = next) {next = MKDEV(MAJOR(n)+1, 0);kfree(__unregister_chrdev_region(MAJOR(n), MINOR(n), next - n));}return PTR_ERR(cd);
}

4.注销设备号

\qquad函数:void unregister_chrdev_region(dev_t from, unsigned count)
\qquad功能:注销设备号
\qquad参数:第一个参数:设备号;第二个参数:设备个数
\qquad返回值:void

void unregister_chrdev_region(dev_t from, unsigned count)
{dev_t to = from + count;dev_t n, next;for (n = from; n < to; n = next) {next = MKDEV(MAJOR(n)+1, 0);if (next > to)next = to;kfree(__unregister_chrdev_region(MAJOR(n), MINOR(n), next - n));}
}

linux的驱动开发——设备号相关推荐

  1. 树莓派基于Linux内核驱动开发详解

    一.驱动认知 首先理解Linux内核框图 文件系统认知,Linux内核框图 1.什么是驱动 linux内核驱动.软件层面上的驱动 广义上是指:这一段代码操作了硬件去动,所以这一段代码就叫硬件的驱动程序 ...

  2. Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)

    一.前言 块设备主要为存储设备设计的框架. 在前面章节Linux下驱动开发_块设备驱动开发(内存模拟存储) 里介绍了块设备驱动编写思路,并且利用内存模拟了硬件存储,完成了块设备驱动开发测试.这一篇文章 ...

  3. Linux字符驱动开发学习总结

    linux驱动编写(虚拟字符设备编写) 昨天我们说了一些简单模块编写方法,但是终归没有涉及到设备的编写内容,今天我们就可以了解一下相关方面的内容,并且用一个实例来说明在linux上面设备是如何编写的. ...

  4. linux cached释放_正点原子Linux第四十一章嵌入式Linux LED驱动开发实验

    1)资料下载:点击资料即可下载 2)对正点原子Linux感兴趣的同学可以加群讨论:935446741 3)关注正点原子公众号,获取最新资料更新 第四十一章嵌入式Linux LED驱动开发实验 上一章我 ...

  5. Linux下驱动开发

    Linux下驱动开发 1.简介   驱动,是指驱动计算机里软件的程序.驱动程序全称设备驱动程序,是添加到操作系统中的特殊程序,其中包含有关硬件设备的信息.驱动程序是操作系统与硬件连接的桥梁.   设备 ...

  6. 【正点原子Linux连载】第四十一章 嵌入式Linux LED驱动开发实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  7. Linux USB 驱动开发实例(七)—— 基于USB 总线的无线网卡浅析

    回顾一下USB的相关知识 USB(Universal Serial Bus)总线又叫通用串行外部总线, 它是20世纪90年代发展起来的.USB接口现在得到了广泛的应用和普及,现在的PC机中都带有大量的 ...

  8. 国嵌Linux视频驱动开发

    1 Linux PCI.串口驱动程序 1.1 PCI总线概述 总线概念 总线是一种传输信号的信道;总线是连接一个或多个导体的电气连线.总线由电气接口和编程接口组成,我们重点关注编程接口. PCI概念 ...

  9. STM32MP157驱动开发——设备树下的LED驱动

    STM32MP157驱动开发--设备树下的LED驱动 主要内容:将之前章节中使用新设备设备驱动编写的LED驱动改成设备树形式 文章目录 STM32MP157驱动开发--设备树下的LED驱动 一.主要步 ...

最新文章

  1. b+树时间复杂度_深入理解数据库系统之存储存引擎(二叉搜索树)
  2. MySQL 基础---数据库维护和性能提高
  3. OSError: [Errno 1] Operation not permitted 问题解决
  4. java基础—集合 Vcetor 基本方法演示
  5. C#调用SQL Server参数过程传参
  6. sql 相加_Java整数相加溢出怎么办?Java 8 还是厉害!
  7. 点击button自动提交表单原因及解决方案
  8. 欧洲英语语言c1证书,威尼斯大学认可的英语语言证书
  9. cstring判断包含字符串_Power Query中判断字符串中是否包含有字母的三种解决办法...
  10. 小规模零申报完整报税流程
  11. 一个MySQL优化案例的初步思路(r8笔记第87天)
  12. 中国成为全球最活跃5G市场
  13. vs2019配置glfw、glad等环境
  14. 设计模式七大原则——依赖倒转原则
  15. 用canvas画“哆啦A梦”时钟
  16. Java学习笔记【10】常用类 - - Math类、Random类及随机数详解
  17. 关于PPP拨号的接入点
  18. 服装行业要渡“疫情劫”,赢家时尚凭什么成为增长样本?
  19. FPGA数字信号处理(四)Quartus FIR IP核实现
  20. 网站url生成二维码

热门文章

  1. 程序员面试金典 - 面试题 04.02. 最小高度树(二叉搜索树中序遍历)
  2. LeetCode 496. 下一个更大元素 I(哈希)
  3. 数据结构--栈--顺序栈/链式栈(附: 字符括号合法配对检测)
  4. 人生苦短,我用Python(Python快速教程 - 基础篇)
  5. XPath和lxml类库
  6. Django其他(站点、列表、上传
  7. AllenAI 发布万能问答系统 MACAW!各类题型样样精通,性能大幅超越 GPT-3!
  8. Redis 高负载下的中断优化
  9. 论文浅尝 | 用于视觉推理的显式知识集成
  10. 论文浅尝 | 当Hearst还不够时:用分布模型来提升语料库中的上下义关系检测