讀書筆記:字元裝置驅動程式(scull sample from ldd3)

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

此範例是修改LDD3第三章的scull (Simple Character Utility for Loading Localities),我所使用的Linux Kernel版本為3.19.0,程式碼在此

scull設計藍圖

與硬體無關,從kernel取記憶體來模擬成字元裝置來使用。

如上圖所示,scull分成幾種裝置:
  • scull0scull3為記憶體區域,提供資料共享(shared)與持續性(persistence)功能。
  • scullpipe0scullpipe3FIFO裝置,含有blockingnon-blocking IO功能。
  • scullsingle提供同一時間只能被一個行程存取。
  • scullpriv確保每個virtual console的記憶體不共享。
  • sculluidscullwuid讓同一個使用者可啟用裝置多次;當有人在使用時,sculluid會回傳裝置忙碌中,而scullwuid則會繼續等待(block)

Major and Minor Numbers


此範例有提供script方便使用,例如要將scull module載入時,只要使用scull_load就行了,

sudo ./scull_load
sudo cp main.c /dev/scull0
cat /dev/scull0 | head -20 | tail -10
sudo ./scull_unload


沒有留言: