On Tuesday 27 March 2007 01:01:38 pm Scott Long wrote:
> John Baldwin wrote:
> > jhb 2007-03-27 16:51:34 UTC
> > FreeBSD src repository
> > Modified files:
> > sys/kern init_main.c kern_thread.c
> > Log:
> > Align 'struct thread' on 16 byte boundaries so that the lower 4 bits are
> > always 0. Previously we aligned threads on a minimum of 8-byte
> > Note: This changes the uma zone to no longer cache align threads. We
> > really want the uma zone to do align threads to MAX(16, cache line size)
> > but there currently isn't a good way to express that to uma.
> I'm sure there is a good reason for this. Can you explain?
Sure. The upcoming changes to sx locks require 4 flag bits in the lock
cookie, so I need thread pointers to have the lower 4 bits all set to zero.
If we can assume that sizeof(cache line) will always be >= 16, then the
kern_thread.c part can be reverted, and/or if the interface to UMA changed
somehow. Maybe align_cache could be a separate flag, and the effective
alignment would always be MAX(align, cache line size) when that flag is set,