是否可以在Android中设置与sched_setaffinity的亲和力?

是否可以在使用Android NDK编译的本机C代码中设置CPU亲和力? 由于系统使用的是Linux内核,因此应该可以使用sched_setaffinity / sched_getaffinity函数,但是当我使用NDK进行编译时,我会收到错误抱怨cpu_set_t类型未知(用作函数的参数) 。 有没有其他方法可以实现这一目标? 当我使用CodeSourcerys ARM编译器(arm-none-linux-gnueabi-gcc)编译时,这似乎不是问题,因此系统显然支持所需的系统调用。

以下代码适用于NDK r5或更新版本:

#include  #include  void setCurrentThreadAffinityMask(int mask) { int err, syscallres; pid_t pid = gettid(); syscallres = syscall(__NR_sched_setaffinity, pid, sizeof(mask), &mask); if (syscallres) { err = errno; LOGE("Error in the syscall setaffinity: mask=%d=0x%x err=%d=0x%x", mask, mask, err, err); } }