国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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ó)家法律
长岭县| 徐汇区| 安国市| 平远县| 阜新| 姜堰市| 东兰县| 尉犁县| 襄垣县| 苍南县| 长泰县| 济宁市| 临武县| 江永县| 阳春市| 韶山市| 新河县| 泽库县| 炉霍县| 石渠县| 宁蒗| 渭源县| 丰都县| 醴陵市| 当涂县| 苏尼特左旗| 班玛县| 津市市| 松原市| 安泽县| 尉犁县| 乌兰县| 樟树市| 西城区| 英德市| 鄄城县| 黔南| 贵阳市| 富裕县| 隆安县| 涟水县|