tools: Remove bitops/ hweight usage of bits in tools/perf
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 25cd480e447eba47b8bdad1c9f95cadc074abc75 Gitweb: http://git.kernel.org/tip/25cd480e447eba47b8bdad1c9f95cadc074abc75 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Tue, 13 Jan 2015 10:19:12 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Fri, 16 Jan 2015 17:49:29 -0300
tools: Remove bitops/hweight usage of bits in tools/perf
We need to use lib/hweight.c for that, just like we do for lib/rbtree.c, so tools need to link hweight.o. For now do it directly, but we need to have a tools/lib/lk.a or .so that collects these goodies...
Reported-by Jan Beulich <[email protected]>
Cc Adrian Hunter <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc David Ahern <[email protected]>
Cc Don Zickus <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Mike Galbraith <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Paul Mackerras <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Stephane Eranian <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/include/asm-generic/bitops.h | 2 ++ tools/include/asm-generic/bitops/arch_hweight.h | 1 + tools/include/asm-generic/bitops/const_hweight.h | 1 + tools/include/asm-generic/bitops/hweight.h | 7 ++++++ tools/include/linux/bitops.h | 7 +++++- tools/perf/MANIFEST | 6 +++++ tools/perf/Makefile.perf | 7 +++++- tools/perf/util/hweight.c | 31 ------------------------ tools/perf/util/include/asm/hweight.h | 8 ------ tools/perf/util/python-ext-sources | 2 +- 10 files changed, 30 insertions(+), 42 deletions(-)
tools/include/asm-generic/bitops.h +2 -0
@@ -22,6 +22,8 @@#error only <linux/bitops.h> can be included directly#endif +#include <asm-generic/bitops/hweight.h> +#include <asm-generic/bitops/atomic.h> #endif /* __TOOLS_ASM_GENERIC_BITOPS_H */
tools/include/asm-generic/bitops/arch_hweight.h new file +1 -0
@@ -0,0 +1 @@ +#include "../../../../include/asm-generic/bitops/arch_hweight.h"
tools/include/asm-generic/bitops/const_hweight.h new file +1 -0
@@ -0,0 +1 @@ +#include "../../../../include/asm-generic/bitops/const_hweight.h"
tools/include/asm-generic/bitops/hweight.h new file +7 -0
@@ -0,0 +1,7 @@ +#ifndef _TOOLS_LINUX_ASM_GENERIC_BITOPS_HWEIGHT_H_ +#define _TOOLS_LINUX_ASM_GENERIC_BITOPS_HWEIGHT_H_ + +#include <asm-generic/bitops/arch_hweight.h> +#include <asm-generic/bitops/const_hweight.h> + +#endif /* _TOOLS_LINUX_ASM_GENERIC_BITOPS_HWEIGHT_H_ */
tools/include/linux/bitops.h +6 -1
@@ -1,9 +1,9 @@#ifndef _TOOLS_LINUX_BITOPS_H_#define _TOOLS_LINUX_BITOPS_H_ +#include <asm/types.h> #include <linux/kernel.h> #include <linux/compiler.h> -#include <asm/hweight.h> #ifndef __WORDSIZE#define __WORDSIZE (__SIZEOF_LONG__ * 8)
@@ -19,6 +19,11 @@#define BITS_TO_U32 (nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u32))#define BITS_TO_BYTES (nr) DIV_ROUND_UP(nr, BITS_PER_BYTE) +extern unsigned int __sw_hweight8 (unsigned int w); +extern unsigned int __sw_hweight16 (unsigned int w); +extern unsigned int __sw_hweight32 (unsigned int w); +extern unsigned long __sw_hweight64 (__u64 w); +/* * Include this here because some architectures need generic_ffs/fls in * scope
tools/perf/MANIFEST +6 -0
@@ -6,12 +6,15 @@ tools/lib/symbol/kallsyms.c tools/lib/symbol/kallsyms.h tools/lib/util/find_next_bit.c tools/include/asm/bug.h +tools/include/asm-generic/bitops/arch_hweight.h tools/include/asm-generic/bitops/atomic.h +tools/include/asm-generic/bitops/const_hweight.h tools/include/asm-generic/bitops/__ffs.h tools/include/asm-generic/bitops/__fls.h tools/include/asm-generic/bitops/find.h tools/include/asm-generic/bitops/fls64.h tools/include/asm-generic/bitops/fls.h +tools/include/asm-generic/bitops/hweight.h tools/include/asm-generic/bitops.h tools/include/linux/bitops.h tools/include/linux/compiler.h
@@ -19,6 +22,8 @@ tools/include/linux/export.h tools/include/linux/hash.h tools/include/linux/log2.h tools/include/linux/types.h +include/asm-generic/bitops/arch_hweight.h +include/asm-generic/bitops/const_hweight.h include/asm-generic/bitops/fls64.h include/asm-generic/bitops/__fls.h include/asm-generic/bitops/fls.h
@@ -29,6 +34,7 @@ include/linux/list.h include/linux/hash.h include/linux/stringify.h lib/find_next_bit.c +lib/hweight.c lib/rbtree.c include/linux/swab.h arch/*/include/asm/unistd*.h
tools/perf/Makefile.perf +6 -1
@@ -232,12 +232,15 @@ LIB_H += ../include/linux/hash.h LIB_H += ../../include/linux/stringify.h LIB_H += util/include/linux/bitmap.h LIB_H += ../include/linux/bitops.h +LIB_H += ../include/asm-generic/bitops/arch_hweight.h LIB_H += ../include/asm-generic/bitops/atomic.h +LIB_H += ../include/asm-generic/bitops/const_hweight.h LIB_H += ../include/asm-generic/bitops/find.h LIB_H += ../include/asm-generic/bitops/fls64.h LIB_H += ../include/asm-generic/bitops/fls.h LIB_H += ../include/asm-generic/bitops/__ffs.h LIB_H += ../include/asm-generic/bitops/__fls.h +LIB_H += ../include/asm-generic/bitops/hweight.h LIB_H += ../include/asm-generic/bitops.h LIB_H += ../include/linux/compiler.h LIB_H += ../include/linux/log2.h
@@ -255,7 +258,6 @@ LIB_H += util/include/linux/linkage.h LIB_H += util/include/asm/asm-offsets.h LIB_H += ../include/asm/bug.h LIB_H += util/include/asm/byteorder.h -LIB_H += util/include/asm/hweight.h LIB_H += util/include/asm/swab.h LIB_H += util/include/asm/system.h LIB_H += util/include/asm/uaccess.h
@@ -745,6 +747,9 @@ $(OUTPUT)util/kallsyms.o: ../lib/symbol/kallsyms.c $(OUTPUT)PERF-CFLAGS $(OUTPUT)util/rbtree.o: ../../lib/rbtree.c $(OUTPUT)PERF-CFLAGS $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -Wno-unused-parameter -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $< +$(OUTPUT)util/hweight.o: ../../lib/hweight.c $(OUTPUT)PERF-CFLAGS + $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -Wno-unused-parameter -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $< + $(OUTPUT)util/find_next_bit.o: ../lib/util/find_next_bit.c $(OUTPUT)PERF-CFLAGS $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -Wno-unused-parameter -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $<
tools/perf/util/hweight.c deleted +0 -31
@@ -1,31 +0,0 @@ -#include <linux/bitops.h> - -/** -* hweightN - returns the hamming weight of a N-bit word -* @x: the word to weigh -* -* The Hamming Weight of a number is the total number of bits set in it. -*/ - -unsigned int hweight32 (unsigned int w) -{ -unsigned int res = w - ((w >>1 ) &0x55555555 ); - res = (res &0x33333333 ) + ((res >>2 ) &0x33333333 ); - res = (res + (res >>4 )) &0x0F0F0F0F ; - res = res + (res >>8 ); -return (res + (res >>16 )) &0x000000FF ; -} - -unsigned long hweight64 (__u64 w) -{ -#if BITS_PER_LONG ==32 -return hweight32 ((unsigned int )(w >>32 )) +hweight32 ((unsigned int )w); -#elif BITS_PER_LONG ==64 -__u64 res = w - ((w >>1 ) &0x5555555555555555ul ); - res = (res &0x3333333333333333ul ) + ((res >>2 ) &0x3333333333333333ul ); - res = (res + (res >>4 )) &0x0F0F0F0F0F0F0F0Ful ; - res = res + (res >>8 ); - res = res + (res >>16 ); -return (res + (res >>32 )) &0x00000000000000FFul ; -#endif -}
tools/perf/util/include/asm/hweight.h deleted +0 -8
@@ -1,8 +0,0 @@ -#ifndef PERF_HWEIGHT_H -#define PERF_HWEIGHT_H - -#include <linux/types.h> -unsigned int hweight32 (unsigned int w); -unsigned long hweight64 (__u64 w); - -#endif /* PERF_HWEIGHT_H */
tools/perf/util/python-ext-sources +1 -1
@@ -10,7 +10,7 @@ util/ctype.c util/evlist.c util/evsel.c util/cpumap.c -util/hweight.c +../../lib/hweight.c util/thread_map.c util/util.c util/xyarray.c