受下面这篇文章的启发,可以知道"kernel/include/linux/socket.h" 中 CMSG_ALIGN 这个宏的 作用。
#define CMSG_ALIGN(len) ( ((len)+sizeof(long)-1) & ~(sizeof(long)-1) )
其实,就是 找 len 的 上界数(
sizeof(long) 必须为 2的N次方) 。上界数,就是 大于 len ,并且 以
sizeof(long) 对齐的最小的数。
sizeof(long) = 4 的话,那么,sizeof(long)-1 的二进制形式为: 0000,0000,0000,0000,0000,0000,0000,0011
那么 ~(sizeof(long)-1) 为 3