總線驅(qū)動加載設(shè)備錯誤解決
![](http://editerupload.eepw.com.cn/fetch/20161101/330457_1_0.jpg)
![](http://editerupload.eepw.com.cn/fetch/20161101/330457_1_1.jpg)
從顯示的錯誤回執(zhí)表,我們你可以看出,是我們的match函數(shù)里面的strncmp函數(shù)錯了問題,訪問了空指針。?源代碼如下:?
![](http://editerupload.eepw.com.cn/fetch/20161101/330457_1_2.jpg)
到底哪里出了問題呢??我們明明訪問的dev->init_name,和drv->name,難道他們是空指針??
解決:?
我們找到內(nèi)核代碼:??
1、先從dev->init_name出發(fā)找到device的注冊函數(shù):?
![](http://editerupload.eepw.com.cn/fetch/20161101/330457_1_3.jpg)
進(jìn)入device_add:?
我們看到其中一段代碼,如果dev->init_name不為空則dev_set_name(dev, "%s", dev->init_name);最后將dev->init_name置為空,問題找到了!!?
![](http://editerupload.eepw.com.cn/fetch/20161101/330457_1_4.jpg)
2、怎么修改呢?設(shè)備文件名到底放到哪里了呢?
實際上,放到了dev->kobj.name里面。
![](http://editerupload.eepw.com.cn/fetch/20161101/330457_1_5.jpg)
![](http://editerupload.eepw.com.cn/fetch/20161101/330457_1_6.jpg)
評論