Android pthread_setaffinity_np在内核休眠时失败?我怎样才能叫醒他们?

Android pthread_setaffinity_np在内核休眠时失败?我怎样才能叫醒他们?,android,c,linux,multithreading,operating-system,Android,C,Linux,Multithreading,Operating System,我在具有3.10.24 Linux内核的ARM机器上使用这样的构造: CPU_ZERO(&affinity); CPU_SET(3, &affinity); pthread_t thread = pthread_self(); iErr = pthread_setaffinity_np(thread, sizeof(cpu_set_t), &affinity); iErr为22,pthread_setaffinity_np失败。在x86上,代码可以完美地工作。如果我将

我在具有3.10.24 Linux内核的ARM机器上使用这样的构造:

CPU_ZERO(&affinity);
CPU_SET(3, &affinity);

pthread_t thread = pthread_self();
iErr = pthread_setaffinity_np(thread, sizeof(cpu_set_t), &affinity);
iErr为22,pthread_setaffinity_np失败。在x86上,代码可以完美地工作。如果我将线程亲缘关系设置为核心0,它就会工作

现在我认为这与我的问题有关,下面的指令输出1,即使CPU有4个核

iNumProc = sysconf(_NPROCESSORS_CONF);
iNumProc = get_nprocs();
我开始认为这两个问题是相关的

因此,我的猜测是,其中一条评论建议核心1、2、3保持休眠状态,我需要手动让它们醒来,然后请求调度程序在其上放置一些线程


在这种情况下,您知道如何在设置关联之前手动唤醒核心吗?任何在Linux/Android上运行的解决方案都可以。

pthread\u setaffinity\u nphread、sizeofcpu\u set\t和affinity;谢谢我修改了我的帖子。粘贴在这里的代码中有一个输入错误,不是在我的机器上。我不熟悉,但看看man pthread_setaffinity_np,似乎您得到了EINVAL,因为您指定的CPU超出了内核cf CONFIG_NR_CPU支持的集。因此,您的2 pb可能确实相关。$grep CONFIG\u NR\u CPUS/boot/YOUR\u CONFIG为您提供了什么?解析/proc/cpuinfo从来都不是正确的解决方案。@VAndrei:您可以读取\u NPROCESSORS\u CONF而不是\u NPROCESSORS\u ONLN。