hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/tools/include/linux/bitops.h
....@@ -3,6 +3,7 @@
33 #define _TOOLS_LINUX_BITOPS_H_
44
55 #include <asm/types.h>
6
+#include <limits.h>
67 #ifndef __WORDSIZE
78 #define __WORDSIZE (__SIZEOF_LONG__ * 8)
89 #endif
....@@ -13,10 +14,11 @@
1314 #include <linux/bits.h>
1415 #include <linux/compiler.h>
1516
16
-#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))
17
-#define BITS_TO_U64(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u64))
18
-#define BITS_TO_U32(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u32))
19
-#define BITS_TO_BYTES(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE)
17
+#define BITS_PER_TYPE(type) (sizeof(type) * BITS_PER_BYTE)
18
+#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_TYPE(long))
19
+#define BITS_TO_U64(nr) DIV_ROUND_UP(nr, BITS_PER_TYPE(u64))
20
+#define BITS_TO_U32(nr) DIV_ROUND_UP(nr, BITS_PER_TYPE(u32))
21
+#define BITS_TO_BYTES(nr) DIV_ROUND_UP(nr, BITS_PER_TYPE(char))
2022
2123 extern unsigned int __sw_hweight8(unsigned int w);
2224 extern unsigned int __sw_hweight16(unsigned int w);