unpack zips in src to better compression
This commit is contained in:
151
sources/z-tools/trunk/ztask/cpu.c
Normal file
151
sources/z-tools/trunk/ztask/cpu.c
Normal file
@@ -0,0 +1,151 @@
|
||||
#include "general.h"
|
||||
|
||||
char buf[2048];
|
||||
|
||||
extern uint32 total_stram;
|
||||
extern uint32 total_ttram;
|
||||
|
||||
|
||||
|
||||
/* returns current cpu usage in percent */
|
||||
inline int16 cpu_get_usage( void)
|
||||
{
|
||||
static int32 pre_used = 0, pre_total = 0;
|
||||
int16 usage = 0;
|
||||
int32 mcpu, mnice, msystem, midle, used = 0, total = 0;
|
||||
FILE *fp;
|
||||
|
||||
if ( !( fp = fopen("U:/kern/stat", "r")))
|
||||
return usage;
|
||||
|
||||
fread( buf, 1, 2048, fp);
|
||||
|
||||
fclose(fp);
|
||||
|
||||
sscanf( buf, "%*s %ld %ld %ld %ld", &mcpu, &mnice, &msystem, &midle);
|
||||
|
||||
used = mcpu + msystem + mnice;
|
||||
total = used + midle;
|
||||
|
||||
/* calc CPU usage */
|
||||
if( total - pre_total > 0)
|
||||
usage = ( int16)(( 20 * ( double)( used - pre_used)) / ( double)( total - pre_total));
|
||||
|
||||
if( usage < 0)
|
||||
usage = 0;
|
||||
|
||||
pre_used = used;
|
||||
pre_total = total;
|
||||
|
||||
return usage;
|
||||
}
|
||||
|
||||
|
||||
void get_total_ram( void)
|
||||
{
|
||||
size_t bytes_read;
|
||||
char *match;
|
||||
FILE *fp;
|
||||
|
||||
total_stram = 0;
|
||||
total_ttram = 0;
|
||||
|
||||
if ( !( fp = fopen("U:/kern/meminfo", "r")))
|
||||
return;
|
||||
|
||||
bytes_read = fread( buf, 1, 2048, fp);
|
||||
|
||||
fclose(fp);
|
||||
|
||||
if( bytes_read == 0)
|
||||
return;
|
||||
|
||||
match = strstr( buf, "FastTotal");
|
||||
|
||||
if( match == NULL)
|
||||
return;
|
||||
|
||||
sscanf( match, "FastTotal: %ld", &total_ttram);
|
||||
|
||||
match = strstr( buf, "CoreTotal");
|
||||
|
||||
if( match == NULL)
|
||||
return;
|
||||
|
||||
sscanf( match, "CoreTotal: %ld", &total_stram);
|
||||
}
|
||||
|
||||
|
||||
inline void get_free_ram( uint32 *st_ram, uint32 *tt_ram)
|
||||
{
|
||||
size_t bytes_read;
|
||||
uint32 free_ram;
|
||||
char *match;
|
||||
FILE *fp;
|
||||
|
||||
*tt_ram = 0;
|
||||
*st_ram = 0;
|
||||
|
||||
if ( !( fp = fopen("U:/kern/meminfo", "r")))
|
||||
return;
|
||||
|
||||
bytes_read = fread( buf, 1, 2048, fp);
|
||||
|
||||
fclose(fp);
|
||||
|
||||
if( bytes_read == 0)
|
||||
return;
|
||||
|
||||
match = strstr( buf, "FastFree");
|
||||
|
||||
if( match == NULL)
|
||||
return;
|
||||
|
||||
sscanf( match, "FastFree: %lu", &free_ram);
|
||||
|
||||
*tt_ram = free_ram;
|
||||
|
||||
match = strstr( buf, "CoreFree");
|
||||
|
||||
if( match == NULL)
|
||||
return;
|
||||
|
||||
sscanf( match, "CoreFree: %lu", &free_ram);
|
||||
|
||||
*st_ram = free_ram;
|
||||
}
|
||||
|
||||
|
||||
|
||||
inline void get_info_by_pid( int pid, char *name, char *ram_usage, uint32 *cpu_time)
|
||||
{
|
||||
size_t bytes_read;
|
||||
char *s, *t;
|
||||
uint32 user_time, system_time;
|
||||
int32 ram;
|
||||
|
||||
FILE *fp;
|
||||
|
||||
sprintf( buf, "U:/kern/%d/stat", pid);
|
||||
|
||||
if ( !( fp = fopen( buf, "r")))
|
||||
return;
|
||||
|
||||
bytes_read = fread( buf, 1, 2048, fp);
|
||||
|
||||
fclose(fp);
|
||||
|
||||
if( bytes_read == 0)
|
||||
return;
|
||||
|
||||
s = strchr ( buf, '(') + 1;
|
||||
t = strchr ( buf, ')');
|
||||
strncpy( name, s, t - s);
|
||||
name[t - s] = '\0';
|
||||
|
||||
sscanf( t + 2, "%*c %*d %*d %*d %*d %*d %*u %*u %*u %*u %lu %lu %*d %*d %*d %*d %*u %*d %*u %*u %ld", &user_time, &system_time, &ram);
|
||||
|
||||
sprintf( ram_usage, "%ld kB", ram >> 10);
|
||||
|
||||
*cpu_time = user_time + system_time;
|
||||
}
|
||||
Reference in New Issue
Block a user