当前位置: 首页 > wzjs >正文

网站海外推广服务做网站平台的公司

网站海外推广服务,做网站平台的公司,金融业反洗钱培训网站,小说小程序搭建【字符设备驱动开发–IMX6ULL】(二)Linux 设备号 文章目录 【字符设备驱动开发–IMX6ULL】(二)Linux 设备号1 设备号的组成2.设备号的分配 1 设备号的组成 为了方便管理,Linux 中每个设备都有一个设备号,设…

【字符设备驱动开发–IMX6ULL】(二)Linux 设备号

文章目录

  • 【字符设备驱动开发–IMX6ULL】(二)Linux 设备号
    • 1 设备号的组成
    • 2.设备号的分配

1 设备号的组成

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

Linux 提供了一个名为 dev_t 的数据类型表示设备号,dev_t 定义在文件 include/linux/types.h 里面,定义如下:

12 typedef __u32 __kernel_dev_t;
......
15 typedef __kernel_dev_t dev_t;

可以看出 dev_t 是__ u32 类型的,而__u32 定义在文件 include/uapi/asm-generic/int-ll64.h 里面,定义如下:

26 typedef unsigned int __u32;

综上所述,dev_t 其实就是 unsigned int 类型,是一个 32 位的数据类型。这 32 位的数据构成了主设备号和次设备号两部分,其中高 12 位为主设备号,低 20 位为次设备号。因此 Linux系统中主设备号范围为 0~4095,所以大家在选择主设备号的时候一定不要超过这个范围。

在文件 include/linux/kdev_t.h 中提供了几个关于设备号的操作函数(本质是宏),如下所示:

//宏 MINORBITS 表示次设备号位数,一共是 20 位。
#define MINORBITS 20
//宏 MINORMASK 表示次设备号掩码。
#define MINORMASK ((1U << MINORBITS) - 1)
//宏 MAJOR 用于从 dev_t 中获取主设备号,将 dev_t 右移 20 位即可。
#define MAJOR(dev) ((unsigned int) ((dev) >> MINORBITS))
//宏 MINOR 用于从 dev_t 中获取次设备号,取 dev_t 的低 20 位的值即可。
#define MINOR(dev) ((unsigned int) ((dev) & MINORMASK))
//宏 MKDEV 用于将给定的主设备号和次设备号的值组合成 dev_t 类型的设备号。
#define MKDEV(ma,mi) (((ma) << MINORBITS) | (mi))

2.设备号的分配

1、静态分配设备号

注册字符设备的时候需要给设备指定一个设备号,这个设备号可以是驱动开发者静态的指定一个设备号,比如选择 200 这个主设备号。有一些常用的设备号已经被 Linux 内核开发者给分配掉了,具体分配的内容可以查看文档 Documentation/devices.txt

并不是说内核开发者已经分配掉的主设备号我们就不能用了,具体能不能用还得看我们的硬件平台运行过程中有没有使用这个主设备号,使用“cat /proc/devices”命令即可查看当前系统中所有已经使用了的设备号。

2、动态分配设备号

静态分配设备号需要我们检查当前系统中所有被使用了的设备号,然后挑选一个没有使用的。而且静态分配设备号很容易带来冲突问题,Linux 社区推荐使用动态分配设备号,在注册字符设备之前先申请一个设备号,系统会自动给你一个没有被使用的设备号,这样就避免了冲突。卸载驱动的时候释放掉这个设备号即可。

申请设备号函数如下:

int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name)
  • dev:保存申请到的设备号。
  • baseminor:次设备号起始地址,alloc_chrdev_region 可以申请一段连续的多个设备号,这些设备号的主设备号一样,但是次设备号不同,次设备号以 baseminor 为起始地址地址开始递增。一般 baseminor 为 0,也就是说次设备号从 0 开始。
  • count:要申请的设备号数量。
  • name:设备名字。

注销字符设备之后要释放掉设备号,设备号释放函数如下:

void unregister_chrdev_region(dev_t from, unsigned count)
  • from:要释放的设备号。
  • count:表示从 from 开始,要释放的设备号数量。

文章转载自:

http://HzDldMXU.dywgL.cn
http://yPGbNpx9.dywgL.cn
http://bn4KcEXv.dywgL.cn
http://XrJpYzqb.dywgL.cn
http://MVH0xyyu.dywgL.cn
http://J1nEkGCm.dywgL.cn
http://lR09WMLj.dywgL.cn
http://ZCGftdzG.dywgL.cn
http://4qcr5pK7.dywgL.cn
http://92Ab937H.dywgL.cn
http://JBJvJvVt.dywgL.cn
http://UiVwYyvB.dywgL.cn
http://IsBRyZKN.dywgL.cn
http://7VgueIEU.dywgL.cn
http://f9hinfg5.dywgL.cn
http://fcNmw4VA.dywgL.cn
http://eBUEuRKb.dywgL.cn
http://LlTE6Jvk.dywgL.cn
http://b1nMk2qN.dywgL.cn
http://krduDmaV.dywgL.cn
http://BU5CS3tT.dywgL.cn
http://ZNVwXy7y.dywgL.cn
http://xzLNCFZq.dywgL.cn
http://rtyJ1LkM.dywgL.cn
http://OrXgYynU.dywgL.cn
http://TPItorMl.dywgL.cn
http://TXsJ2cS3.dywgL.cn
http://KbqrtGxh.dywgL.cn
http://5s3kRxR1.dywgL.cn
http://teuBsBVM.dywgL.cn
http://www.dtcms.com/wzjs/679133.html

相关文章:

  • app 微网站定制网站
  • 网站做视频的软件工业设计属于什么专业类别
  • 产品网站开发宁波外贸网站推广
  • jsp网站建设教程百姓装潢上海门店具体地址
  • 哈尔滨免费自助建站模板网站突然消失了
  • 网站建设公司哪家好?建设一个国外服务器的网站
  • 珠海定制网站制作WordPress取消强密码
  • 湖州网站建设湖州湖北seo服务
  • 诸城高密网站建设动漫设计学校
  • 网站后台都需要什么软件做北京网络优化推广公司
  • 织梦网站搬迁网站域名的密码
  • 扬州建设信用网站html5静态网站
  • 济南网站建设 选搜点owordpress 链接修改密码
  • 如何做类似优酷的视频网站万维网官方网站
  • 网站建设数据库配置厦门入夏网站建设公司
  • 在线购物商城网站怎样将自己做的网页加入网站
  • 小伙做网色网站通过高新区网站建设
  • 沈阳高铁站wordpress 建站简单吗
  • 房九九西安房产网北京seo顾问
  • 域名搭建网站网站开发的研究计划书
  • 销售机械设备做网站app开发公司倒闭了怎么办
  • 上海住房和城市建设厅网站市场调研公司存在的意义
  • 不能上传图片到网站顺义区做网站
  • 渭南网站建设公司顾村网站建设
  • 网站开发合同 黑客攻击条款哪个网页设计培训机构好
  • 网站后台修改图片集顺序广州白云区哪里封了
  • 网站建设后怎么赚钱唐山市住房和城乡建设局门户网站
  • 网站开发新闻管理系统的背景华大集团 北京网站建设
  • cnzz网站建设wordpress 评论500
  • 郫县哪里有做网站的中国互联网金融协会