2012-01-07 2 views
-1

유닉스 코드에 관한 질문?

#include <mach/mach_init.h> 
#include <mach/mach_error.h> 
#include <mach/mach_host.h> 
#include <mach/vm_map.h> 

static unsigned long long _previousTotalTicks = 0; 
static unsigned long long _previousIdleTicks = 0; 

// Returns 1.0f for "CPU fully pinned", 0.0f for "CPU idle", or somewhere in between 
// You'll need to call this at regular intervals, since it measures the load between 
// the previous call and the current one. 
float GetCPULoad() 
{ 
    host_cpu_load_info_data_t cpuinfo; 
    mach_msg_type_number_t count = HOST_CPU_LOAD_INFO_COUNT; 
    if (host_statistics(mach_host_self(), HOST_CPU_LOAD_INFO, (host_info_t)&cpuinfo, &count) == KERN_SUCCESS) 
    { 
     unsigned long long totalTicks = 0; 
     for(int i=0; i<CPU_STATE_MAX; i++) totalTicks += cpuinfo.cpu_ticks[i]; 
     sysLoadPercentage = CalculateCPULoad(cpuinfo.cpu_ticks[CPU_STATE_IDLE], totalTicks); 
    } 
    else return -1.0f; 
} 

float CalculateCPULoad(unsigned long long idleTicks, unsigned long long totalTicks) 
{ 
    unsigned long long totalTicksSinceLastTime = totalTicks-_previousTotalTicks; 
    unsigned long long idleTicksSinceLastTime = idleTicks-_previousIdleTicks; 
    float ret = 1.0f-((totalTicksSinceLastTime > 0) ? ((float)idleTicksSinceLastTime)/totalTicksSinceLastTime : 0); 
    _previousTotalTicks = totalTicks; 
    _previousIdleTicks = idleTicks; 
    return ret; 
} 
나는 당신이 좀 도와줬으면 된 코드에 대한 몇 가지 질문이 있습니다

  • 는 "host_cpu_load_info_data_t"구조는 무엇입니까? 그것은 무엇을 위해 사용됩니까?
  • "mach_msg_type_number_t"구조 란 무엇입니까? 그것은 무엇을 위해 사용됩니까?
  • 전 처리기 정의 "HOST_CPU_LOAD_INFO_COUNT"및 그 사용은 무엇입니까?
  • host_statistics 함수 란 무엇입니까?
  • host_statistics 함수에 대해 위에 나열된 각 인수는 무엇을 의미합니까? (전에 본적이 없습니다)
  • 전처리 기 CPU_STATE_MAX 및 CPU_STATE_IDLE 정의는 무엇입니까?
  • 프리 프로세서 정의 KERN_SUCCESS 란 무엇입니까?

답변 할 수 없으면 이러한 답변이 모두 포함 된 사이트를 참조하십시오. 이미 인터넷 검색을 시도했지만 답변을 찾지 못하거나 문서를 찾을 수 없습니다. 또한 질문이 너무 구체적이라면 질문을 삭제할 것입니다.이 질문이 유효한 곳에서 소스를 제안하십시오.

감사

+0

유닉스의 어떤 버전? –

+0

Mac OSX Snow Leopard – fdh

답변

0

"ALL이 답변을"포함 http://www.opensource.apple.com/source/xnu/xnu-1699.24.8/입니다 사이트. 또한 Mac OS X 내부 정보 (Amit Singh 제공)이 유용 할 것입니다.

+0

나는이 두 소스를 이미 체크 아웃했지만 코드를 실제로 이해하지 못했습니다. 나는 단지 소스 코드보다는 설명을 원했다. – fdh