[读书笔记]内核的数据类型(第十一章)

2018-10-29  本文已影响0人  c枫_撸码的日子

综述

读到这里,基本的知识都差不多了,后面就是了解一些具体的设备驱动程序,例如PCI,USB等,这些章节就不在写笔记。
本章知识主要涉及可移植性问题的探讨。
1.确定的数据类型

#include <linux/types.h>
typedef u8;
typedef u16;
typedef u32;
typedef u64;
确保8、16、32/64位无符号的整数值类型。
对应的有符号的类型同样存在,在用户空间,读者可使用_ _u8,_ _u16等

2.页大小

#include <asm/page.h>
PAGE_SIZE;
PAGE_SHIFT;
定义当前体系架构每页字节数和页偏移位数(4KB为12,8KB为13)的符号

3.字节序

#include <asm/byteorder.h>
_ _LITTLE_ENDIAN
_ _BIG_ENDIAN
这2个符号只有一个被定义 取决于体系架构
u32 _ _cpu_to_le32(u32);
u32 _ _le32_to_cpu(u32);
在已知字节序和处理器字节序之间进行转换的函数。

4.数字对齐

#include <asm/unaligned.h>
get_unaligned(ptr);
put_unaligned(val,ptr);
某些体系结构需要使用这些宏来保护对未对齐的数据。
对应允许访问未对齐的数据的体系架构,这些宏扩展为普通的指针
上一篇下一篇

猜你喜欢

热点阅读