0
A
回答
0
您提供的信息太不完整,無法預測。但是,網絡套接字的問題主要在於緩衝區分配。 skbuffs
是Linux內核處理網絡數據包的緩衝區。當您保持與客戶端的連接並接收數據包時,數據包在內部被網卡接收,填入skbuff
並傳遞到網絡堆棧。
看什麼alloc_skb()
返回。閱讀手冊頁知道,如果alloc_skb()
返回NULL,沒有內存分配您想要的塊。這可能是分配失敗情況之一。
順便說一句,希望你在中斷的基礎上駕駛整個事情。 alloc_skb()
的手冊頁說,
緩衝區只能使用GFP_ATOMIC的gfp_mask從中斷分配。
無論內存情況如何,傳遞數據的最佳方式就是中斷處理程序。當驅動程序加載時,可以創建一個skb列表。並且,在中斷過程中,執行alloc_skb
,如果失敗,您可以始終使用其中一個預分配的緩衝區(如果有的話)保存數據。爲了下一次中斷髮生,補充緩衝區。
相關問題
- 1. alloc-init有時在程序中失敗
- 2. 測試用例在[[MyObject alloc] init]失敗
- 3. 失敗在Linux
- 4. LINUX kill_pid失敗
- 5. Linux C:mount()失敗,EPERM
- 6. SSL_CTX_use_PrivateKey_file失敗的Linux
- 7. 訪問skb(skb-> data)時出錯
- 8. Linux模塊驗證失敗
- 9. 的Linux - bsqldb登錄失敗
- 10. 化妝失敗在Linux EC2
- 11. Linux訪問MSSQL失敗
- 12. Linux TTY S1打開失敗
- 13. Java exec grep | Linux的失敗
- 14. IPv6綁定失敗Linux
- 15. linux tomcat MySql連接失敗
- 16. skb-> data_len,skb-> len,skb-> mac_len的值爲0是否正確?
- 17. MonoDevelop的失敗「未知的MSBuild失敗」在Linux上
- 18. 登錄失敗,並在Linux上使用perl perl登錄失敗
- 19. 如何在Linux網絡堆棧的特定點上推skb?
- 20. Linux PCI驅動程序 - pci_enable_device失敗
- 21. Red Hat Linux上的mapnik安裝失敗
- 22. Flume在Linux中運行失敗
- 23. oracle linux上的依賴檢查失敗
- 24. 的Linux內核3.13編譯失敗
- 25. Linux上的扭曲安裝失敗
- 26. 的Linux 13.04與QT4和QT5 - 讓失敗
- 27. require_once在linux主機上失敗?
- 28. Wind River Linux失敗依賴錯誤
- 29. 在Linux中的子集中awk失敗
- 30. JasperReports的失敗在Linux機器
更多詳情代碼信息請 –