コード例 #1
0
ファイル: sys_info.cpp プロジェクト: flyawayii/kbengine
//-------------------------------------------------------------------------------------
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;
}
コード例 #2
0
ファイル: solaris_sigar.c プロジェクト: couchbase/sigar
int sigar_os_close(sigar_t *sigar)
{
    kstat_close(sigar->kc);
    if (sigar->mib2.sd != -1) {
        close_mib2(&sigar->mib2);
    }

    if (sigar->ks.lcpu) {
        free(sigar->ks.cpu);
        free(sigar->ks.cpu_info);
        free(sigar->ks.cpuid);
    }
    if (sigar->pinfo) {
        free(sigar->pinfo);
    }
    if (sigar->cpulist.size != 0) {
        sigar_cpu_list_destroy(sigar, &sigar->cpulist);
    }
    if (sigar->plib) {
        dlclose(sigar->plib);
    }
    if (sigar->pargs) {
        sigar_cache_destroy(sigar->pargs);
    }
    free(sigar);
    return SIGAR_OK;
}
コード例 #3
0
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;
}