schedule_timeout(s*hz);唯⼀的参数是延迟的相对时间,单位为jiffies,上列中将相应的任务推⼊可中断睡眠队列,睡眠s秒。因为任务处于可中断状态,所以如果任务收到信号将被唤醒。如果睡眠任务不想接受信号,可以将任务状态设置为TASK_UNINTERRUPTIBLE,然后睡眠。注意,在调⽤schedule_timeout()函数前必须⾸先将...
oplockThread = current;do{ set_current_state(TASK_INTERRUPTIBLE);schedule_timeout(1*HZ); spin_lock(&GlobalMid_Lock);if(list_empty(&GlobalOplock_Q)) { spin_unlock(&GlobalMid_Lock); set_current_state(TASK_INTERRUPTIBLE);schedule_timeout(39*HZ); }else{ oplock_item = list_entry(GlobalOplock...
/* wait until all locks are released */voidsnd_use_lock_sync_helper(snd_use_lock_t*lockp,constchar*file,intline){intmax_count =5* HZ;if(atomic_read(lockp) <0) { printk(KERN_WARNING"seq_lock: lock trouble [counter = %d] in %s:%d\n", atomic_read(lockp), file, line);return;...
schedule_timeout_uninterruptible(sleep_time * HZ); // HZ是内核中的一个常量,表示每秒的时钟周期数 //继续执行其他任务 } ``` 在上述示例中,我们首先将当前任务设置为不可中断的睡眠状态(TASK_UNINTERRUPTIBLE),然后调用`schedule_timeout_uninterruptible`函数来使任务进入睡眠,并等待指定的时间。 需要注意的是...
schedule_timeout也是处理一个时间增量而不是一个 jiffies 的绝对值 schedule_timeout (jit_delay*HZ);雅鲁藏布江之水 初级粉丝 1 sleep_on_timeout、interruptible_sleep_on_timeout和schedule_timeout这几个函数是在2.2版本内核才加入的。在使用2.0的时期,超时值是通过 task 结构中的一个变量(timeout)处理的...
}schedule_timeout_interruptible(HZ/10); }if(seconds_waited) printk("\n"); bus_for_each_dev(&xenbus_frontend.bus,NULL, drv, print_device_status); } 开发者ID:303750856,项目名称:linux-3.1,代码行数:43,代码来源:xenbus_probe_frontend.c ...