我正在尝试为 Android 编写代码,它会给我一些关于处理器和运行线程的内核的信息(id?)。
我用 google 和 grep 搜索了一些灵感来源,但没有成功。我所知道的是,我很可能需要一些 C/C++ 调用。
我的工作如下:
#include <jni.h>
int getCpuId() {
// missing code
return 0;
}
int getCoreId() {
// missing code
return 0;
}
JNIEXPORT int JNICALL Java_com_spendoptima_Utils_getCpuId(JNIEnv * env,
jobject obj) {
return getCpuId();
}
JNIEXPORT int JNICALL Java_com_spendoptima_Utils_getCoreId(JNIEnv * env,
jobject obj) {
return getCoreId();
}
整个项目编译和运行都很好。我能够从 Java 中调用函数并得到正确的响应。
这里有人可以填空吗?
最佳答案
这似乎对我有用:
//...
#include <sys/syscall.h>
//...
int getCpuId() {
unsigned cpu;
if (syscall(__NR_getcpu, &cpu, NULL, NULL) < 0) {
return -1;
} else {
return (int) cpu;
}
}
//...
关于Android:找出线程运行在哪个内核上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21114421/