2012-01-07 10 views
-1

いくつかのunixコードに関する質問?

#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

Unixのバージョンとフレーバーは? –

+0

Mac OSX Snow Leopard – fdh

答えて

0

"ALLこれらの答え" が含まれているサイトがhttp://www.opensource.apple.com/source/xnu/xnu-1699.24.8/です。また、Mac OS X Internals(Amit Singh著)の本が役に立つかもしれません。

+0

私はすでにこれらの両方のソースをチェックアウトしましたが、実際にコードを理解していませんでした。私は単なるソースコードではなく、説明を求めていました。 – fdh

関連する問題