在这个示例中,wait_for_device_operation 函数使用 wait_event_interruptible_timeout 来等待设备操作完成。根据返回值的不同,它会执行不同的处理逻辑。
3,signal_pending(current):检查当前进程是否有信号处理,返回值不为0则表示有信号需要处理。 返回-ERESTARTSYS 表示信号函数处理完毕后重新执行信号函数前的某个系统调用。(此函数只检查是否有信号,不处理信号) 条件不满足,则产生信号、开始等待。若返回非0,则表示没有信号需要处理,继续循环重新开始系统调用;若返回0,...
返回1:到timeout时间超时时,condition是true; 返回>1的值:表示在timeout超时前,condition已经为true,返回的值是剩余没有走完的jeffies(timeout的单位是jeffies) 返回-ERESTARTSYS:意味着在等待过程中,被信号打断了(因为该函数休眠的状态是TASK_INTERRUPTIBLE,可以被信号中断),用户可以根据这个返回值做进一步的处理,比如...
而调用schedule_timeout的进程始终会在超时到期时被唤醒。 二、函数原型 wait_event_interruptible_timeout(queue, condition, timeout) 返回值: 大于零:剩余时间(以jiffy计) 零:给定的时间到期。 signed long schedule_timeout(signed long timeout); 返回值: 零:正常返回值 大于零:函数提前返回(比如响应某个信...
3,signal_pending(current) :检查当前进程是否有信号处理,返回值不为0则表示有信号需要处理。 返回-ERESTARTSYS 表示信号函数处理完毕后重新执行信号函数前的某个系统调用。(此函数只检查是否有信号,不处理信号) 条件不满足,则产生信号、开始等待。若返回非0,则表示没有信号需要处理,继续循环重新开始系统调用;若返回0...