cvs commit: src/sys/kern init_main.c kern_thread.c

John Baldwin jhb at freebsd.org
Tue Mar 27 17:38:22 UTC 2007


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 
boundaries.
> >   
> >   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, 
for example.

-- 
John Baldwin


More information about the cvs-src mailing list