Chinaunix

标题: 对__might_sleep的一个疑问 [打印本页]

作者: amarant    时间: 2011-02-15 10:25
标题: 对__might_sleep的一个疑问
  1. void __might_sleep(char *file, int line)
  2. {
  3. #if defined(in_atomic)
  4.         static unsigned long prev_jiffy;        /* ratelimiting */

  5.         if ((in_atomic() || irqs_disabled()) &&
  6.             system_state == SYSTEM_RUNNING) {
  7.                 if (time_before(jiffies, prev_jiffy + HZ) && prev_jiffy)
  8.                         return;
  9.                 prev_jiffy = jiffies;
  10.                 printk(KERN_ERR "Debug: sleeping function called from invalid"
  11.                                 " context at %s:%d\n", file, line);
  12.                 printk("in_atomic():%d, irqs_disabled():%d\n",
  13.                         in_atomic(), irqs_disabled());
  14.                 dump_stack();
  15.         }
  16. #endif
  17. }
复制代码
其中这个prev_jiffy不是一直都是为0吗?那这个判断if (time_before(jiffies, prev_jiffy + HZ) && prev_jiffy)有什么意义?
作者: Godbach    时间: 2011-02-15 10:48
看一下这个变量的类型
        static unsigned long prev_jiffy;        /* ratelimiting */

作者: amarant    时间: 2011-02-15 11:29
回复 2# Godbach


    明白了,刚才只想到static初始化的值为0,忘记了static会一直存在不会释放的了
作者: Godbach    时间: 2011-02-15 11:52
是的。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2