我正在尝试使用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);
在上面的代码中,我想为urbRequest.signr设置SIGRTMIN信号。 这样我就可以在URB完成时收到SIGRTMIN信号,之后可以调用REAP URB
但是在Android中,我根本没有收到SIGRTMIN信号。相反,我的应用无一例外被杀死
我可以使用SIGRTMIN信号在Android中提交URB吗?
注意:我尝试使用SIGUSR1和SIGUSR2信号,但是ART正在捕获这些信号
在Android中是否有进行同步,中断,批量传输(使用非阻塞异步IO)的操作?