如何在 Andorid NDK 中使用 SIGRTMIN + X 信号进行 USB ISOCHRONOUS 传输

sun*_*amy 5 linux android signals ioctl android-ndk

我正在尝试在 C 语言的 Android NDK 中提交 ISOCHRONOUS URB。

usbdevfs_urb&   urbRequest      = *(usbdevfs_urb*)malloc( 384 );
urbRequest.type                 = USBDEVFS_URB_TYPE_ISO;
urbRequest.endpoint             = mpEndpoint->GetEndpointAddress();//mpEndpoint->GetEndpointIndex();
urbRequest.status               = 0;
urbRequest.flags                = USBDEVFS_URB_ISO_ASAP;
urbRequest.buffer               = pData;
urbRequest.buffer_length        = 0;
urbRequest.actual_length        = 0;
urbRequest.start_frame          = 0;
urbRequest.number_of_packets    = 1;
urbRequest.error_count          = 0;
urbRequest.signr                = SIGRTMIN;
urbRequest.usercontext          = pData;

usbdevfs_iso_packet_desc* pIsoPacketDesc    = &urbRequest.iso_frame_desc[0];
pIsoPacketDesc->length          = 384;
pIsoPacketDesc->actual_length   = 0;
pIsoPacketDesc->status          = 0;



ioctl( fd, USBDEVFS_SUBMITURB, &usbRequest);
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我想为 urbRequest.signr 设置 SIGRTMIN 信号。这样我就可以在 URB 完成时获得 SIGRTMIN 信号,并且可以在之后调用 REAP URB

但在 Android 中我根本没有收到 SIGRTMIN 信号。相反,我的应用程序毫无例外地被杀死

有什么方法可以使用 SIGRTMIN 信号在 Android 中提交 URB 吗?

注意:我尝试使用 SIGUSR1 和 SIGUSR2 信号,但 ART 正在捕获这些信号

无论如何,在Android中是否可以进行同步、中断、批量传输(使用非阻塞异步IO)?