@ -40,6 +40,7 @@ static const char *battery_power(const char *bat);
static const char * battery_state ( const char * bat ) ;
static const char * battery_state ( const char * bat ) ;
static const char * cpu_freq ( void ) ;
static const char * cpu_freq ( void ) ;
static const char * cpu_perc ( void ) ;
static const char * cpu_perc ( void ) ;
static const char * cpu_iowait ( void ) ;
static const char * datetime ( const char * fmt ) ;
static const char * datetime ( const char * fmt ) ;
static const char * disk_free ( const char * mnt ) ;
static const char * disk_free ( const char * mnt ) ;
static const char * disk_perc ( const char * mnt ) ;
static const char * disk_perc ( const char * mnt ) ;
@ -177,26 +178,47 @@ cpu_freq(void)
static const char *
static const char *
cpu_perc ( void )
cpu_perc ( void )
{
{
struct timespec delay ;
int perc ;
int perc ;
long double a [ 4 ] , b [ 4 ] ;
static long double a [ 7 ] ;
static int valid ;
long double b [ 7 ] ;
if ( pscanf ( " /proc/stat " , " %*s %Lf %Lf %Lf %Lf " , & a [ 0 ] , & a [ 1 ] , & a [ 2 ] ,
memcpy ( b , a , sizeof ( b ) ) ;
& a [ 3 ] ) ! = 4 ) {
if ( pscanf ( " /proc/stat " , " %*s %Lf %Lf %Lf %Lf %Lf %Lf %Lf " , & a [ 0 ] , & a [ 1 ] , & a [ 2 ] ,
& a [ 3 ] , & a [ 4 ] , & a [ 5 ] , & a [ 6 ] ) ! = 7 ) {
return unknown_str ;
return unknown_str ;
}
}
if ( ! valid ) {
valid = 1 ;
return unknown_str ;
}
perc = 100 * ( ( b [ 0 ] + b [ 1 ] + b [ 2 ] + b [ 5 ] + b [ 6 ] ) - ( a [ 0 ] + a [ 1 ] + a [ 2 ] + a [ 5 ] + a [ 6 ] ) ) /
( ( b [ 0 ] + b [ 1 ] + b [ 2 ] + b [ 3 ] + b [ 4 ] + b [ 5 ] + b [ 6 ] ) - ( a [ 0 ] + a [ 1 ] + a [ 2 ] + a [ 3 ] + a [ 4 ] + a [ 5 ] + a [ 6 ] ) ) ;
delay . tv_sec = ( interval / 2 ) / 1000 ;
return bprintf ( " %d " , perc ) ;
delay . tv_nsec = ( ( interval / 2 ) % 1000 ) * 1000000 ;
}
nanosleep ( & delay , NULL ) ;
if ( pscanf ( " /proc/stat " , " %*s %Lf %Lf %Lf %Lf " , & b [ 0 ] , & b [ 1 ] , & b [ 2 ] ,
static const char *
& b [ 3 ] ) ! = 4 ) {
cpu_iowait ( void )
{
int perc ;
static int valid ;
static long double a [ 7 ] ;
long double b [ 7 ] ;
memcpy ( b , a , sizeof ( b ) ) ;
if ( pscanf ( " /proc/stat " , " %*s %Lf %Lf %Lf %Lf %Lf %Lf %Lf " , & a [ 0 ] , & a [ 1 ] , & a [ 2 ] ,
& a [ 3 ] , & a [ 4 ] , & a [ 5 ] , & a [ 6 ] ) ! = 7 ) {
return unknown_str ;
}
if ( ! valid ) {
valid = 1 ;
return unknown_str ;
return unknown_str ;
}
}
perc = 100 * ( ( b [ 0 ] + b [ 1 ] + b [ 2 ] ) - ( a [ 0 ] + a [ 1 ] + a [ 2 ] ) ) /
perc = 100 * ( ( b [ 4 ] ) - ( a [ 4 ] ) ) /
( ( b [ 0 ] + b [ 1 ] + b [ 2 ] + b [ 3 ] ) - ( a [ 0 ] + a [ 1 ] + a [ 2 ] + a [ 3 ] ) ) ;
( ( b [ 0 ] + b [ 1 ] + b [ 2 ] + b [ 3 ] + b [ 4 ] + b [ 5 ] + b [ 6 ] ) - ( a [ 0 ] + a [ 1 ] + a [ 2 ] + a [ 3 ] + a [ 4 ] + a [ 5 ] + a [ 6 ] ) ) ;
return bprintf ( " %d " , perc ) ;
return bprintf ( " %d " , perc ) ;
}
}