0,0 → 1,96 |
//===================================================// |
// // |
// DATA // |
// // |
//===================================================// |
|
sensor cpu; |
sensor ram; |
|
//===================================================// |
// // |
// CODE // |
// // |
//===================================================// |
|
void DrawIconWithText(dword _x, _y, _icon, _title) |
{ |
DrawIcon16(_x, _y, sc.work, _icon); |
DrawBar(_x+ICONGAP, _y, WIN_CONTENT_W - ICONGAP - _x, 20, sc.work); |
WriteText(_x+ICONGAP, _y, 0x90, sc.work_text, _title); |
} |
|
void CPUnRAM__Main() |
{ |
dword cpu_frequency = GetCpuFrequency()/1000; |
SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON); |
goto _GENERAL_REDRAW_2; |
loop() |
{ |
WaitEventTimeout(25); |
switch(EAX & 0xFF) |
{ |
case evButton: Sysmon__ButtonEvent(); break; |
case evKey: Sysmon__KeyEvent(); break; |
case evReDraw: |
_GENERAL_REDRAW_2: |
Sysmon__DefineAndDrawWindow(); |
cpu.set_size(WIN_PAD, WIN_CONTENT_Y+25, WIN_CONTENT_W, 100); |
ram.set_size(WIN_PAD, WIN_CONTENT_Y+170, WIN_CONTENT_W, 23); |
default: |
MonitorCpu(); |
MonitorRam(); |
} |
} |
} |
|
dword GetCpuLoad(dword max_h) |
{ |
dword idle; |
dword CPU_SEC = GetCpuFrequency() >> 20 + 1; |
dword IDLE_SEC = GetCpuIdleCount() >> 20 * max_h; |
|
EAX = IDLE_SEC; |
EBX = CPU_SEC; |
$cdq |
$div ebx |
idle = EAX; |
|
return max_h - idle; |
} |
|
int pos=0; |
void MonitorCpu() |
{ |
static dword cpu_stack[1980*3]; |
int i; |
if (!cpu.w) return; |
|
cpu_stack[pos] = GetCpuLoad(cpu.h); |
if (cpu_stack[pos]<=2) || (cpu_stack[pos]>cpu.h) cpu_stack[pos]=2; |
|
sprintf(#param, "CPU load %i%%", cpu_stack[pos]); |
DrawIconWithText(WIN_PAD, cpu.y - 25, 48, #param); |
|
for (i=0; i<WIN_CONTENT_W; i+=2) { |
DrawBar(i+cpu.x, cpu.y, 1, cpu.h-cpu_stack[i], PROGRESS_BG); |
DrawBar(i+cpu.x, cpu.h-cpu_stack[i]+cpu.y, 1, cpu_stack[i], LOAD_CPU); |
|
DrawBar(i+1+cpu.x, cpu.y, 1, cpu.h, PROGRESS_BG); |
} |
|
pos++; |
if (pos>=WIN_CONTENT_W) { |
pos = WIN_CONTENT_W-1; |
for (i=0; i<pos; i++) { |
cpu_stack[i] = cpu_stack[i+1]; |
} |
} |
} |
|
void MonitorRam() |
{ |
ram.draw_progress(GetFreeRAM()*ram.w/GetTotalRAM()); |
sprintf(#param, "RAM usage: %i Mb free of %i Mb", GetFreeRAM()/1024, GetTotalRAM()/1024); |
DrawIconWithText(WIN_PAD, ram.y - 25, 51, #param); |
} |