看板 LinuxDev 關於我們 聯絡資訊
介紹:我這個IPC module會使用kernel網路傳輸的API 與 另一台電腦作相連、也與本機 上層的管理應用程式相連。 問題描述:IPC kernel module執行傳輸到網路上會無法傳出(使用send function)、或是 socket與上層AP相連時,也會無法傳出。 這個程式碼現在是沒問題的,但是只要將 binder.c 3999、3283行 ,任一行註 解掉之後就會產生傳輸錯誤。3999、3283行在編譯後為變成printk。 備註:之前在開發的過程就有遇過,只是那時候是變成需要註解掉 prink 這樣傳輸才沒有問題。 1. 請問這樣的錯誤是為什麼發生的? 記憶體不夠用嗎、編譯問題、我寫法錯誤 、網路傳輸不能直接在kernel寫 2. 是否有什麼方式 可以查看 執行到這邊的狀態? ex:kgdb、objdump kgdb之前有用過,可是使用起來怪怪的、也不太會trace 不知如何trace到使用socket API 的module內容 使用環境: Ubuntu 12.04.3 LTS Linux ubuntu 3.9.0-030900-generic #201304291257 SMP Mon Apr 29 17:06:25 UTC 2013 i686 i686 i386 GNU/Linux gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) Source Code https://www.dropbox.com/s/xf3p83wh361q07l/module.rar?dl=0 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.72.239 ※ 文章網址: http://www.ptt.cc/bbs/LinuxDev/M.1412422486.A.571.html
drag: 原來你也是鄉民~我昨天在Linkedin看到一樣的問題 @@ 10/07 13:19
drag: Line175: #define debug 0 試試看呢? 10/07 13:20
感謝回復,已經找到問題點了 把Send函式 這行改成這樣就行了 struct msghdr msg= {.msg_flags= MSG_DONTWAIT+MSG_NOSIGNAL}; ※ 編輯: sxwdce123 (59.127.3.127), 10/09/2014 17:10:47