Linux 2 6驅動開發 2 列表

2021-05-21 14:43:46 字數 3246 閱讀 9421

檔案位置:

include/linux/list.h

資料結構:

struct list_head ;

操作:list_head(name); 將

name

定義成上面的資料結構,同時

next,prev

都指向起始位置。

list_entry(ptr, type, member); 返回

list_head

的父結構體位址。其中

ptr

是所求父結構體中list_head

成員指標,type

是所求父結構體型別,member

list_head

成員名。

list_first_entry(ptr, type, member);

獲取指定list_head

結構體成員位址指向的

next

的父結構體位址。其中

ptr

是所求結構體中list_head

成員指標,type

是所求結構體型別,member

是結構體list_head

成員名。

list_for_each(pos, head)

向下遍歷;是乙個

for(;;)

結構體,沒有結束的。使用方法

list_for_each(pos, head)

pos是乙個

list_head

變數,相當於

int i;for(i=0;i<4;i++)

中的i;

head

是乙個要遍歷的list_head

頭。

__list_for_each(pos, head)

同上,區別:沒

prefetch

操作,快。

list_for_each_prev(pos, head)

向下遍歷;

pos是乙個

list_head

變數,相當於

int i;for(i=0;i<4;i++)

中的i;

head

是乙個要遍歷的list_head

頭。

list_for_each_safe(pos, n, head)

向下遍歷,同

list_for_each,

區別:pos

可以初修改。

n也是乙個

list_head

變數list_for_each_prev_safe(pos, n, head)

向上遍歷,同

list_for_each_prev

,區別:

pos可以初修改。

n也是乙個

list_head

變數list_for_each_entry(pos, head, member)

向下遍歷list_head

的父結構。

pos是乙個list_head

變數,member

是名稱

list_for_each_entry_reverse(pos, head, member)

向上遍歷

list_head

的父結構。

list_prepare_entry(pos, head, member) 判斷

pos是有已指定,若已指定則無操作,否則將

head

的父結構位址返回。

list_for_each_entry_continue(pos, head, member)

list_for_each_entry_continue_reverse (pos, head, member)

list_for_each_entry_from(pos, head, member)

list_for_each_entry_safe(pos, n, head, member)

list_for_each_entry_safe_continue(pos, n, head, member)

list_for_each_entry_safe_from(pos, n, head, member)

list_for_each_entry_safe_reverse(pos, n, head, member)

list_add(struct list_head *new, struct list_head *head) 將

new

插在前面

list_add_tail (struct list_head *new, struct list_head *head)

將new

插在後面

list_del(struct list_head *entry)

刪除entry

結點list_replace(struct list_head *old,struct list_head *new)

替換list_replace_init (struct list_head *old,struct list_head *new)

替換初始結點

list_del_init(struct list_head *entry)

刪除並重新初始

list_move(struct list_head *list, struct list_head *head)

將list

從原列中刪除並新增到

head

頭去list_move_tail(struct list_head *list, struct list_head *head)

將list

從原列中刪除並新增到

head

尾去list_is_last(const struct list_head *list, const struct list_head *head)

判斷是否頭

int list_empty(const struct list_head *head)

判斷是否空

linux2 6驅動開發系列教程

這段時間一直在做android下的驅動,android驅動底層跟linux如出一轍,所以這裡準備做乙個專題,把linux驅動做乙個總結,為android接下來的驅動開發打好基礎,大致的思想如下 一 linux驅動基礎開發 0 linux驅動基礎開發0 linux 裝置驅動概述 1 linux驅動基礎...

Linux 2 6 驅動模板

obj m vs10xx.o vs10xx objs vs10xx.o kerneldir home kerson linux 2.6.39 pwd shell pwd modules make c kerneldir m pwd modules cp vs10xx.ko armnfs phony ...

linux2 6 裝置驅動編寫

從2.6版本開始引入了platform這個概念,在開發底層驅動程式時,首先要確認的就是裝置的資源資訊,例如裝置的位址,在2.6核心中將每個裝置的資源用結構platform device來描述,該結構體定義在kernel include linux platform device.h中,struct ...