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

时间:2018-11-23 14:27:41

标签: android linux android-ndk signals ioctl

我正在尝试使用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)的操作?

0 个答案:

没有答案