Messages in this thread Patch in this message | | | Subject | [PATCH] SLAB - have index_of bug at compile time. | From | Steven Rostedt <> | Date | Wed, 21 Dec 2005 10:34:07 -0500 |
| |
Hi, after all the talk over SLAB and SLOBs I decided to make myself useful, and I'm trying very hard to understand the Linux implementation of SLAB. So I'm going through ever line of code and examining it thoroughly, when I find something that could be improved, either performance wise (highly doubtful), clean up wise, documentation wise, enhancement wise, or just have a question, I'll make myself known.
This email is enhancement wise. ;)
I noticed the code for index_of is a creative way of finding the cache index using the compiler to optimize to a single hard coded number. But I couldn't help noticing that it uses two methods to let you know that someone used it wrong. One is at compile time (the correct way), and the other is at run time (not good).
OK, this isn't really an enhancement since the code already works. But this change can help those later who do real enhancements to SLAB.
-- Steve
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Index: linux-2.6.15-rc6/mm/slab.c =================================================================== --- linux-2.6.15-rc6.orig/mm/slab.c 2005-12-20 16:47:05.000000000 -0500 +++ linux-2.6.15-rc6/mm/slab.c 2005-12-21 10:20:03.000000000 -0500 @@ -315,6 +315,8 @@ */ static __always_inline int index_of(const size_t size) { + extern void __bad_size(void); + if (__builtin_constant_p(size)) { int i = 0; @@ -325,12 +327,9 @@ i++; #include "linux/kmalloc_sizes.h" #undef CACHE - { - extern void __bad_size(void); - __bad_size(); - } + __bad_size(); } else - BUG(); + __bad_size(); return 0; }
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |