Как я могу использовать сигналы SIGRTMIN + X в Andorid NDK для USB-передач ISOCHRONOUS - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь отправить ISOCHRONOUS URB в Android NDK в C.

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);

В приведенном выше коде я хочу установить сигнал SIGRTMIN для urbRequest.signr.Так что я могу получить сигнал SIGRTMIN по завершении URB и могу вызвать REAP URB после

Но в Android я вообще не получаю сигнал SIGRTMIN.Вместо этого мое приложение убивается без каких-либо исключений

. Можно ли использовать сигнал SIGRTMIN для отправки URB в Android?

Примечание. Я пытался использовать сигналы SIGUSR1 и SIGUSR2, но ART перехватывает эти сигналы.

есть ли в любом случае выполнить изохронную, прерывистую, массовую передачу (с использованием неблокирующего асинхронного ввода-вывода) в Android?

...