[linux-3.0]
BITS_TO_LONGS
定义在:include/linux/bitops.h
#define BITS_PER_BYTE 8
#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))
DIV_ROUND_UP
定义在:include/linux/kernel.h (line 58)
#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
其目的就是求一个数是几个long的长度。
例:sizeof(long) = 4;
则
BITS_TO_LONGS(31) = 1
BITS_TO_LONGS(32) = 1
BITS_TO_LONGS(33) = 2
The following is the test code:
- #include <stdio.h>
- #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
- #define BITS_PER_BYTE 8
- #define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))
- main()
- {
- int j = 32;
- printf("The size of long is %ld\n", sizeof(long));
- printf("The convertion result is %ld\n", BITS_TO_LONGS(j));
- }