首页 > 解决方案 > linux:对内核模块的ioctl请求超时

问题描述

我为 FPGA 编写了一个内核模块,它每 N 毫秒生成一个中断。

在应用程序中,代码为:

ioctl(m_Handle, INTERRUPT_REQUEST_CODE,&Request);

在内核模块中,处理这个 ioctl 的情况是:

case INTERRUPT_REQUEST_CODE:
    copy_from_user(&InterruptRequest, (void*)IoctlParam, sizeof(INTERRUPT_REQUEST));
    rc=wait_event_interruptible_timeout(sWaitQueuePacket, sInterruptFlagPacket != 0, Request.timeout);
    sInterruptFlagPacket = 0;
    InterruptRequest.Error = rc;
    copy_to_user(&InterruptRequest, (void*)IoctlParam, sizeof(INTERRUPT_REQUEST));
    
    break;

这是在应用程序中通知超时的正确方法吗?

谢谢你,兹维卡

标签: linuxkernelioctl

解决方案


推荐阅读