[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));
- }
本文介绍了Linux内核中BITS_TO_LONGS宏的作用及其计算原理。该宏用于确定指定比特位数所需long类型变量的数量,通过DIV_ROUND_UP辅助宏实现向上取整。文章通过示例展示了不同比特位数对应的long数量,并提供了测试代码。
303

被折叠的 条评论
为什么被折叠?



