我们知道USB URB完成回调将在softIRQ上下文中执行。 让我解释一下我尝试使用send_sig_info()的背景。 所以我目前在数据采集委员会上工作。为此,在USB设备端,我有两个模块,FPGA和FX3 USB芯片。 FX3设备固件暴露于4个端点。在4个EP中,有2个用于FPGA的寄存器读/写,有1个用于捕获中断IN EP。
我的项目中有一个要求,要捕获FPGA的中断信号(FPGA将GPIO引脚上的中断传递给FX3,并且FX3会响应FX3产生伪数据),并在设备IN驱动程序中成功接收到设备驱动器中的中断信号后,读取使用批量urb的FPGA中断状态寄存器。因此,在中断IN urb完成回调中,我计划提交大容量urb来读取FPGA中断寄存器。
现在不再要解释了,主要要点。在成功读取FPGA的中断状态寄存器值后,在上述批量urb完成回调中,我需要使用信号将该整数值发送给userapp。这样userapp事件引擎将执行适当的操作。
那么在批量urb完成回调中调用send_sig_info()将数据传送到userapp是否安全?