在看這個知識點的時候我相信大家對資料結構已經有所了解,尤其是對鍊錶的了解,因此在這裡不過多講解傳統的鍊錶基本知識,這裡只給出通常雙向鍊錶的資料結構。
struct list_node;
在linux核心程式設計中為什麼不使用通常的鍊錶呢?因為它的缺點是:對每種型別串起來的鍊錶,我們需要編寫一系列的函式實現對鍊錶的操作,在複雜的專案中,結構體會很多,對它們實現鍊錶功能,那需要我們為每種型別的鍊錶編寫一套函式,我們時間會浪費,可維護性差。在linux中核心中煉表是如何使用的呢?
linux中使用了侵入式鍊錶「list_head」
struct list_head ;
在我們需要某種資料結構的雙向鍊錶時,可以這樣定義:
struct kobject ;
這個結構體型別生成的雙向鍊錶結構如下圖所示:
那我們如何構建起這個鍊錶,如何對鍊錶中的資料訪問,如何遍歷鍊錶呢?見下篇
Linux下的鍊錶使用簡介
資料結構在coding中起到了非常重要的作用,重要的資料結構包括了鍊錶,棧,佇列,樹等等。這裡介紹一些鍊錶在核心中的實現。我們書本上學到的鍊錶的一般實現方式如下 struct my link 這種做法是資料嵌入到鍊錶結構中。在核心中,存在著各種各樣的資料,很多都需要鍊錶操作。如果對每個資料結構都採用...
在驅動中使用鍊錶
原始出處 在驅動程式的開發中經常需要用到鍊錶,常見的鍊錶有單向鍊錶和雙向鍊錶,我們只介紹雙向鍊錶的使用方法,ddk為我們提供了標準的雙向鍊錶 list entry,但這個鍊錶裡面沒有資料,不能直接使用,我們需要自己定義乙個結構體型別,然後將list entry作為結構體的乙個子域,如下 所示 typ...
在Linux下使用ADSL
文章標題 在linux下使用adsl 程軍傑 張貼者 admin enthusiast 張貼日期 04 06 02 02 12 am 原文章發布於 2001.8.24 by 程軍傑 本站會員 北京電信的adsl使用的是pppoe撥號方式,因此,要在linux下使用adsl,必須安裝pppoe 客戶端...