五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Linux驅(qū)動(dòng)之cdev結(jié)構(gòu)和MKDEV宏

2023-05-10 11:15 作者:有AI野心的電工和碼農(nóng)  | 我要投稿

MKDEV宏 功能:將主設(shè)備號(hào)和次設(shè)備號(hào)轉(zhuǎn)換成dev_t類型

cdev結(jié)構(gòu)

Linux2.6內(nèi)核中一個(gè)字符設(shè)備用cdev結(jié)構(gòu)來描述,其定義如下:

可以使用如下宏調(diào)用來獲得主、次設(shè)備號(hào):

MAJOR(dev_t dev)?

MINOR(dev_t dev)?

MKDEV(int major,int minor) //通過主次設(shè)備號(hào)來生成dev_t

以上宏調(diào)用在內(nèi)核源碼中如此定義:

參數(shù)介紹

  • ma 為主設(shè)備號(hào)

  • mi 為次設(shè)備號(hào)

返回值:成功執(zhí)行返回dev_t類型的設(shè)備編號(hào)

我的理解是ma是主設(shè)備號(hào),mi是次設(shè)備號(hào)

主設(shè)備號(hào)由dev_t的高位表示

次設(shè)備號(hào)是dev_t的低位

我感覺MKDEV應(yīng)該是把主設(shè)備號(hào)和次設(shè)備號(hào)合成dev_t

下面一組函數(shù)用來對(duì)cdev結(jié)構(gòu)體進(jìn)行操作:

在注冊(cè)時(shí)應(yīng)該先調(diào)用:int register_chrdev_region(dev_t from,unsigned count,const char *name)函數(shù)為其分配設(shè)備號(hào),此函數(shù)可用:int alloc_chrdev_region(dev_t *dev,unsigned baseminor,unsigned count,const char *name)函數(shù)代替,他們之間的區(qū)別在于register_chrdev_region()用于已知設(shè)備號(hào)時(shí),另一個(gè)用于動(dòng)態(tài)申請(qǐng),其優(yōu)點(diǎn)在于不會(huì)造成設(shè)備號(hào)重復(fù)的沖突。

在注銷之后,應(yīng)調(diào)用:void unregister_chrdev_region(dev_t from,unsigned count)函數(shù)釋放原先申請(qǐng)的設(shè)備號(hào)。

他們之間的順序關(guān)系如下:

register_chrdev_region()?-->?cdev_add()?//此過程在加載模塊中

cdev_del()?-->?unregister_chrdev_region()?//此過程在卸載模塊中

后記: 這一套2.X內(nèi)核的驅(qū)動(dòng)相關(guān)技術(shù),現(xiàn)在好像是過時(shí)了,以茲紀(jì)念。


Linux驅(qū)動(dòng)之cdev結(jié)構(gòu)和MKDEV宏的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
濮阳市| 和平县| 蕲春县| 乐业县| 基隆市| 岑巩县| 田林县| 潜山县| 景东| 黔西县| 通化县| 潞西市| 柳江县| 遂平县| 怀宁县| 贵州省| 科技| 崇礼县| 江源县| 尉犁县| 石渠县| 连平县| 东明县| 北宁市| 古浪县| 济源市| 加查县| 鄱阳县| 灵寿县| 东源县| 个旧市| 延寿县| 绿春县| 山东省| 普洱| 三明市| 勐海县| 兴海县| 望奎县| 从化市| 永年县|