這兩個函數不是由內核本身調用。他們是靜態並駐留在相應的文件(可能是芯片專用文件)。此外,它們似乎不是在任何地方都用作回調。
相反,你可以看到,例如,write_grf5101()
是used通過grf5101_rf_init()
功能./drivers/net/wireless/realtek/rtl818x/rtl8180/grf5101.c
文件,該功能是rtl818x_rf_ops
結構set as a callback這反過來,你可能明白了,是一些有點像比較通用驅動程序內的實體。例如,該變量grf5101_rf_ops
(這是struct rtl818x_rf_ops
類型)是set as a callback table通過./drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c
rtl8180_probe()
功能。最後,後者rtl8180_probe()
是struct pci_driver
,正如你可能會看到類型的rtl8180_driver
變量set as a callback,是某種類似內核本身(所有PCI設備與struct pci_driver
註冊自己)保持的接口。下面的行module_pci_driver(rtl8180_driver);
在這個特定的情況下執行這種註冊。
所以,問題是,「內核」不知道(也可能不應該)對這種微小的靜態輔助程序。取而代之的是,內核需要一個PCI設備描述結構,而這個結構反過來將被用來連接特定設備。一種典型的驅動器,但是,可以具有(常常具有)其內部回調結構 - 通常芯片特定的(在情況下,當驅動器被設計以某種類似的設備的家庭的服務於多個芯片) - 這在轉向將指向位於相應的.c
文件中的芯片專用功能。內部函數可能會使用這樣的助手(如rtl8225_write()
或write_grf5101()
),在這種情況下,與內核無關。他們只是一些小芯片特定的幫手。
在這裏發佈適當的代碼字段。如果不檢查外部資源,應該回答問題。 – bolov
我已經添加了我所指的傳輸函數的代碼片段。 – charlesw
根據該代碼,駕駛員選擇期間設置適當的功能[探測](https://github.com/o11s/open80211s/blob/master/drivers/net/wireless/rtl818x/rtl8180/dev.c#L1042)通過檢查一些讀取的值。 – Tsyvarev