Hi Matthew, On 2018/6/28 17:23, Matthew Wilcox wrote: > On Thu, Jun 28, 2018 at 05:06:29PM +0800, Gao Xiang wrote: >> Therefore, this patch introduces simple generic methods to fold >> tags into a pointer integer. It currently reuses the last 2 bits >> of the pointer for tags, which are safely for all modern platforms. > > The m68k people will have your head. alignof(unsigned long) == 2 on > m68k. Now, kmalloc always returns 8-byte aligned quantities, but > if you have: > > static unsigned long foo; > > then ((unsigned long)&foo & 2) may be non-zero. > Oh.. I missed it. How about covering dynamic allocation scenario only? (since 1 bit is too limited to be used for generic purposes... :( ) Or generate different bit mask versions by using macro? --- I could try in the next patch. Anyway, I think it is depended on specific use cases and corresponding architectures... >> +/* >> + * mark these special integers as another type >> + * in order to highlight the tagged pointer usage. >> + */ >> +typedef uintptr_t taggedptr_t; > > I find this a bit verbose. How about tagptr_t ? > Boths are ok for me :) Thanks, Gao Xiang