mm/slab: make calculate_alignment() function static
Subsystems (2)
PATCH 1/1 mm/slab: make calculate_alignment() function static
calculate_alignment() function is only used inside 'slab_common.c'. So make it static and let compiler do more optimizations.
After this patch there's small improvements in 'text' and 'data' size.
$ gcc --version gcc (GCC) 7.2.1 20171128
Before:
text data bss dec hex filename
9890457 3828702 1212364 14931523 e3d643 vmlinux
After:
text data bss dec hex filename
9890437 3828670 1212364 14931471 e3d60f vmlinux
Also I fixed a 'style problem' reported by 'scripts/checkpatch.pl'.
WARNING: Missing a blank line after declarations #53: FILE: mm/slab_common.c:286:
+ unsigned long ralign = cache_line_size();
+ while (size <= ralign / 2)
--- mm/slab.h | 3 --- mm/slab_common.c | 56 +++++++++++++++++++++++++++++--------------------------- 2 files changed, 29 insertions(+), 30 deletions(-)
mm/slab.h +0 -3
@@ -79,9 +79,6 @@ extern const struct kmalloc_info_struct {unsigned long size; } kmalloc_info[]; -unsigned long calculate_alignment (unsigned long flags, -unsigned long align,unsigned long size); -#ifndef CONFIG_SLOB /* Kmalloc array related functions */ void setup_kmalloc_cache_index_table (void );
mm/slab_common.c +29 -27
68 lines not on this page · raw message
Signature · 7 lines
2.15.1 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Quoted 16 lines · Byongho Lee
calculate_alignment()function is only used inside 'slab_common.c'. So make it static and let compiler do more optimizations.After this patch there's small improvements in 'text' and 'data' size.
$ gcc --version gcc (GCC) 7.2.1 20171128Before:
text data bss dec hex filename
9890457 3828702 1212364 14931523 e3d643 vmlinuxAfter:
text data bss dec hex filename
9890437 3828670 1212364 14931471 e3d60f vmlinux
Quoted 8 lines
Also I fixed a 'style problem' reported by '
scripts/checkpatch.pl'.WARNING: Missing a blank line after declarations #53: FILE:
mm/slab_common.c:286:
+ unsigned long ralign =cache_line_size();
+ while (size <= ralign / 2)Signed-off-by Byongho Lee <[email protected]>
Quoted 101 lines
--- mm/slab.h | 3 --- mm/slab_common.c | 56 +++++++++++++++++++++++++++++--------------------------- 2 files changed, 29 insertions(+), 30 deletions(-)mm/slab.h +0
-3@@ -79,9 +79,6 @@ extern const struct kmalloc_info_struct {unsigned long size; } kmalloc_info[]; -unsigned long calculate_alignment (unsigned long flags, -unsigned long align,unsigned long size); -#ifndef CONFIG_SLOB /* Kmalloc array related functions */ void setup_kmalloc_cache_index_table (void );mm/slab_common.c +29
-27@@ -267,6 +267,35 @@ static inline void memcg_unlink_cache(struct kmem_cache *s) }#endif /* CONFIG_MEMCG && !CONFIG_SLOB */ +/* +* Figure out what the alignment of the objects will be given a set of +* flags, a user specified alignment and the size of the objects. +*/ +static unsigned long calculate_alignment (unsigned long flags, +unsigned long align,unsigned long size) +{ +/* +* If the user wants hardware cache aligned objects then follow that +* suggestion if the object is sufficiently large. +* +* The hardware cache alignment cannot override the specified +* alignment though. If that is greater then use it. +*/ +if (flags &SLAB_HWCACHE_ALIGN ) { +unsigned long ralign; + + ralign =cache_line_size (); +while (size <= ralign /2 ) + ralign /=2 ; + align =max (align, ralign); + } + +if (align <ARCH_SLAB_MINALIGN ) + align =ARCH_SLAB_MINALIGN ; + +return ALIGN (align,sizeof (void *)); +} +/* * Find a mergeable slab cache */ @@ -337,33 +366,6 @@ struct kmem_cache *find_mergeable(size_t size, size_t align,return NULL ; } -/* -* Figure out what the alignment of the objects will be given a set of -* flags, a user specified alignment and the size of the objects. -*/ -unsigned long calculate_alignment (unsigned long flags, -unsigned long align,unsigned long size) -{ -/* -* If the user wants hardware cache aligned objects then follow that -* suggestion if the object is sufficiently large. -* -* The hardware cache alignment cannot override the specified -* alignment though. If that is greater then use it. -*/ -if (flags &SLAB_HWCACHE_ALIGN ) { -unsigned long ralign =cache_line_size (); -while (size <= ralign /2 ) - ralign /=2 ; - align =max (align, ralign); - } - -if (align <ARCH_SLAB_MINALIGN ) - align =ARCH_SLAB_MINALIGN ; - -return ALIGN (align,sizeof (void *)); -} - static struct kmem_cache *create_cache(const char *name, size_t object_size, size_t size, size_t align, unsigned long flags, void (*ctor)(void *),Signature · 7 lines
2.15.1 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Signature · 8 lines
Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>