Linux那些事儿 之 戏说USB(11)繁华落尽
生活随笔
收集整理的這篇文章主要介紹了
Linux那些事儿 之 戏说USB(11)繁华落尽
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Linux設(shè)備模型中的總線落實(shí)在USB子系統(tǒng)里就是usb_bus_type,它在usb_init函數(shù)注冊(cè),在drivers/usb/core/driver.c文件里定義
name自然就是usb總線的綽號(hào)了。match這個(gè)函數(shù)充當(dāng)了一個(gè)紅娘的角色,在總線的設(shè)備和驅(qū)動(dòng)之間牽線搭橋。match指向了函數(shù)usb_device_match
第1行,經(jīng)歷了linux設(shè)備模型的繁華,參數(shù)我們都已經(jīng)很熟悉了,對(duì)應(yīng)的就是總線兩條鏈表里的設(shè)備和驅(qū)動(dòng),也可以說(shuō)是鵲橋版上的掛牌的和摘牌的。總線上有新設(shè)備或新的驅(qū)動(dòng)添加時(shí),這個(gè)函數(shù)總是會(huì)被調(diào)用,如果指定的驅(qū)動(dòng)能夠處理指定的設(shè)備,也就是匹配成功,函數(shù)返回0。夢(mèng)想是美好的,現(xiàn)實(shí)是殘酷的,匹配是未必成功的,紅娘再努力,雙方對(duì)不上眼也是實(shí)在沒(méi)辦法的事。
第4行,一遇到if和else,我們就知道又處在兩難境地了,代碼里我們可選擇的太多。這里的岔路口只有兩條路,一條給USB設(shè)備走,一條給USB接口走,各走各的路,分開(kāi)了,就不再相見(jiàn)。
struct bus_type usb_bus_type = {.name = "usb",.match = usb_device_match,.uevent = usb_uevent,
};
name自然就是usb總線的綽號(hào)了。match這個(gè)函數(shù)充當(dāng)了一個(gè)紅娘的角色,在總線的設(shè)備和驅(qū)動(dòng)之間牽線搭橋。match指向了函數(shù)usb_device_match
static int usb_device_match(struct device *dev, struct device_driver *drv)
{/* devices and interfaces are handled separately */if (is_usb_device(dev)) {/* interface drivers never match devices */if (!is_usb_device_driver(drv))return 0;/* TODO: Add real matching code */return 1;} else if (is_usb_interface(dev)) {struct usb_interface *intf;struct usb_driver *usb_drv;const struct usb_device_id *id;/* device drivers never match interfaces */if (is_usb_device_driver(drv))return 0;intf = to_usb_interface(dev);usb_drv = to_usb_driver(drv);id = usb_match_id(intf, usb_drv->id_table);if (id)return 1;id = usb_match_dynamic_id(intf, usb_drv);if (id)return 1;}return 0;
}
第1行,經(jīng)歷了linux設(shè)備模型的繁華,參數(shù)我們都已經(jīng)很熟悉了,對(duì)應(yīng)的就是總線兩條鏈表里的設(shè)備和驅(qū)動(dòng),也可以說(shuō)是鵲橋版上的掛牌的和摘牌的。總線上有新設(shè)備或新的驅(qū)動(dòng)添加時(shí),這個(gè)函數(shù)總是會(huì)被調(diào)用,如果指定的驅(qū)動(dòng)能夠處理指定的設(shè)備,也就是匹配成功,函數(shù)返回0。夢(mèng)想是美好的,現(xiàn)實(shí)是殘酷的,匹配是未必成功的,紅娘再努力,雙方對(duì)不上眼也是實(shí)在沒(méi)辦法的事。
第4行,一遇到if和else,我們就知道又處在兩難境地了,代碼里我們可選擇的太多。這里的岔路口只有兩條路,一條給USB設(shè)備走,一條給USB接口走,各走各的路,分開(kāi)了,就不再相見(jiàn)。
總結(jié)
以上是生活随笔為你收集整理的Linux那些事儿 之 戏说USB(11)繁华落尽的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux那些事儿 之 戏说USB(10
- 下一篇: Linux那些事儿 之 戏说USB(12