linux - 如何知道 schedule() 调用何时因信号返回?

标签 linux linux-kernel scheduling signals linux-device-driver

在某些 PCI 硬件的设备驱动程序中,我有一个 ioctl 调用等待 PCI 总线上的传入中断。使用 wait_queue_head_t,我通过调用 schedule() 使任务进入休眠状态。

然后,当 PCI 总线上出现中断时,irq_handler 函数会唤醒此任务。一切似乎都正常工作。

我的问题是如何区分 schedule() 调用返回是因为我的 irq_handler 函数唤醒了它,还是因为发送了一些信号?

我是否必须通过 irq_handler 函数中的标志自行处理?

最佳答案

schedule 调用之后,类似这样的事情:

if (signal_pending(current)) {
    retval = -EINTR;

关于linux - 如何知道 schedule() 调用何时因信号返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1832033/

相关文章:

c++ - 如何确定符号链接(symbolic link)指向的文件路径?

c++ - HP Fortify 分析结果,system() 命令注入(inject)

c - 如何使用 linux 内核中的 lockdep 功能进行死锁检测

c - 如何杀死内核模块中的等待队列?

sql - sql server 2008 中的计划程序我的做法正确还是存在问题?

algorithm - 使用哪种算法为学校生成时间表

python - 未应用于 setuid ed 进程的用户的 Linux 组调度

linux - 为 X 数量替换未知数量的空格

linux - sqlite3如何编辑一个大文件?

c - 从 C 代码打开 Linux 控制台