linux的驱动开发——设备号

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

说好的「机器人出租车」和「自动驾驶汽车」,到底在哪? 原创 我爱至尊宝 科技行者 昨天...

来源&#xff1a;TheNexWeb编译整理&#xff1a;科技行者再有几周就到万圣节了&#xff0c;今年让人害怕的东西可不止是鬼怪、还有更多晦暗不明的新难题。 就拿自动驾驶汽车来说&#xff0c;技术人员直到现在也不清楚怎么才能在完全无需人类介入的情况下实现自主行驶。哪怕是代…

在Windows平台下使用Gitblit搭建Git服务器图文解说

Windows平台下Git服务器搭建 一.java环境变量的设置 下载jdk并配置jdk的环境变量&#xff0c;JAVA_HOME,CLASSPATH以及PATH&#xff0c;最后在DOS窗口输入java -version检验是否配置成功。这里参见jdk环境变量配置相关教程。 二.下载新版Gitblit.下载地址&#xff1a;http://ww…

【计算机网络复习 数据链路层】3.5.3 CSMA协议

CSMA协议3.5.3 CSMA协议一、CSMA协议1.1 1-坚持CSMA1.2 非坚持CSMA1.3 p-坚持CSMA3.5.3 CSMA协议 一、CSMA协议 载波监听多路访问协议CSMA&#xff08;&#xff43;&#xff41;&#xff52;&#xff52;&#xff49;&#xff45;&#xff52; &#xff53;&#xff45;&…

linux的系统移植——序言

1.单片机裸机和带有操作系统OS的区别 \qquad裸机有三层&#xff0c;从上至下依次为&#xff1a;应用层、驱动层、硬件层&#xff1b;而带有OS的单片机有四层&#xff0c;从上至下依次为&#xff1a;应用层、内核层、驱动层、硬件层。 2.系统移植学习内容 \qquad四大块&#xf…

“厌氧动物”出现,科学家不清楚代谢方式,或颠覆对生命的认知

来源&#xff1a;科学杂志众所周知&#xff0c;动物的生存的基本条件就是氧气。日常生活中&#xff0c;我们不会感到氧气的存在&#xff0c;因为它是无色无味且无处不在的。可以说&#xff0c;地球上能孕育生命的原因除了有水资源以外&#xff0c;氧气的存在也是重中之重。可当…

【计算机网络复习 数据链路层】3.5.4 CSMA-CD协议

CSMA-CD协议3.5.4 CSMA/CD协议一、CSMA/CD协议二、传播时延对载波监听的影响三、截断二进制指数规避算法四、最小帧长问题3.5.4 CSMA/CD协议 一、CSMA/CD协议 载波监听多点接入/碰撞检测 CSMA/CD&#xff08;carrier sense multiple access with collision detection&#xf…

GB28181开放流媒体服务平台LiveGBS实际测试时问题排查

背景 在安防监控行业中GB28181协议可以实现获取直播流、录像、报警信息、通道状态等各种信息&#xff0c;基本满足了监控行业中的全部需求。LiveGBS就是一套开放的GB28181流媒体服务平台&#xff0c;提供用户私有化部署、提供标准RESTFul HTTP接口用于二次开发&#xff0c;将视…

6G网络智能内生的思考

来源&#xff1a;6G俱乐部作者&#xff1a;李琴&#xff0c;李唯源&#xff0c;孙晓文&#xff0c;胡玉双&#xff1a;中国移动通信有限公司研究院研究员。孙滔&#xff1a;中国移动通信有限公司研究院主任研究员、网络创新实验室技术经理。面向6G时代&#xff0c;网络将迎来新…

linux的系统移植——交叉编译器

1.为什么要有交叉编译器&#xff1f; \qquad一般电脑是X86架构&#xff0c;而单片机一般不是&#xff0c;比如单片机是ARM架构&#xff0c;那么gcc编译生成的程序只能在X86的架构上运行&#xff0c;而不能在ARM架构上运行&#xff0c;所以需要交叉编译器编译生成能在ARM架构上运…

【计算机网络复习 数据链路层】3.5.5 CSMA-CA协议

