misc子系統(tǒng)在Linux中是一個(gè)非常簡(jiǎn)單的子系統(tǒng),但是其清晰的框架結(jié)構(gòu)非常適合用來(lái)研究設(shè)備識(shí)別模型。本文從misc子系統(tǒng)的使用出發(fā),通過(guò)了解其機(jī)制來(lái)總結(jié)一套的設(shè)備識(shí)別的驅(qū)動(dòng)框架,即使用使用同一個(gè)驅(qū)動(dòng),向上提供多個(gè)設(shè)備文件接口,向下控制多個(gè)(相應(yīng)的)設(shè)備,這就需要該驅(qū)動(dòng)可以根據(jù)不同的設(shè)備文件來(lái)控制與之相應(yīng)的設(shè)備。

misc的使用

Linux 中有三大類(lèi)設(shè)備:字符,網(wǎng)絡(luò),塊設(shè)備,每一種設(shè)備又細(xì)分為很多類(lèi),比如字符設(shè)備就被預(yù)先分為很多種類(lèi),并在文件中標(biāo)記了這些種類(lèi)都使用了哪個(gè)主設(shè)備號(hào),但即便如此,硬件千千萬(wàn),總還是有漏網(wǎng)之魚(yú),對(duì)于這些難以劃分類(lèi)別的字符設(shè)備,Linux中使用"混雜",設(shè)備來(lái)統(tǒng)一描述,并分配給他們一個(gè)共同的主設(shè)備號(hào)10,只用此設(shè)備號(hào)進(jìn)行區(qū)分設(shè)備,,這些設(shè)備主要包括隨機(jī)數(shù)發(fā)生器,LCD,時(shí)鐘發(fā)生器等。此外,和很多同樣是對(duì)cdev進(jìn)行再次封裝的子系統(tǒng)一樣,misc也會(huì)自動(dòng)創(chuàng)建設(shè)備文件,免得每次寫(xiě)cdev接口都要使用class_create()和device_create()等。

內(nèi)核中提供的misc對(duì)象:

//include/linux/miscdevice.h
 55 struct miscdevice  {    
 56         int minor; 57         const char *name; 58         const struct file_operations *fops; 59         struct list_head list; 60         struct device *parent; 61         struct device *this_device; 62         const char *nodename; 63         umode_t
        
		

網(wǎng)友評(píng)論