Chinaunix首页 | 论坛 | 博客
  • 博客访问: 291182
  • 博文数量: 49
  • 博客积分: 3083
  • 博客等级: 中校
  • 技术积分: 710
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-27 08:22
文章分类

全部博文(49)

文章存档

2009年(8)

2008年(41)

分类: LINUX

2008-06-19 22:16:40

    今天研究的最后一段代码了,在kernel/sched.c中多次出现的for_each_cpu_mask()
是个宏文件,定义如下:


#if NR_CPUS > 1
#define for_each_cpu_mask(cpu, mask) \
        for ((cpu) = first_cpu(mask); \
                (cpu) < NR_CPUS; \
                (cpu) = next_cpu((cpu), (mask)))
#else /* NR_CPUS == 1 */
#define for_each_cpu_mask(cpu, mask) \
        for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask)
#endif /* NR_CPUS */


    通过代码可以看到,该宏是对每一个CPU进行遍历。通过对NR_CPU(NR_CPU记录物理CPU中的逻辑CPU的数目)的值来使用不同的循环方式。作为一个宏,在编译的时候能根据实际的情况来自动寻找合适的循环条件,对CPU进行遍历。
阅读(3207) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~