11.6. 快速參考

2018-02-24 15:50 更新

11.6.?快速參考

下列符號在本章中介紹了:

#include <linux/types.h>
typedef u8;
typedef u16;
typedef u32;
typedef u64;

保證是 8-位, 16-位, 32-位 和64-位 無符號整型值的類型. 對等的有符號類型也存在. 在用戶空間, 你可用 u8, u16, 等等來引用這些類型.

#include <asm/page.h>
PAGE_SIZE
PAGE_SHIFT

給當(dāng)前體系定義每頁的字節(jié)數(shù), 以及頁偏移的位數(shù)( 對于 4 KB 頁是 12, 8 KB 是 13 )的符號.

#include <asm/byteorder.h>
__LITTLE_ENDIAN
__BIG_ENDIAN

這 2 個符號只有一個定義, 依賴體系.

#include <asm/byteorder.h>
u32 __cpu_to_le32 (u32);
u32 __le32_to_cpu (u32);

在已知字節(jié)序和處理器字節(jié)序之間轉(zhuǎn)換的函數(shù). 有超過 60 個這樣的函數(shù): 在 include/linux/byteorder/ 中的各種文件有完整的列表和它們以何種方式定義.

#include <asm/unaligned.h>
get_unaligned(ptr);
put_unaligned(val, ptr);

一些體系需要使用這些宏保護不對齊的數(shù)據(jù)存取. 這些宏定義擴展成通常的指針解引用, 為那些允許你存取不對齊數(shù)據(jù)的體系.

#include <linux/err.h>
void *ERR_PTR(long error);
long PTR_ERR(const void *ptr);
long IS_ERR(const void *ptr);

允許錯誤碼由返回指針值的函數(shù)返回.

#include <linux/list.h>
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_entry(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);

操作環(huán)形, 雙向鏈表的函數(shù).

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)

方便的宏定義, 用在遍歷鏈表上.

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號