繁体   English   中英

Linux内核在驱动程序中读取功能

[英]Linux kernel sleeping in driver read function

我正在开发Linux内核字符驱动程序,在读取函数中,我在循环中睡眠,直到从硬件获取数据。 如果我在读取系统调用中阻止用户应用程序时,应用程序仍然正常工作,之后我从read syscall返回。 是否有可能在驱动程序中确定应用程序已终止,因此我可以从循环返回?

在等待数据时,应将进程添加到等待队列(add_wait_queue()),然后使用set_current_state(TASK_INTERRUPTIBLE)并调用schedule()。 当数据进入时 - 它应该以某种方式被识别 - 例如使用一些中断然后唤醒睡眠任务(wake_up())。 内核源代码中有很多例子。

换句话说 - 在读取功能中,您需要在没有数据时进入休眠状态,而在某些其他路径(中断)中则需要唤醒此读取功能。 最好不要在读取功能中忙碌等待。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM