W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
下列符號在本章中介紹了:
#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)
方便的宏定義, 用在遍歷鏈表上.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: