/programs/system/shell/cmd/cmd_ps.c |
---|
2,7 → 2,7 |
int cmd_ps(char param[]) |
{ |
int i, n; |
int i, n, sel; |
char *buf1k; |
unsigned PID; |
short STATE; |
11,6 → 11,8 |
if (NULL == buf1k) |
return FALSE; |
sel = param && strlen(param) > 0; |
for (i = 1;;i++) |
{ |
n = kol_process_info(i, buf1k); |
17,7 → 19,18 |
PID = *(buf1k+30); |
STATE = *(buf1k+50); |
if ( 9 != STATE) |
{ |
if (!sel || 0 == strnicmp(param, buf1k+10, 10)) |
{ |
printf (" %7d %s\n\r", PID, buf1k+10); |
if (sel) |
{ |
LAST_PID = PID; |
int cpu_tck = kol_system_cpufreq() / 100; |
printf (" CPU %d%% RAM %d\n\r", *(int*)buf1k / cpu_tck , *(int*)(buf1k+26)+1); |
} |
} |
} |
if (i == n) |
break; |
} |
/programs/system/shell/cmd/cmd_waitfor.c |
---|
0,0 → 1,52 |
int cmd_waitfor(char param[]) |
// waits for LASTPID or pid in param |
{ |
int i, n, sel, sel_pid; |
char *buf1k; |
unsigned PID; |
short STATE; |
sel = param && strlen(param) > 0; |
sel_pid = LAST_PID; |
if (sel) |
{ |
sel_pid = _atoi(param); |
} |
if (0 == sel_pid) |
return FALSE; |
#if LANG_ENG |
printf(" Awaing finish PID %d\n\r", sel_pid); |
#elif LANG_RUS |
printf(" ¦¨¤ ¥¬ § ¢¥à襨ï PID %d\n\r", sel_pid); |
#endif |
buf1k = malloc(1024); |
if (NULL == buf1k) |
return FALSE; |
while(1) |
{ |
for (i = 1;;i++) |
{ |
n = kol_process_info(i, buf1k); |
PID = *(buf1k+30); |
STATE = *(buf1k+50); |
if (PID == sel_pid) |
if(9 == STATE) |
goto exit_normal; |
else break; |
if (i == n) |
goto exit_normal; |
} |
kol_sleep(10); // 100ms |
} |
exit_normal: |
free(buf1k); |
return TRUE; |
} |