#include
typedef u8;
typedef u16;
typedef u32;
typedef u64;
確保是8、16、32和64位的無符號整數值型別。對應的有符號型別同樣存在。在使用者空間,讀者可以使用__u8和__u16等型別。
#include
page_size
page_shift
定義了當前體系結構的每頁位元組數和頁偏移位數(4kb頁為12,8kb頁為13)的符號。
#include
__little_endian
__big_endian
這兩個符號只有乙個被定義,取決於體系結構。
#include
u32 __cpu_to_le32(u32);
u32 __le32_to_cpu(u32);
在已知位元組序和處理器位元組序之間進行轉換的函式。由超過60個這個這樣的函式;關於它們的完整列表和如何定義,請查閱include/linux/byteorder/下的各種檔案。
#include
get_unaligned (ptr);
put_unaligned(val,ptr);
某些體系架構需要使用這些巨集來保護未對齊的資料。對於允許訪問未對齊資料的體系架構,這些巨集擴充套件為普通的指標取值。
#include
void *err_ptr(long error);
long ptr_err(const void *ptr);
long is_err(const void *ptr);
這些函式允許從返回指標值的函式中獲取錯誤編碼。
#include
list_add(struct list_head *new,struct list_head *head);
list_add_tail(struct list_head *new,struct list_head *head);
list_del(struct list_head *entry);
list_del_init(struct list_head *entry);
list_empty(struct list_head *head);
list_emtry(entry,type,member);
list_move(struct list_head *entry,struct list_head *head);
list_move_tail(struct list_head *entry,struct list_head *head);
list_splice(struct list_head *list,struct list_head *head);
操作迴圈、雙向鍊錶的函式。
list_for_each(struct list_head *cursor,struct list_head *list);
list_for_each_prev(struct list_head *cursor,struct list_head *list);
list_for_each_safe(struct list_head *cursor,struct list_head *next,struct list_head *list);
list_for_each_entry(type *cursor,struct list_head *list,member);
list_for_each_entry_safe(type *cursor,type *next struct list_head *list,member);
遍歷鍊錶的便利巨集。
LDD3讀書筆記(第3章 字元驅動)
include dev t dev t 是用來在核心裡代表裝置號的型別.int major dev t dev int minor dev t dev 從裝置編號中抽取主次編號的巨集.dev t mkdev unsigned int major,unsigned int minor 從主次編號來建立...
LDD3讀書筆記(第5章 記憶體分配)
include void kmalloc size t size,int flags 記憶體分配函式 後備快取記憶體 include kmem cache t kmem cache create const char name,size t size,size t offset,unsigned l...
LDD3 讀書筆記 之 第 3 章 字元驅動
本章介紹了下面符號和標頭檔案.struct file operations 和 struct file 中的成員的列表這裡不重複了.include dev t dev t 是用來在核心裡代表裝置號的型別.int major dev t dev int minor dev t dev 從裝置編號中抽取...