2013-01-19 102 views
0

我正在研究android內核(果凍豆)。Android內核,WiFi掃描系統調用

我專注於/net/mac80211/scan.c模塊和掃描行爲,瞭解PS_mode的工作原理。無論如何,我找不到任何系統調用在更高層次上調用內核的ieee80211_scan_work函數(調用ieee80211_start_scan()函數)。

我想知道如果這個函數甚至被API調用,是否有人知道它,如果它確實,哪個syscall提升?

+0

http://planet.kernel.org/這可能是你的問題的答案。 –

+0

這真的沒有太大的幫助,反正謝謝你。 – user1992763

回答

0

見我的反應在這裏得到mac80211的總體概述: How to learn the structure of Linux wireless drivers (mac80211)?

從用戶空間的接口不是基於系統調用,但使用網絡鏈路API。 通過發送NL80211_CMD_TRIGGER_SCAN命令完成掃描。獲得掃描完成後的NL80211_CMD_NEW_SCAN_RESULTS事件後,您將發出NL80211_CMD_GET_SCAN以獲取掃描結果。 查看wpa_supplicant代碼的示例。

您看不到任何人調用ieee80211_scan_work,因爲它是一個工作隊列處理程序。如果你不熟悉workqueue,你可以選擇一本解釋它們的內核書籍。 這個工作在ieee80211_alloc_hw()中初始化爲local-> scan_work的處理程序。

「得到這個運行」的代碼在ieee80211_start_sw_scan()中,它實際上對scan_work進行排隊。請注意,scan_work僅在SW掃描中使用,這意味着mac80211管理掃描(即,它保留一個定時器來切換通道並調用較低的HW驅動程序以將HW設置爲特定通道)。這僅取決於您的硬件功能。對於某些硬件,掃描完全由HW驅動程序完成,或者甚至通過固件完成。 如果您的硬件驅動程序執行硬件掃描,它將執行hw_scan mac80211回調。