CSMA-CA协议CSMA/CA协议一、CSMA/CA协议二、CSMA/CD 与 CSMA/CACSMA/CA协议 一、CSMA/CA协议 载波监听多点接入/碰撞避免 CSMA/CA&#xff08;carrier sense multiple access with collision avoidance&#xff09; 发送数据前&#xff0c;先检测信道是否空闲。 空闲则发出…

实验四3

#include "stdafx.h" #include "stdio.h"int main(int argc, char* argv[]) {char a[81];int i;int num0,word0;char c;gets(a);for(i0;(ca[i])!\0;i)if(c )word0;else if(word0){word1;num;}printf("%d\n",num);return 0; } 转载于:https://www…

3 个问题:MIT专家论述关于阻碍AutoML发展的障碍

来源&#xff1a;ScienceAI编译&#xff1a;萝卜皮研究人员希望更多用户友好的机器学习系统将使非专家能够分析大数据——但这样的系统能完全自主吗&#xff1f;麻省理工学院计算机科学家 Kalyan Veeramachaneni 分享了他对自动化机器学习 &#xff08;AutoML&#xff09;现状、…

linux的系统移植——交叉编译工具集

1.交叉编译工具集 \qquad在我们安装交叉工具集时&#xff0c;不仅安装了arm-linux-gnueabi-gcc &#xff0c;还安装了很多工具&#xff0c;它们共同构成交叉编译工具集。 arm-linux-gnueabi-addr2line arm-linux-gnueabi-gcov-tool arm-linux-gnueabi-ar arm-linux…

【计算机网络复习 数据链路层】3.6.1 局域网

局域网基本概念和体系结构局域网基本概念和体系结构一、局域网二、局域网拓扑结构三、局域网介质访问控制方法四、局域网的分类五、MAC子层和LLC子层局域网基本概念和体系结构 一、局域网 局域网 &#xff08;Local Area Network&#xff09;&#xff1a;简称LAN&#xff0c;…

佐治亚理工学院发文:不要迷信可解释性,小心被误导

来源&#xff1a;AI科技评论编译:王晔校对: 琰琰可解释性对人工智能发展来说至关重要&#xff0c;但在可解释系统的可信度方面&#xff0c;理解其可能带来的负面效应亦同等重要。近日&#xff0c;佐治亚理工学院研究团队发表最新研究&#xff0c;重点讨论了可解释人工智能系统&…

【计算机网络复习 数据链路层】3.6.2 以太网

以太网一、以太网概述二、以太网提供无连接、不可靠的服务三、以太网传输介质与拓扑结构的发展四、10BASE-T以太网五、适配器与MAC地址六、以太网MAC帧七、高速以太网一、以太网概述 以太网&#xff08;Ethernet&#xff09;指的是由Xerox公司创建并由Xerox、Intel和DEC公司联…

软件开发冲刺1

站立会议&#xff1a; 分配好任务&#xff0c;在队长的带领下开始了为期十天的软件开发冲刺&#xff0c;我们做的是一款聊天无课表软件有了目标就有了动力。我们先对我们的产品做了一个详细的规划&#xff0c;指定每天的任务量&#xff0c;调试好开发环境&#xff0c;做好一切准…

linux的系统移植——【PC-开发板】的环境搭建

1.主机数据如何传递到开发板&#xff1f; \qquad普通uboot kernel传递到开发板&#xff0c;一般会使用网络接口tftp&#xff1b; 2.环境搭建&#xff1a;台式机环境搭建 \qquad第一种情况是&#xff1a;路由器环境。把电脑和开发板利用网线都连接到同一个路由器上&#xff1b;…

一文了解机器人伺服系统

来源&#xff1a;传感器技术工业机器人有4大组成部分&#xff0c;分别为本体、伺服、减速器和控制器。而其中&#xff0c;工业机器人电动伺服系统的一般结构为三个闭环控制&#xff0c;即电流环、速度环和位置环。一般情况下&#xff0c;对于交流伺服驱动器&#xff0c;可通过对…

zookeeper学习入门

使用dubbo&#xff0c;要使用zookeeper&#xff0c;在为了解到这个中间件时&#xff0c;我什么也不知道&#xff0c;好在安装很容易&#xff0c;于是安装上&#xff0c;通过命令行体验了一把。最开始的感觉就是建立一个类似于树的存储结构&#xff0c;然后存取数据&#xff0c;…