最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
景洪市| 盈江县| 天柱县| 布拖县| 来宾市| 和硕县| 石屏县| 济阳县| 玛多县| 梁平县| 临邑县| 浦城县| 吕梁市| 潍坊市| 海丰县| 分宜县| 嫩江县| 开化县| 侯马市| 长丰县| 涞源县| 海盐县| 舞钢市| 崇仁县| 长沙县| 湄潭县| 清新县| 蒲江县| 河北区| 手机| 白水县| 昭觉县| 郸城县| 屏山县| 汽车| 理塘县| 城固县| 龙泉市| 乌拉特中旗| 新田县| 华阴市|