.. | .. |
---|
3 | 3 | #define _TOOLS_LINUX_BITOPS_H_ |
---|
4 | 4 | |
---|
5 | 5 | #include <asm/types.h> |
---|
| 6 | +#include <limits.h> |
---|
6 | 7 | #ifndef __WORDSIZE |
---|
7 | 8 | #define __WORDSIZE (__SIZEOF_LONG__ * 8) |
---|
8 | 9 | #endif |
---|
.. | .. |
---|
13 | 14 | #include <linux/bits.h> |
---|
14 | 15 | #include <linux/compiler.h> |
---|
15 | 16 | |
---|
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)) |
---|
20 | 22 | |
---|
21 | 23 | extern unsigned int __sw_hweight8(unsigned int w); |
---|
22 | 24 | extern unsigned int __sw_hweight16(unsigned int w); |
---|