按a字节对齐
#define ALIGN(x, a)
__ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask))
这种方法对2^order对齐来说比较适用,但好像对非常规的对齐不行,比如按3字节对齐,一个通用的方法是
(x + n-1)/n * n
这种看着效率很低,记得还有其他的方法,暂时忘了,记起来了再补吧。
按a字节对齐
#define ALIGN(x, a)
__ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
这种方法对2^order对齐来说比较适用,但好像对非常规的对齐不行,比如按3字节对齐,一个通用的方法是
(x + n-1)/n * n
这种看着效率很低,记得还有其他的方法,暂时忘了,记起来了再补吧。