struct VM_SYSINFO_CPULOAD *vm_sys_info_create_cpu_data(void) { int i = 0; HQUERY tmpq = 0; struct VM_SYSINFO_CPULOAD *dbuf = NULL; dbuf = (struct VM_SYSINFO_CPULOAD *)malloc(sizeof(struct VM_SYSINFO_CPULOAD)); if (dbuf != NULL) { dbuf[0].cpudes = NULL; dbuf[0].ncpu = vm_sys_info_get_cpu_num(); dbuf[0].cpudes = (struct VM_SYSINFO_CPULOAD_ENTRY *)(malloc(sizeof(struct VM_SYSINFO_CPULOAD_ENTRY)*(dbuf[0].ncpu+1))); if (dbuf[0].cpudes == NULL) { free(dbuf); dbuf = NULL; } else { dbuf[0].tickspassed = 0; // prepare system specific fields dbuf[0].CpuLoadQuery = 0; for( i = 0; i < MAX_PERF_PARAMETERS; ++i ) dbuf[0].CpuPerfCounters[i] = NULL; tmpq = dbuf[0].CpuLoadQuery; PdhOpenQuery(NULL, 0, &tmpq); if (tmpq == 0) { free(dbuf[0].cpudes); free(dbuf); dbuf = NULL; } else dbuf[0].CpuLoadQuery = tmpq; } } return dbuf; }
inline mfxU32 CalculateNumThread(mfxVideoParam *par, eMFXPlatform platform) { mfxU32 numThread = (MFX_PLATFORM_SOFTWARE == platform) ? vm_sys_info_get_cpu_num() : 1; if (!par->AsyncDepth) return numThread; return MFX_MIN(par->AsyncDepth, numThread); }
int main() { printf(" Sys Info testing : \n"); char cpu_name[256]; Ipp32u value =0; vm_sys_info_get_computer_name(&cpu_name[0]); printf(" Computer Name: %s \n", cpu_name); vm_sys_info_get_os_name(&cpu_name[0]); printf(" OS Name: %s \n", cpu_name); vm_sys_info_get_cpu_name(&cpu_name[0]); printf(" CPU Name: %s \n", cpu_name); value = vm_sys_info_get_cpu_speed(); printf(" CPU Speed: %d \n", value); value = vm_sys_info_get_cpu_num(); printf(" CPU Number: %d \n", value); value = vm_sys_info_get_avail_cpu_num(); printf(" CPU Available: %d \n", value); value = vm_sys_info_get_mem_size(); printf(" Memory Size: %d \n", value); vm_sys_info_get_vga_card(&cpu_name[0]); printf(" VGA Name: %s \n", cpu_name); VM_PID pid; pid = vm_sys_info_getpid(); printf(" Process ID: %d \n", pid); // value = vm_sys_info_get_process_memory_usage(pid); // printf(" Process Memory: %d \n", value); //void vm_sys_info_get_date(vm_char *m_date, DateFormat df); //void vm_sys_info_get_time(vm_char *m_time, TimeFormat tf); vm_sys_info_get_program_name(&cpu_name[0]); printf(" Program Name: %s \n", cpu_name); vm_sys_info_get_program_path(&cpu_name[0]); printf(" Program Path: %s \n", cpu_name); // void vm_sys_info_get_program_description(vm_char *program_description); return 0; }
inline mfxU32 CalculateAsyncDepth(eMFXPlatform platform, mfxVideoParam *par) { mfxU32 asyncDepth = par->AsyncDepth; if (!asyncDepth) { asyncDepth = (platform == MFX_PLATFORM_SOFTWARE) ? vm_sys_info_get_cpu_num() : MFX_AUTO_ASYNC_DEPTH_VALUE; } return asyncDepth; }
vm_status vm_sys_info_cpu_loading_avg(struct VM_SYSINFO_CPULOAD *dbuf, Ipp32u timeslice/* in msec */) { PDH_STATUS sts = ERROR_SUCCESS; HQUERY tmpq = 0; vm_status rtval = VM_NULL_PTR; vm_char scountername[MAX_COUNTER_NAME]; PDH_HCOUNTER cptr = NULL; BOOL isprepared = FALSE; DWORD t; PDH_FMT_COUNTERVALUE v; int i; /* we need 1 ms period to hold timeslice time correct */ timeBeginPeriod(ONEMILLISECOND); do { #ifdef VM_CHECK_CPU_CHECK_TIMESLICE if (timeslice < 10) { rtval = VM_NOT_ENOUGH_DATA; break; } #endif if (dbuf == NULL) { dbuf = (struct VM_SYSINFO_CPULOAD *)malloc(sizeof(struct VM_SYSINFO_CPULOAD)); if (dbuf != NULL) dbuf[0].cpudes = NULL; } if (dbuf == NULL) break; if (dbuf[0].ncpu == 0) break; if (dbuf[0].cpudes == NULL) { dbuf[0].ncpu = vm_sys_info_get_cpu_num(); dbuf[0].cpudes = (struct VM_SYSINFO_CPULOAD_ENTRY *)(malloc(sizeof(struct VM_SYSINFO_CPULOAD_ENTRY)*(dbuf[0].ncpu+1))); } if (dbuf[0].cpudes == NULL) break; /* if cpu description buffer was not NULL I hope it will be enough to hold all information about all the CPUs */ tmpq = dbuf[0].CpuLoadQuery; if ( tmpq == 0) {/* no more performance handle created yet */ PdhOpenQuery(NULL, 0, &tmpq); if (tmpq == 0) break; dbuf[0].CpuLoadQuery = tmpq; } if (dbuf[0].CpuPerfCounters[0] != 0) isprepared = TRUE; /* performance monitor already prepared */ if (dbuf[0].CpuLoadQuery == 0) break; if (!isprepared) { /* create buffers for counters */ rtval = VM_OK; for( i = 0; i < MAX_PERF_PARAMETERS; ++i ) { dbuf[0].CpuPerfCounters[i] = NULL; dbuf[0].CpuPerfCounters[i] = (PDH_HCOUNTER *)malloc((dbuf[0].ncpu+1/*for overall counter*/)*sizeof(PDH_HCOUNTER)); if (dbuf[0].CpuPerfCounters[i] == NULL) { rtval = VM_OPERATION_FAILED; break; } } if (rtval != VM_OK) { for( i = 0; i < MAX_PERF_PARAMETERS; ++i ) if (dbuf[0].CpuPerfCounters[i] != NULL) { free(dbuf[0].CpuPerfCounters[i]); dbuf[0].CpuPerfCounters[i] = NULL; } break; } /* add performance counters */ /* user time */ vm_string_strcpy(scountername, VM_STRING("\\Processor ")); for( i = 0; i < dbuf[0].ncpu; ++i ) { vm_string_sprintf(&scountername[10], VM_STRING("(%d)\\%% User Time"), i); cptr = dbuf[0].CpuPerfCounters[0] + i*sizeof(PDH_HCOUNTER); sts = PdhAddCounter(dbuf[0].CpuLoadQuery, scountername, 0, cptr); vm_string_sprintf(&scountername[10], VM_STRING("(%d)\\%% Privileged Time"), i); cptr = dbuf[0].CpuPerfCounters[1] + i*sizeof(PDH_HCOUNTER); sts = PdhAddCounter(dbuf[0].CpuLoadQuery, scountername, 0, cptr); vm_string_sprintf(&scountername[10], VM_STRING("(%d)\\%% Interrupt Time"), i); cptr = dbuf[0].CpuPerfCounters[2] + i*sizeof(PDH_HCOUNTER); sts = PdhAddCounter(dbuf[0].CpuLoadQuery, scountername, 0, cptr); } } vm_time_sleep(timeslice); if ((sts = PdhCollectQueryData(dbuf[0].CpuLoadQuery)) != ERROR_SUCCESS) break; /* fill in output data structure */ for(i = 0; i < dbuf[0].ncpu; ++i) { sts = PdhGetFormattedCounterValue(dbuf[0].CpuPerfCounters[0][i], PDH_FMT_LONG, &t, &v); dbuf[0].cpudes[i].usrload = AVGFLOAT(v.longValue); sts = PdhGetFormattedCounterValue(dbuf[0].CpuPerfCounters[1][i], PDH_FMT_LONG, &t, &v); dbuf[0].cpudes[i].sysload = AVGFLOAT(v.longValue); dbuf[0].cpudes[i].idleload = (float)1. - dbuf[0].cpudes[i].usrload - dbuf[0].cpudes[i].sysload; dbuf[0].cpudes[i].idleload = (dbuf[0].cpudes[i].idleload < 0) ? 0 : dbuf[0].cpudes[i].idleload; sts = PdhGetFormattedCounterValue(dbuf[0].CpuPerfCounters[2][i], PDH_FMT_LONG, &t, &v); dbuf[0].cpudes[i].irqsrvload = AVGFLOAT(v.longValue); /* clear other parameters for each processor */ dbuf[0].cpudes[i].iowaitsload = dbuf[0].cpudes[i].softirqsrvload = 0.; dbuf[0].cpudes[i].usrniceload = dbuf[0].cpudes[i].vmstalled = 0.; } rtval = VM_OK; } while (0); if ((NULL != dbuf) && (ticks_on_avg_call != 0)) dbuf[0].tickspassed = (vm_tick)((vm_time_get_tick() - ticks_on_avg_call)*1000/vm_time_get_frequency()); ticks_on_avg_call = vm_time_get_tick(); timeEndPeriod(ONEMILLISECOND); return rtval; }