我正在跟蹤我們的驅動程序中的一個「scheduling while atomic」錯誤,並且想知道ioctl是否是原子上下文。此外,如果任何人有什麼可以分享如何進入和退出原子環境,以及它們發生的常見場所,這將是有益的。ioctl驅動程序函數是從linux 2.6下的原子上下文執行的嗎?
3
A
回答
8
不,ioctls通常運行在流程上下文中。如果驅動程序在ioctl處理過程中抓取自旋鎖,則驅動程序將進入原子上下文並保持原子上下文,直到釋放自旋鎖。
參見:http://lwn.net/Articles/274695/對原子上下文中的Linux
2
你開啓CONFIG_DEBUG_SPINLOCK_SLEEP
了很好的討論,這可能會給你更多的信息,包括堆棧跟蹤的錯誤所在。
要看的另一個角度是你要調用的睡眠功能。示例爲msleep()
,mutex_lock()
,copy_to_user()
等。
相關問題
- 1. 執行上下文驅動的編程
- 2. Linux驅動程序:ioctl或sysfs?
- 3. IOCTL Linux設備驅動程序
- 4. Linux設備驅動程序原子GET,然後通過ioctl設置
- 5. 需要Linux內核驅動程序定義的ioctl
- 6. 錯誤:從無效的上下文中調用睡眠函數 - Linux內核中的振動器驅動程序
- 7. Linux的字符設備驅動程序:阻塞ioctl調用
- 8. 是linux上的python's shutil.move()原子嗎?
- 9. 2.6內核中的Linux PCI驅動程序
- 10. 是詞法關閉函數的執行上下文的屬性?
- 11. 訪問Linux驅動程序
- 12. 設備驅動程序IOCTL傳遞int
- 13. 從C#驅動程序執行MongoDB Eval函數(MongoDB版本2.4)
- 14. Windows 7驅動程序ioctl調用
- 15. 你在Linux字符驅動程序中存儲用戶上下文的位置?
- 16. 是什麼Scala的執行上下文和遊戲的執行上下文
- 17. PowerPC上的Linux驅動程序
- 18. 爲什麼在這個例子中原型函數的執行上下文(「this」)是錯誤的?
- 19. 如何發送IOCTL到Windows上的所有驅動程序C
- 20. 從pexpect驅動java/kulla? (上下文:Jupyter)
- 21. I2C linux驅動程序
- 22. Watir Web驅動程序下載文件
- 23. 主線程的執行上下文
- 24. Linux設備驅動程序中的靜態函數?
- 25. Linux設備驅動程序
- 26. Linux TTY和驅動程序
- 27. 在linux塊設備驅動程序中結束I/O上下文
- 28. 應用程序上下文和spring上下文是一樣的嗎?
- 29. 函數從linux的shell腳本不執行在c程序
- 30. Linux上的運行時執行程序