這個函數簡單查詢就解決了我遇到的問題. 從中瞭解很很多關於Linux內核的sys文件系統的知識以及其實現. 感謝羣衆的@Win給的提示.
網卡在物理上具有載波偵聽的功能,當網絡連接完整或者網絡鏈接斷開時,網卡芯片硬件會自動設置寄存器標誌位來標識。
如網線鏈接斷開的時候,會將LinkSts清位;重新鏈接網線,則硬件自動將此位置位。
這樣,在網卡驅動中讀寫該位信息就可一判斷網絡是否鏈接通路。
網卡驅動程序通過netif_carrier_on/netif_carrier_off/netif_carrier_ok來和內核網絡子系統傳遞信息。
1】netif_carrier_on
【作用】告訴內核子系統網絡鏈接完整。
2】netif_carrier_off
【作用】告訴內核子系統網絡斷開。
3】netif_carrier_ok
【作用】查詢網絡斷開還是鏈接。
以上函數主要是改變net_device dev的state狀態來告知內核鏈路狀態的變化。