文章目录
参考
https://blog.youkuaiyun.com/qq_36428903/article/details/118163317; 对齐的原因
作用
就是将结构体、函数体、变量强制做对齐,是起始位置的对齐。以便提高runtime的效率,尤其是对数据做cache line的对齐操作。CPU 对操作数的操作上一周期完成最好。和align相对的操作,就是packed。
对齐单位是字节;
数据做了对齐之后
内存地址的后几位为0,可用用作对对象的标记位
https://blog.youkuaiyun.com/qq_36428903/article/details/128213586
定义
根据align的长度,将x的边界扩大到对齐位置。
/* @a is a power of 2 value */
#define ALIGN(x, a) __ALIGN_KERNEL((x), (a))
#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
(typeof(x))(a)-1) // 如果a是8,那面8-1=7, 然后将7前置转换成x的类型数据。
#define __ALIGN_KERNEL_MASK(x