//------------------------------------------------------------------------------------- uint32 SystemInfo::countCPU() { static uint32 count = 0; if(count == 0) { int status = SIGAR_OK; sigar_t *sigarcpulist; sigar_cpu_list_t cpulist; sigar_open(&sigarcpulist); status = sigar_cpu_list_get(sigarcpulist, &cpulist); if (status != SIGAR_OK) { DEBUG_MSG(fmt::format("error: {} ({}) cpu_list_get\n", status, sigar_strerror(sigarcpulist, status))); count = 1; } else { count = cpulist.number; sigar_cpu_list_destroy(sigarcpulist, &cpulist); } sigar_close(sigarcpulist); } return count; }
int sigar_cpu_get(sigar_t *sigar, sigar_cpu_t *cpu) { int status, i; status = sigar_cpu_list_get(sigar, &sigar->cpulist); if (status != SIGAR_OK) { return status; } SIGAR_ZERO(cpu); for (i=0; i<sigar->cpulist.number; i++) { sigar_cpu_t *xcpu = &sigar->cpulist.data[i]; cpu->user += xcpu->user; cpu->sys += xcpu->sys; cpu->idle += xcpu->idle; cpu->nice += xcpu->nice; cpu->wait += xcpu->wait; cpu->total += xcpu->total; } return SIGAR_OK; }
JNIEXPORT jobjectArray SIGAR_JNIx(getCpuListNative) (JNIEnv *env, jobject sigar_obj) { int status; unsigned int i; sigar_cpu_list_t cpulist; jobjectArray cpuarray; jclass cls = SIGAR_FIND_CLASS("Cpu"); dSIGAR(NULL); if ((status = sigar_cpu_list_get(sigar, &cpulist)) != SIGAR_OK) { sigar_throw_error(env, jsigar, status); return NULL; } JAVA_SIGAR_INIT_FIELDS_CPU(cls); cpuarray = JENV->NewObjectArray(env, cpulist.number, cls, 0); SIGAR_CHEX; for (i=0; i<cpulist.number; i++) { jobject info_obj = JENV->AllocObject(env, cls); SIGAR_CHEX; JAVA_SIGAR_SET_FIELDS_CPU(cls, info_obj, cpulist.data[i]); JENV->SetObjectArrayElement(env, cpuarray, i, info_obj); SIGAR_CHEX; } sigar_cpu_list_destroy(sigar, &cpulist); return cpuarray; }