0,0 → 1,72 |
|
void Drives__Main() |
{ |
SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON); |
goto _GENERAL_REDRAW_1; |
loop() |
{ |
WaitEventTimeout(500); |
switch(EAX & 0xFF) |
{ |
case evButton: Sysmon__ButtonEvent(); break; |
case evKey: Sysmon__KeyEvent(); break; |
case evReDraw: |
_GENERAL_REDRAW_1: |
Sysmon__DefineAndDrawWindow(); |
WriteText(WIN_PAD, WIN_CONTENT_Y+25, 0x90, sc.work, "Update period: 5 seconds"); |
default: |
MonitorRd(); |
MonitorTmp(); |
} |
} |
} |
|
void MonitorRd() |
{ |
sensor rd; |
dword rdempty = malloc(1440*1024); |
rd.set_size(WIN_PAD, WIN_CONTENT_Y+25, WIN_CONTENT_W, 23); |
CreateFile(0, 1440*1024, rdempty, "/rd/1/rdempty"); |
free(rdempty); |
file_size stdcall ("/rd/1/rdempty"); |
rdempty = EBX / 1024; |
DeleteFile("/rd/1/rdempty"); |
|
sprintf(#param, "System disk usage: %i Kb free of 1440 Mb", rdempty); |
DrawIconWithText(WIN_PAD, rd.y - 25, 5, #param); |
|
rd.draw_progress(rdempty * rd.w / 1440); |
} |
|
dword GetTmpDiskFreeSpace(int _id) |
{ |
DIR_SIZE dir_size; |
sprintf(#param, "/tmp%i/1", _id); |
dir_size.get(#param); |
dir_size.bytes += dir_size.files/2 + 32 * 512; //file attr size + FAT table size |
dir_size.bytes /= 1024*1024; //convert to MiB |
return dir_size.bytes; |
} |
|
void MonitorTmp() |
{ |
char text_status[64]; |
int i, yy=WIN_CONTENT_Y+95; |
dword tmp_size[10]; |
dword free_space; |
sensor tmp; |
for (i=0; i<=9; i++) |
{ |
file_size stdcall ( sprintf(#param, "/tmp%i/1", i) ); |
tmp_size[i] = EBX / 1024 / 1024; |
|
if (EBX) { |
free_space = tmp_size[i] - GetTmpDiskFreeSpace(i); |
sprintf(#text_status, "TMP%i usage: %i Mb free of %i Mb", i, free_space, tmp_size[i]); |
tmp.set_size(WIN_PAD, yy, WIN_CONTENT_W, 23); |
tmp.draw_progress(free_space * WIN_CONTENT_W / tmp_size[i]); |
DrawIconWithText(WIN_PAD, tmp.y - 25, 50, #text_status); |
yy += 65; |
} |
} |
} |