本文主要介紹了Linux內核與數據交流的幾種方式
現在我想到的幾種:
1.輸入子系統,這個是單向的,只能內核->應用層
2.系統調用,ioctl/read/write等函數,對應了字符設備等設備類型,這個是雙向的,內核層和應用層可以互相發數據
3.sys文件系統,也就是屬性節點,同樣也是雙向的
4.proc文件系統
5.用戶空間驅動,很高大上的感覺有木有,這個也是雙向的
6.讀寫塊設備(大概也許可能也能實現用戶空間和內核空間的數據交互,但是自己對塊設備不甚瞭解,寫這個的話我會查閱很多資料再考慮)
7.直接讀寫物理內存
8.fw_printenv/fw_setenv設置uboot環境變量的工具,應用層使用fw_setenv設置uboot的環境變量,內核啓動過程中可以讀取這個變量,也可以實現應用層往內核發數據。
目前我用到的大概也許可能就這幾種,週末有時間會對那幾種方法都做個詳細的分析。又發現新的內核空間和用戶空間進行數據交流的方法再補充。