Thank you for your comments.
On Sat, Apr 19, 2008 at 12:12 AM, Christoph Lameter <clameter@sgi.com> wrote:
We set it to zero to allow the compiler to optimize out code if
CONFIG_KMEMCHECK=n. For instance
if (kmemcheck_page_is_tracked(page) && !(s->flags & SLAB_NOTRACK)) {
Will be turned into if(0 && !(s->flags & 0)), which can be completely
optimized away. On the other hand, if SLAB_NOTRACK is non-zero, this
is not the case, since the flag must be tested.
The implementations of these prototypes are in mm/slub_kmemcheck.c.
They are only ever called from slub.c since they represent the
interface between SLUB and kmemcheck.
Would you rather have it in include/linux/slub_kmemcheck.h?
It has been moved because the flag should only be cleared just before
it is returned to the page allocator.
Currently, with SLAB/SLUB debugging enabled, the page flag will be
cleared, then accessed in check_object(), thus generating a few
accesses to the page. It is safer to delay the clearing of the page
flag until no more accesses can be generated for the page.
Hm, let's see... Yep, you are correct. This is an artifact from
previous versions, where this flag was actually used, and should now
be removed!
Thanks!
Vegard
--
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
-- E. W. Dijkstra, EWD1036
--