核心n日遊之核心鍊錶
在核心中載入insmod&檢視模組lsmod&解除安裝模組rmmod:
附加實驗:在mylist_exit函式中,將for(i=0;i<5;i++)換成 list_for_each來遍歷刪除結點,觀察要發生的現象,並考慮解決辦法?
修改後的模組為kernel_list.ko
先載入insmod kernel_list.ko:
載入success!
然後解除安裝rmmod kernel_list
如上圖所示,出現段錯誤.載入失敗!用lsmod檢視,發現該核心模組未被解除安裝!
附上include/linux/list.h標頭檔案中的部分定義:
list_head結構體的定義:
list_entry的定義:
container_of在核心中的定義:
思考:將核心鍊錶在應用程式中實現?
linux核心鍊錶
鍊錶是一種常用的資料結構,它通過指標將一系列資料節點連線成一條資料鏈。相對於陣列,鍊錶具有更好的動態性,建立鍊錶時無需預先知道資料總量,可以隨機分配空間,可以高效地在鍊錶中的任意位置實時插入或刪除資料。鍊錶的開銷主要是訪問的順序性和組織鏈的空間損失。一 鍊錶結構 單鏈表結構如下 雙鏈表結構如圖 st...
linux核心鍊錶
include include struct list head struct mylist void list add struct list head new,struct list head prev,struct list head next void list add tail struc...
Linux核心鍊錶
核心鍊錶 核心鍊錶即,我麼在乙個鍊錶中插入或刪除乙個資料,都需要自己編寫 相當的麻煩,怎麼解決這個問題呢,為了更加方便的解決這個問題,linux中就產生了核心鍊錶,以後想要在鍊錶中插入資料或刪除資料時,只需要呼叫函式就可以了。鍊錶對比 鍊錶是一種資料結構,他通過指標將一系列的資料節點連線成一條資料鏈...