如何通過鍊錶來管理驅動的?

2021-10-06 19:49:01 字數 995 閱讀 6407

下面的圖是mmc裝置的驅動分析

與鍊錶相關的檔案在list.h標頭檔案裡面有定義

關於list_add_tail之前是不懂的,總覺得新的結點是放在了乙個很奇怪的位置,或者說是頭結點的前面。

關於網絡卡驅動

中間通過for迴圈去遍歷整個eth_devices鍊錶,找到最後乙個節點之後,就把新的裝置插入到最後的位置。

與鍊錶相關的詳細分析還有offsetof巨集跟container_of巨集

// type是結構體型別,member是結構體中乙個元素的元素名

// 這個巨集返回的是member元素相對於整個結構體變數的首位址的偏移量,型別是int

#define offsetof(type, member) ((int) &((type *)0)->member)

// ptr是指向結構體元素member的指標,type是結構體型別,member是結構體中乙個元素的元素名

// 這個巨集返回的就是指向整個結構體變數的指標,型別是(type *)

#define container_of(ptr, type, member) ()

而在核心鍊錶裡面,list.h標頭檔案裡面

list_entry就是利用了container_of巨集來實現的

題外話

知識總結

朱老師的嵌入式軟體工程師課程

c語言高階專題精講

4.9章 鍊錶相關

4.5章 結構體-與結構體相關的巨集

uboot課程

uboot-sd/mmc移植、網絡卡移植,裡面與鍊錶相關的都跟上述的知識有關

回顧複習了一天,終於,連起來了。

通過鍊錶來實現對學生資訊的管理

動態從鍵盤讀入學生的姓名和成績,為每個學生建立乙個節點,並將所有學生的資訊構成乙個鍊錶 當使用者輸入0時,表示資訊輸入結束。然後程式輸出鍊錶中存放的學生資訊,並在程式結束以前釋放所有動態申請的空間 include include using namespace std struct studentn...

如何通過《影響力》來管理專案團隊?

專案團隊是專案成功的第一要素。很多公司的組織結構是矩陣型,因此專案經理是有責無權,部分公司是專案經理參與團隊人員的績效考核,很多專案經理能夠使用的實際權力很小。有責無權,專案經理需要在沒有實際權力的情況下帶動專案團隊正常完成專案,因此需要借助 影響力 來更好的為自己賦能,從而能夠更好的管理專案團隊,...

驅動中的鍊錶

今天被鍊錶掀翻一地,原來許多我以為的,都不是我以為的。最近在提交 中煎熬,也可以說難忘吧!不過,其實還是學到了許多東西,在這還是感謝我的老大吧!鍊錶有很多種不同的型別 單向鍊錶,雙向鍊錶以及迴圈鍊錶 spi中建立匯流排鍊錶 裝置鍊錶 初始化匯流排鍊錶 static list head spi bus...