- 论坛徽章:
- 0
|
我费解了很久 还是不解::
在include\linux\Cupmask.h中有如下定义
typedef struct { DECLARE_BITMAP(bits, NR_CPUS); } cpumask_t;
extern cpumask_t _unused_cpumask_arg_;
#define cpu_set(cpu, dst) __cpu_set((cpu), &(dst))
static inline void __cpu_set(int cpu, volatile cpumask_t *dstp)
{
set_bit(cpu, dstp->bits);
}
在include\linux\Types.h中有如下定义
#ifdef __KERNEL__
#define BITS_TO_LONGS(bits) \
(((bits)+BITS_PER_LONG-1)/BITS_PER_LONG)
#define DECLARE_BITMAP(name,bits) \
unsigned long name[BITS_TO_LONGS(bits)](这个bits =32)
#define BITS_PER_BYTE 8
#endif
我们可以得出:cpumask_t 等价于 unsigned long bits[1]
那么cpumask_t *dstp 就是一个指向 unsigned long 数组的指针
那么 为什么会出现 这样的 表达式 set_bit(cpu, dstp->bits); ????? |
|