len = PAGE_ALIGN((start & ~PAGE_MASK) + info->fix.smem_len);
#define PAGE_ALIGN(addr) ALIGN(addr, PAGE_SIZE)
#define ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1))
上面的宏逐步展开,就是 (((x) + (a) - 1) & ~((a) - 1))
& ~看成是除号/,上面的数学等式就是1+a/b
所以调用该宏可以获得len是表示PAGE_SIZE为的整除数,也就是页的地址。