LDD3讀書筆記(第10章 核心資料型別)

2021-06-09 07:39:36 字數 1791 閱讀 2270

#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 從裝置編號中抽取...