#define ALIGN(x, a) __ALIGN_KERNEL((x), (a))
and
#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask))
What does this macro do? I have read this article http://stackoverflow.com/questions/13122846/align-macro-kernel but it was not of much help.