當我們在學習新的知識的時候,總會需要去學與這個新的知識有關的知識,我有時會想我們會不會因**式的知識增長而搞壞腦子。
當電腦上插入usb的時候電腦右下角就會的提示,我們也可以通過右下角的小圖示把usb解除安裝掉,這是怎麼一會事呢?
明明插入的是乙個硬體,底層驅動又是如何與各種各樣的桌面系統進行互動的呢?這是一件非常與趣的事情,如果把這個搞懂了我們能夠嚐到很多的知識。
這裡總共有五層:
1.kernel
核心裡面的硬體驅動發現新裝置,並把這種狀態標記在sysfs裡面。通過netlink把這些事件再傳入到udev
2.udev
udev建立裝置結點,執行模組處理和其他的一些程式,通過socket把事件傳遞到hal守護程序。
3.hal
hal獲得這些事件後,處理這個裝置,然後在它的裝置樹中建立乙個表示物件。並把它知道的一些屬性加入到裡面。
4.d-bus
hal通過d-bus把這個新的裝置告知各個收聽者。
5.user session
桌面再通過使用者層的api對這些狀態進行顯示作出處理。
它們之間的層次圖:
當然這裡只作出了最簡單的介紹,每乙個地方都有很多的知識需要去了解。也是為下面的驅動閱讀有乙個鋪墊。
裝置繁忙處理方法
實驗環境 centos7 伺服器 問題 之前伺服器 做過ceph,之後格式化磁碟,資料盤作raid0。系統裝好後,檢視裝置資訊。lsblk,顯示部分磁碟正常,部分下面有 ceph 等標識,用ilo多次格式化磁碟作raid0均無效果。直接parted dev sdm 做好分割槽 dev sdm1,格式...
裝置節點的動態建立
我們在剛開始寫linux裝置驅動程式的時候,很多時候都是利用mknod命令手動建立裝置節點,實際上linux核心為我們提供了一組函式,可以用來在模組載入的時候自動在 dev目錄下建立相應裝置節點,並在解除安裝模組時刪除該節點,當然前提條件是使用者空間移植了udev。核心中定義了struct clas...
動態處理DataTable
方法1 1 1.建立表例項 2 datatable dt new datatable 34 2.建立表結構 5 dt.columns.add id 6 dt.columns.add name 783.建立新行 9 datarow dr dt.newrow 1011 4.為新行賦值 12 dr 0 1...