Как использовать SIGRTMIN в x86 или armeabi-v7a abi в Android NDK? - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь использовать сигнал SIGRTMIN для создания обработчика блокирующих сигналов в Android NDK.

int startThread(){
   pthread_t thread;
   sigset_t set;

       /* Block SIGRTMIN other threads created by main()
          will inherit a copy of the signal mask. */

   sigemptyset(&set);
   int rc = sigaddset(&set, SIGRTMIN);
   __android_log_print(ANDROID_LOG_DEBUG, "LOG", "Return Code:%d",rc);
   __android_log_print(ANDROID_LOG_DEBUG, "LOG", "Error Code:%d",errno);
   pthread_sigmask(SIG_BLOCK, &set, NULL);
   pthread_create(&thread, NULL, &sig_thread, (void *) &set);
}

static void *sig_thread(void *arg)
{
   sigset_t *set = arg;
   int s, sig;
   for (;;) {
       s = sigwait(set, &sig);

       __android_log_print(ANDROID_LOG_DEBUG, "LOG", "Signal handling thread got signal %d\n", sig);
   }
}

Я получаю код возврата -1 и код ошибки 22 (EINVAL - неверный аргумент ) при добавлении набора сигналов sigaddset(&set, SIGRTMIN)

Это происходит в x86 или armeabi-v7a abi.Если я использую x86_64, тогда он работает.

Есть ли способ решить эту проблему или какой-либо альтернативы в x86/armeabi-v7a abi в Android?

...