staticintlog_worker(void*p){/* The thread should have never started */if(log_buf ==NULL)return-EFAULT;while(!kthread_should_stop()) {if(log_buf->write_pos == log_pos)schedule_timeout_interruptible(MAX_SCHEDULE_TIMEOUT);switch(log_buf->version) {case1: log_pos = process_v1log();...
set_current_state(TASK_INTERRUPTIBLE);schedule_timeout(s*hz);唯⼀的参数是延迟的相对时间,单位为jiffies,上列中将相应的任务推⼊可中断睡眠队列,睡眠s秒。因为任务处于可中断状态,所以如果任务收到信号将被唤醒。如果睡眠任务不想接受信号,可以将任务状态设置为TASK_UNINTERRUPTIBLE,然后睡眠。注意,在调⽤...
prepare_to_wait( &queue->queue, &wait, TASK_INTERRUPTIBLE ); one_core_unlock( core );if(timeout_ms) { timeout =schedule_timeout(timeout);if(timeout) { timeout = timeout *1000/ HZ; *timeout_ms = timeout ? timeout :1; }else*timeout_ms =0; }elseschedule(); one_core_lock(...
schedule_timeout也是处理一个时间增量而不是一个 jiffies 的绝对值 schedule_timeout (jit_delay*HZ);雅鲁藏布江之水 初级粉丝 1 sleep_on_timeout、interruptible_sleep_on_timeout和schedule_timeout这几个函数是在2.2版本内核才加入的。在使用2.0的时期,超时值是通过 task 结构中的一个变量(timeout)处理的...
timeout = jiffies + HZ; WRITE_VREG(IMEM_DMA_ADR, mc_addr_map); WRITE_VREG(IMEM_DMA_COUNT,0x1000); WRITE_VREG(IMEM_DMA_CTRL, (0x8000| (7<<16)));while(READ_VREG(IMEM_DMA_CTRL) &0x8000) {if(time_before(jiffies, timeout))schedule();else{ ...
staticintmy3126_interrupt_enable(struct cphy *cphy){schedule_delayed_work(&cphy->phy_update, HZ/30); t1_tpi_read(cphy->adapter, A_ELMER0_GPO, &cphy->elmer_gpo);return0; } 开发者ID:12rafael,项目名称:jellytimekernel,代码行数:6,代码来源:my3126.c ...